Skip to content
← All case studies

Globant · Public web platform · 2025

Sonesta International Hotels

Cut a blocking consent step from 8 seconds to 1 on a hotel group's public web platform.

GatsbyReactTypeScriptReduxSCSSJira
−87%cookie-consent interaction time (8s → 1s)
Visit the live site ↗

Context

Sonesta's public web platform serves hotel pages across several brands. A third-party consent script initialized on the client and blocked the first interaction: visitors waited roughly eight seconds before the cookie banner became usable, and the delay showed up in support tickets and analytics drop-off.

I joined the Public Web team through Globant as a Web UI Developer on the New Generation track, working inside a sprint cadence with the client's design and engineering leads.

Sonesta public website homepage on desktop
Sonesta International Hotels

My role

Web UI Developer on the Public Web team, via Globant.

  • Owned the consent-flow fix end to end, from root cause to server-side implementation.
  • Shipped accessibility fixes and a production hotfix on a US enterprise codebase.
  • Built a typed, documented info-icon component adopted across the public site.

Decisions

01

Move consent initialization to the server

Constraint
The consent script initialized client-side and blocked the first interaction for ~8s. Lazy loading it only moved the delay.
Options
  • Defer the script further on the client
  • Swap the consent vendor
  • Initialize the consent state during Gatsby SSR
Choice
Initialize the consent state during SSR and hydrate the banner without a client-side init step.
Why
It removes the script from the critical path instead of reordering it. Consent interaction time dropped from ~8s to ~1s (−87%) without changing vendors or losing compliance behavior.
02

One typed component instead of copy-pasted markup

Constraint
Tooltips, info icons and buttons were duplicated across pages. Behavior and accessibility drifted between copies.
Options
  • Keep copy-pasting and document the pattern
  • Adopt a third-party UI kit
  • Build a small typed primitive in TypeScript
Choice
Build a typed InfoIcon component with strict props, documented usage and centralized tooltip and button behavior.
Why
A third-party kit would have imported a design language the team did not own. The primitive centralized the UI element and made the next pages cheaper to build correctly.
03

Root cause, not symptom, under production pressure

Constraint
A critical accessibility bug reached production. The fastest path was to patch the visible symptom.
Options
  • Patch the reported element
  • Run a full accessibility audit first
  • Trace the root cause with AI-assisted analysis
Choice
Trace the root cause with AI-accelerated analysis, then ship the targeted fix.
Why
The hotfix closed the reported issue without creating sibling bugs in the same component. A full audit would have been correct but too slow for a live incident.

Outcome

The consent fix shipped to production on a shared enterprise codebase and held. The typed component became the reference implementation for similar UI elements on the public site.

−87%
consent interaction time (8s → 1s)
1
production hotfix shipped
1
shared typed component adopted

Lessons

  • The largest performance win was not a rewrite. It was moving one blocking initialization to the server.
  • Accessibility bugs in production are rarely isolated; tracing the shared cause is faster than patching every report.