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.
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.

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
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.
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.
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.