Speed isn't vanity, it's revenue
Every 100 milliseconds of mobile latency costs around 1 percent of conversion on commerce sites. We have measured it on enough stores now to know: the line between a "fine" Shopify storefront and a fast one is roughly 4 to 9 percent of GMV.
In 2026, with Google having fully replaced FID with INP and mobile users now driving 75 to 82 percent of e-commerce sessions, Core Web Vitals stopped being an SEO checkbox. It is a P&L item.
This is the checklist we run when a Shopify store comes in slow.
The metrics that matter (and the new INP)
The big three:
- LCP — Largest Contentful Paint. Mobile target under 2.5 seconds, ideally under 1.8.
- INP — Interaction to Next Paint. Mobile target under 200 milliseconds, ideally under 100.
- CLS — Cumulative Layout Shift. Under 0.1.
INP is the one most stores still fail. It measures how snappy your store feels when someone taps. Heavy third-party scripts and over-eager JavaScript hurt INP more than LCP, and most stores have not fully diagnosed it yet.
Theme-level wins (no headless required)
Before anyone says the words "go headless," fix these.
- Lazy-load every image below the fold and remove autoplay video on mobile.
- Use Shopify's responsive image sizes properly. Stop serving 2400-pixel hero images to phones.
- Preload one and only one hero image, not five.
- Use system fonts or a single self-hosted woff2 with font-display: swap. Never two web fonts above the fold.
- Defer or async every non-critical script in theme.liquid.
- Inline critical CSS for the homepage and PDP, scope the rest.
- Rip out unused theme sections and dead Liquid.
A skilled theme audit alone usually adds 15 to 35 Lighthouse points without touching apps.
Image and video discipline
Images are still the largest payload on most Shopify stores.
- Standardize on WebP or AVIF in the theme, not just on the CDN.
- Cap product imagery at 1600 pixels on the long edge.
- Compress hero imagery hand-tuned, not auto.
- Replace looping video backgrounds with a poster plus click-to-play.
- Use srcset and sizes on every img, including app-injected ones.
For stores with heavy video PDPs, a static poster up to LCP plus a delayed video swap is usually enough to keep both the metric and the brand intent.
Apps: the silent killer
The single most common cause of a slow Shopify store is the app pile.
A typical $5M store has 23 to 40 apps installed. Each one bolts a script onto the storefront. Many are still loading even when their feature is not on the page.
The audit:
- List every app and the script it injects.
- For each, decide: critical above the fold, critical below the fold, or lifecycle-only.
- Move all non-critical scripts to defer or async.
- Conditionally load page-specific apps — review widgets only on PDPs, search apps only when search is opened.
- Uninstall every app you do not actively use, and remove its leftover script tags.
- Replace 2 to 3 apps with a single Shopify Function or theme block where possible.
We have yet to audit a store where this did not recover at least 20 points of Lighthouse and a meaningful slice of LCP and INP.
Fonts, scripts and the third-party tax
Each third-party domain is a DNS, TLS and TCP cost.
- Self-host fonts. Never let a single page hit fonts.googleapis.com on a commerce store.
- Self-host or proxy analytics where possible.
- Consolidate tag manager tags. A 200 KB GTM blob is not free.
- Move pixels server-side. Meta CAPI and TikTok S2S are not optional in 2026.
- Defer chat widgets until first user intent. Never on initial load.
When to consider Hydrogen or Next.js
If you have done all of the above and are still hitting a ceiling around LCP 2.0 to 2.4 seconds on mobile, you are hitting the platform's frontend ceiling. That is the moment headless makes sense.
A well-built Hydrogen or Next.js storefront on Shopify routinely hits LCP 0.9 to 1.4 seconds on mobile in the field — not in a lab — at 75 to 95 millisecond INP. The ROI is real but only after the theme-level wins have been earned.
Tools we use
- PageSpeed Insights and CrUX for field data, not just lab.
- Web Vitals Chrome extension for INP debugging on real interactions.
- Shopify's Online Store Speed report as a baseline, never as a final answer.
- WebPageTest for waterfall and TTFB diagnosis.
- Sentry or Datadog RUM for ongoing INP monitoring at the user level.
A 7-day improvement sprint
If you give us a week:
- Day 1: full audit, prioritized list, PageSpeed and CrUX baseline.
- Day 2: image and font cleanup, hero rework.
- Day 3: app audit and removals.
- Day 4: critical CSS and script defer pass.
- Day 5: structured data and JS bundle trim.
- Day 6: INP-specific tuning on PDP and PLP.
- Day 7: re-measure on field data, write a runbook your team can keep.
That is the realistic ceiling on a stock Shopify theme without going headless. For most stores, it is enough to clear the Vitals threshold and unlock a measurable conversion lift before any other CRO work.
Speed is the cheapest growth lever in commerce. Pull it first.



