Performance

The 12-point Shopify speed checklist that gets you under 2.5s LCP

Every extra second of mobile load time drops conversion by ~7%. Run through these 12 checks and you'll be in the green on Core Web Vitals within 10–15 business days.

Every additional second of mobile load time drops conversion by roughly 7%. Google uses Core Web Vitals as a confirmed ranking signal. And yet most Shopify stores still load in 4–6 seconds on mobile. The good news: getting under 2.5s LCP isn't magic. It's a 12-point checklist most stores can complete in 10–15 business days.

Here it is, in priority order.

1. Convert hero images to WebP/AVIF with responsive srcset

Your homepage hero is usually the LCP element. A 600KB JPEG can drop to 80KB WebP with no visible quality loss. Implement srcset so mobile fetches a 768px version instead of the desktop original. This alone often cuts LCP by 30–40%.

2. Preload your critical hero image and font

Add <link rel="preload" as="image" href="hero.webp"> in your theme.liquid for the homepage hero. Same for your main font. Browsers will start fetching these immediately, before parsing the rest of the HTML.

3. Use font-display: swap and subset your fonts

Most themes load 5+ weights of a Google Font. You probably use 2. Subset your font files to only the weights and characters you actually need. Add font-display: swap so text renders immediately with a fallback while the custom font loads.

4. Defer non-critical JavaScript

Add defer or async to every script that isn't critical for first paint. Most theme bundles include scripts for slideshows, popups, and animations that don't need to run before the page renders.

5. Audit every third-party app

Each Shopify app you install can inject JavaScript via the theme.liquid app embed. Some apps add 100KB+ of synchronous JS. Use the Coverage tab in Chrome DevTools to see how much of each script is actually used. Defer or remove the ones that aren't paying their way in revenue.

If an app injects 200KB of JS for a feature you use on 0.1% of pages, defer it or remove it. There's no middle ground.

6. Move review widgets below the fold

Yotpo, Stamped, and Judge.me widgets often appear above the fold and block LCP. Move the widget rendering to a lazy-load trigger that fires only when the user scrolls past 50% of the page. Reviews are important, but they don't need to render in the first 2 seconds.

7. Reserve space for layout-shifting elements

CLS (Cumulative Layout Shift) under 0.1 is the goal. The usual culprits: lazy-loaded images without dimensions, late-loading social proof bars, web fonts that swap and resize text. Add explicit width/height to every image, reserve space for banners, and tune your font fallback metrics so text doesn't shift when the custom font loads.

8. Inline critical CSS

The CSS needed for above-the-fold rendering should be inlined in the <head>. The rest can load asynchronously. This eliminates one render-blocking round trip and typically improves LCP by 200–400ms.

9. Remove unused Liquid loops

Custom themes often have Liquid sections that loop through every product on the homepage even when only 12 are visible. Audit your homepage sections.json and remove unused logic.

10. Use native lazy-loading for below-the-fold images

Add loading="lazy" to every image that's not in the first viewport. Browsers handle this natively now, no JavaScript library needed. This cuts initial page weight by 50% or more on collection and product pages.

11. Trim unused JavaScript bundles

Use Chrome DevTools Coverage tab to identify code you ship but don't use. Most theme bundles ship 200–400KB of JS where only 80–120KB is used on any given page. Tree-shake or code-split.

12. Benchmark on real mobile devices

Lighthouse on a Macbook lies. Run WebPageTest on a real mid-range Android (Moto G Power, Pixel 6a) over a throttled 4G connection. That's where your customers actually shop. Lighthouse scores of 90+ on desktop can mean 40–50 on real mobile.

Pre-launch scorecard

Before any speed work, capture these baseline numbers from PageSpeed Insights mobile:

  • LCP (target <2.5s)
  • CLS (target <0.1)
  • INP (target <200ms)
  • FCP (target <1.8s)
  • Total page weight (target <1MB)
  • JavaScript weight (target <200KB)

After completing the 12-point checklist, re-run and compare. Most stores see all six metrics move into the green within 10–15 business days.

Need help executing?

We run this checklist for Shopify brands every week. Most projects deliver visible Core Web Vitals improvements within 10–15 business days. Send us your URL. We'll send back a free Loom walking through the top 5 opportunities specific to your store.

Comments (0)

No comments yet. Be the first to weigh in.

Leave a comment

Ready to start?

Let's build something your customers actually want to use.

Tell us about your project. We'll respond within 24 hours with a written proposal and fixed-fee quote.

Book a 30-min Call
★★★★★ 4.8 on Clutch · 5.0 on GoodFirms