Skip to main content
Web & Performance

Case study: cutting retail LCP to 1.2s and lifting mobile conversion 11%

A mid-market retailer with a 3.4 second mobile LCP. Six weeks, no redesign, no re-platform — and a conversion result the finance team could sign off.

2 min readBy Tom Whitfield
Laptop on a table displaying a dashboard of charts and metrics
Cover image for Case study: cutting retail LCP to 1.2s and lifting mobile conversion 11%

Key takeaways

  • Third-party scripts accounted for more than half of the original blocking time.
  • No redesign and no platform change were required to reach a 1.2 second LCP.
  • Mobile conversion rose 11% and revenue per session 8.4% over the following quarter.

What did the engagement change?

Mobile Largest Contentful Paint fell from 3.4s to 1.2s at the 75th percentile across product and category templates. Mobile conversion rose 11% and revenue per session 8.4% in the quarter after rollout, with no redesign and no platform migration.

3.4s
LCP before
1.2s
LCP after
+11%
Mobile conversion
+8.4%
Revenue per session

Where the time was actually going

The team expected the answer to be images. It was tags. Eleven third-party scripts loaded on every page, four of them blocking render, and two of those belonged to tools nobody in the room could name an owner for.

Removing the unowned tags and deferring the rest accounted for roughly 1.3 seconds before a single line of application code changed.

What each change contributed

ChangeLCP savedEffort
Removed unowned third-party tags0.8s2 days
Deferred remaining tags off critical path0.5s3 days
Responsive images and modern formats0.6s4 days
Static rendering for category templates0.4s5 days
Font loading and preconnect fixes0.2s1 day

How the result was proven

Rollout was staged by template. Product pages shipped first, category pages a fortnight later, and field data was segmented by cohort throughout so the comparison was against untouched templates in the same weeks rather than against a different season.

That staging is why the conversion number survived the finance review. It was not a year-on-year comparison with a performance story attached.

Half the work was removal, not optimisation. The fastest thing a page can do with a script is not request it.

Keeping the gain after the engagement ended

Performance work regresses by default, because every new tag and every new hero component costs milliseconds that nobody is accountable for. Six weeks of gains can disappear in one quarter of ordinary feature delivery.

Three things kept it. A performance budget enforced in the build, so a pull request that pushes the bundle past its ceiling fails rather than being noticed later. A tag governance rule requiring a named owner and a review date before any third-party script is added. And field data on the same dashboard as conversion, reviewed monthly by the trading team rather than by engineering alone.

Twelve months later the site was still under 1.5 seconds at the 75th percentile, having shipped two major feature releases in between. The budget is what did that, not the original optimisation work.

FAQFAQ

Frequently asked questions

About the author

TW

Staff Frontend Engineer

Core Web Vitals and accessibility specialist

Tom builds the front end: rendering strategy, performance budgets and accessible interfaces that hold up under real network conditions. He writes about treating Core Web Vitals as a revenue metric rather than a lint rule.

  • Core Web Vitals
  • Next.js and React
  • Web accessibility
  • Frontend architecture
All articles by Tom

Read next

More on the same problem, from the same team.

Want this built, not just read about?

Tell us the outcome you need. We reply within one business day with a plan, a timeline and a price.

ExploreKeep exploring

Related pages

Guides

Subscribe Newsletter

Practical playbooks on AI, product engineering, growth marketing and creator campaigns. One email a month, no filler.