The challenge
A home goods retailer was running a heavily customised Shopify theme that had accumulated fourteen apps, each injecting scripts. Mobile LCP sat at 4.6 seconds and mobile conversion was roughly a third of desktop despite mobile carrying 71% of traffic.
Separately, inventory was synced to Shopify from their ERP on a thirty-minute schedule, which during promotional periods reliably produced overselling on fast-moving lines — and the cancellation emails that followed were doing measurable damage to repeat purchase rates.
What we did
- 01
Audited what the apps were actually costing
Measuring each app's script weight and its attributable revenue contribution led to nine being removed outright and three replaced with lightweight native implementations.
- 02
Headless storefront, Shopify commerce engine
A server-rendered Next.js storefront against Shopify's Storefront API — keeping Shopify's operational strengths for orders, payments and admin while removing the theme performance ceiling.
- 03
Event-driven inventory sync
Replaced the thirty-minute batch with change-data-capture from the ERP, plus reserved-stock buffers on high-velocity lines during promotions.
- 04
Rebuilt search and faceting
Algolia-backed search with synonym and typo handling, and faceting restructured around how customers actually shop rather than around the internal category tree.
- 05
Peak rehearsal in September
Load tested against a realistic Black Friday traffic profile, with caching, queueing and graceful degradation paths proven eight weeks before the event.
The outcome
Mobile LCP fell from 4.6s to 1.3s and all Core Web Vitals moved into the green. Mobile conversion rose 44% over the following quarter, closing most of the gap with desktop.
Peak season ran without a single overselling incident or performance degradation, against a traffic peak roughly 30% above the previous year. The complete 301 redirect map preserved organic traffic through the migration, with organic sessions up 12% year on year in the month after launch.