All posts
Shopify Store Development

Improving Shopify Core Web Vitals (Without Ripping Out Your Theme)

You almost never need a re-theme to pass Core Web Vitals. On hosted Shopify the server is already fast — stores fail because of what gets piled on top: apps, scripts, oversized images, and layout shift. All fixable in place. Here's the incremental playbook, metric by metric, plus why your admin Speed Score isn't the number Google ranks on.

AD Digitech Engineering · Shopify Store TeamJuly 27, 20268 min read
Infographic on improving Shopify Core Web Vitals without changing your theme — a mock storefront ringed by performance gauges all reading Good: LCP 2.1s (Largest Contentful Paint), INP 120ms (Interaction to Next Paint), CLS 0.04 (Cumulative Layout Shift), and Speed Index 1.3s — above four fix categories: No Re-theme (fix CWV without changing themes), Clean Scripts (remove unnecessary apps and scripts), Optimized Images (right size, format, and lazy load), and Stable Layout (prevent CLS with reserved space).

The short version: you almost never need to rebuild your theme to pass Core Web Vitals. On hosted Shopify, the server, CDN, and time-to-first-byte are Shopify's job — and already fast. Stores fail because of what gets piled on top: apps, scripts, oversized images, and layout shift. Every one of those is fixable in place. Here's the incremental playbook.

We build and optimise Shopify stores, so this is the order we actually work in — not "start over," but "find what's dragging and fix it."

First, the reframe: you probably don't need a new theme

The instinct when Search Console flags Core Web Vitals is to assume the theme is rotten and needs replacing. It usually isn't, and it usually doesn't.

Here's why. Shopify is fully hosted — its servers and CDN deliver a consistently low time-to-first-byte globally, and you can't touch that layer even if you wanted to. So the part of performance that lives on the server is already handled and out of your hands. Where Shopify stores actually fail Core Web Vitals is the layer you do control: the apps, third-party scripts, custom theme edits, oversized images, and font loading stacked on top of the base theme.

That's good news. It means the fixes are targeted and incremental — remove this app, preload that image, add a width to this element — not "burn it down and start again." A re-theme is a rebuild, not a swap (which is exactly why a Horizon migration is a bigger project than it looks), and you rarely need to take that on just to pass CWV.

Ignore the admin Speed Score — measure what Google actually ranks on

Before you change anything, look at the right number. This trips up almost everyone.

Your Shopify admin has an Online Store Speed score. It's a Lighthouse lab measurement — one simulated visit, on a simulated device and network. It is not your Core Web Vitals, and Google does not use it for ranking.

What Google ranks on is field data: real Chrome users, aggregated in the CrUX dataset over a rolling 28-day window, reported at the 75th percentile. You see it in Google Search Console (Core Web Vitals report) and PageSpeed Insights (the "field data" panel at the top).

The two can diverge sharply — and the gap is the whole point:

  • A store can score a mediocre 42 in the lab yet pass Core Web Vitals in the field, and Google won't penalise it.
  • A store can score a healthy 78 in the lab yet fail INP in the field — and get dinged.

So the rule is simple: optimise for field data, verify in lab tools. Chasing the admin Speed Score up and down is optimising the wrong number.

The three metrics — and what actually moves each

Core Web Vitals is three measurements, each with a different cause and a different fix:

MetricWhat it measuresPass (75th pct, mobile)
LCP — Largest Contentful PaintHow fast the main content (usually the hero image) renders≤ 2.5s
INP — Interaction to Next PaintHow responsive the page feels when tapped/clicked≤ 200ms
CLS — Cumulative Layout ShiftHow much the layout jumps around while loading≤ 0.1

(INP replaced FID as the responsiveness metric in March 2024 — if you're working from an older checklist that says "First Input Delay," it's out of date.)

Almost every failing Shopify store fails one or two of these for a specific, findable reason. Take them one at a time.

Fixing LCP — it's almost always the hero image

LCP is the big one for stores, and the culprit is nearly always the largest above-the-fold image — your hero or first product shot. The highest-impact fixes, in order:

  1. Don't lazy-load the LCP image. Dawn and other OS 2.0 themes lazy-load images by default — which is right for everything except the one image that defines your LCP. Lazy-loading your hero actively makes LCP worse. Exclude it.
  2. Preload it. Add a preload hint so the browser starts downloading the hero immediately instead of discovering it late.
  3. Right-size and compress it. Serve it at the dimensions it actually displays, in a modern format, compressed. An uncompressed 3000px hero on a phone is the single most common LCP killer.
  4. Inline critical CSS and preload fonts with display: swap. So text and layout paint without waiting on render-blocking resources.

Get the hero right and LCP usually falls into range on its own.

Fixing INP — this is where app bloat lives

If LCP is about images, INP is about JavaScript — and on Shopify, JavaScript overwhelmingly means apps. App bloat is widely cited as the single biggest speed killer on Shopify, and INP is where it shows up: every app that injects script adds work the browser must do before it can respond to a tap.

The fixes, in order of leverage:

  1. Audit and remove unused apps. This is the highest-return action on most stores, full stop. Apps get installed for a trial or a season and never removed, but their scripts often keep loading. One commonly reported audit moved a store's mobile score from 20 to 38 on app removal alone — before a single image was touched. Go through every installed app and ask "is this earning its place?"
  2. Check that uninstalled apps left nothing behind. Some leave orphaned script tags or theme snippets. Removing the app doesn't always remove the code.
  3. Break up long JavaScript tasks in custom code so the main thread isn't blocked during interaction.
  4. Defer or remove non-essential third-party scripts — chat widgets, heavy analytics, marketing pixels you no longer use.

The mental model: your INP problem is usually a subscription you forgot to cancel. Fixing it often saves money as well as milliseconds.

Fixing CLS — reserve the space

CLS is the most mechanical of the three. Layout shift happens when something loads and pushes other content around. The fixes are boring and reliable:

  • Put explicit width and height (or an aspect ratio) on every image, video, iframe, and embed. This lets the browser reserve the space before the asset arrives — the single biggest CLS fix.
  • Reserve space for anything an app injects — banners, badges, cookie bars, review widgets. A block that pops in above the fold after load is a classic CLS spike.
  • Use font-display: swap and preload fonts so text doesn't reflow when the web font arrives.

CLS problems are almost always findable by scrolling the page slowly on a throttled connection and watching what jumps.

The one time a re-theme is actually justified

To be fair to the "rebuild it" camp — there is a case for it, just a narrow one:

  • You're on a genuinely old, pre-OS-2.0 theme that lacks modern lazy-loading and section structure, and it's fighting you at every turn.
  • You're redesigning anyway, so the performance rebuild rides along for free.

If that's you, do it deliberately — and know that even Shopify's newest flagship theme can start behind on mobile out of the box, so choosing Horizon isn't an automatic performance win. Your build quality — apps, image discipline, custom code — matters more than the base theme either way. Outside those cases, in-place fixes get you there faster and cheaper.

Measure before and after — and give the field data time

Two rules that separate real improvement from wishful thinking:

  • Change one thing at a time and re-measure. If you remove three apps, compress the hero, and add width attributes all at once, you won't know what worked. For deliberate before/after comparison, treat it like any other optimisation and measure it properly.
  • Give the field data ~28 days. A lab tool will show your LCP fix instantly, which is great for confidence — but Search Console's field data is a 28-day rolling average, so the ranking-relevant number catches up over about a month. Don't panic if Search Console lags; don't celebrate off the lab score alone.

And it's worth doing, because speed isn't only a ranking factor — a slow mobile LCP quietly increases bounce and abandonment before a visitor ever sees your product, which is one of the most common reasons stores leak sales despite growing traffic. It also feeds AI and search discovery, where mobile experience is increasingly part of how you get surfaced at all.

The bottom line

Core Web Vitals on Shopify looks intimidating because the report is red and the instinct is to blame the theme. But the server layer is Shopify's and already fast, and the failing layer is the one you can edit:

LCP → fix the hero image. INP → remove the app bloat. CLS → reserve the space.

Do those three, measure the field data, and the overwhelming majority of stores pass — without a rebuild, a migration, or ripping out a theme that was never really the problem.

We help Shopify brands diagnose and fix Core Web Vitals in place — app audits, LCP and INP work, and the measurement that proves the lift in the field, not just the lab. See our Shopify store development work, or talk to us about your store's performance.

Frequently asked questions

What are good Core Web Vitals scores for a Shopify store?

The thresholds are the same on Shopify as anywhere: LCP under 2.5 seconds, INP under 200 milliseconds, and CLS under 0.1 — measured at the 75th percentile of real mobile visitors over a rolling 28-day window. Well-optimised stores commonly land around LCP 1.7–2.0s, INP 100–150ms, and CLS 0.02–0.05 once the work is done, which puts them comfortably ahead of most competitors.

Why does my Shopify admin Speed Score differ from Google Search Console?

Because they measure different things. The admin Speed Score is a Lighthouse lab number from a single simulated visit. Search Console reports Core Web Vitals from real Chrome users (the CrUX dataset) over 28 days. Google ranks on the field data, not the lab score — so a store can score low in the lab and still pass CWV, or score respectably in the lab and still fail INP in the field. Optimise for the field data.

Do I need to change my theme to pass Core Web Vitals?

Usually not. On hosted Shopify, the server, CDN, and time-to-first-byte are Shopify's responsibility and already fast. Stores fail Core Web Vitals because of what merchants add on top — apps, third-party scripts, oversized images, and excessive fonts — all of which are fixable in place. A full re-theme is only warranted if you're on a genuinely outdated, pre-OS-2.0 theme or you're redesigning anyway.

What's the single biggest cause of a slow Shopify store?

App bloat. Every app that injects JavaScript adds work the browser has to do on every page, and INP suffers most. Auditing and removing unused apps is routinely the highest-impact fix — often ahead of image compression. If you've installed and forgotten apps over the years, that's usually where the biggest, fastest win is hiding.

Should I lazy-load images to speed up my store?

Lazy-load below-the-fold images, but never the hero or first product image — that's usually your LCP element, and lazy-loading it makes LCP worse. Dawn and other OS 2.0 themes lazy-load by default, so the fix is making sure your LCP image is excluded from lazy-loading and, ideally, preloaded so it starts downloading immediately.

How long before my Core Web Vitals improvements show up?

Field data is a 28-day rolling average, so Google Search Console can take several weeks to reflect a fix even when a lab tool shows the improvement instantly. Verify the change in a lab tool right away for confidence, but expect the ranking-relevant field data to catch up over roughly a month. Don't judge a fix by the admin Speed Score moving.

Have a project in mind?

Building something on Shopify?

We design, build, and maintain Shopify apps, stores, and AI products — to the standard this article describes.

Related reading

Shopify Store Development 7 min

Shopify Thank You Page vs Order Status Page: What's the Difference?

They're not the same page — and there are three post-purchase surfaces, not two. The thank you page is seen once at peak attention, the order status page is returned to repeatedly while they wait, and the customer account page lasts the whole relationship. Separate extension targets, different jobs — putting identical content on all three wastes the difference.

Read article
Shopify Store Development 5 min

How to Increase Shopify AOV Using Post-Purchase Upsells

Post-purchase upsells lift AOV by 10–20% — but only if you get the offer right. The pricing ratio, the relevance rule, and the one-offer principle decide whether you land 14% acceptance or under 3%. Here's the tactical playbook, with the benchmarks to measure yourself against.

Read article
Shopify Store Development 5 min

Shopify Thank You Page: How to Turn It Into a Revenue Channel

The thank you page is the second-most-viewed page in your store after the homepage — and most stores leave it completely empty. Post-purchase offers convert at 8–15%, five to ten times better than pre-purchase upsells, because the payment is already done. Here's how to turn that page into real revenue in 2026.

Read article
Shopify Store Development 5 min

Shopify Collections Are Changing: What Merchants Need to Know in 2026

Shopify is overhauling collections in 2026 — the rigid 'smart vs custom' split is gone, replaced by a flexible Collection Sources model where one collection can combine automated conditions, manual picks, exclusions, other collections, and app sources. Add variant-level targeting and native AI merchandising, and here's what merchants (and their developers) need to know.

Read article
Shopify Store Development 5 min

Shopify B2B in 2026: Is Shopify Ready for Serious Wholesale Businesses?

Shopify B2B had a big 2026: native wholesale features are no longer Plus-only, and Winter '26 closed much of the gap with dedicated B2B platforms. So is Shopify ready for serious wholesale? For most brands, yes — here's what you get, where the real scale line sits, and the honest limitations to know before you commit.

Read article
Shopify Store Development 5 min

Shopify Horizon Theme: Should Merchants Upgrade in 2026?

Horizon is Shopify's new flagship theme — nested blocks, global blocks, AI block generation, and a far better editor. But is it worth migrating your existing store in 2026? Here's what Horizon does better than Dawn, where it still trails on mobile performance, why the move is a rebuild not a swap, and a clear decision framework.

Read article
Shopify Store Development 5 min

Shopify Native A/B Testing vs Third-Party Apps: Which Should You Use?

Shopify now ships native A/B testing — Rollouts — for themes and checkout, server-side and with no app. So do you still need Shoplift, Intelligems, or Visually? Here's exactly what native testing does well, what it can't do yet, and a clear decision framework for choosing between native and third-party tools in 2026.

Read article
Shopify Store Development 5 min

Why Shopify Stores Lose Sales Despite Growing Traffic

Traffic is up but sales aren't following? The problem is almost never traffic — it's the conversion gap. Here are the real reasons Shopify stores leak sales despite growing visits — speed, product pages, mobile, checkout, trust, traffic quality, and search — and how to diagnose and fix each.

Read article
Shopify Store Development 5 min

Shopify Plus vs Shopify: When the Upgrade Pays Off (2026)

A practitioner's guide to choosing between standard Shopify and Shopify Plus in 2026 — real pricing, the Plus-only features that actually matter, and the specific signals that mean it's time to upgrade (and when it isn't).

Read article