Skip to main content

Home / guides / Shopify

Core Web Vitals for Shopify

Updated · by RankVitals

Shopify hosts your storefront on its own globally distributed CDN, so server response and asset delivery are rarely the problem. What decides whether a Shopify store passes Core Web Vitals is everything merchants add: apps that inject JavaScript into every page, oversized hero media, and older themes that predate Online Store 2.0. This guide covers what you control on Shopify, what you don’t, and where the real wins are.

Real-world measurements, July 2026

Mobile lab results for well-known Shopify sites, measured with Lighthouse — the same engine behind Google PageSpeed Insights and RankVitals tests. Snapshot taken July 19, 2026 — your numbers will differ, which is the point: measure your own site.

SitePerf scoreLCP (lab)TBTCLS
allbirds.com38/10023.5 s1587 ms0.01
gymshark.com35/1005.3 s5286 ms0.07

Lab data: Lighthouse 13, emulated Moto G Power over simulated 4G — the identical methodology PageSpeed Insights uses for its lab section. Single runs; lab numbers vary a few percent between runs.

What real Shopify storefronts measure

We measured two flagship Shopify Plus storefronts with Lighthouse 13 (mobile emulation) in July 2026, and the results show exactly where Shopify stores bleed. Gymshark scored 35/100 with LCP at 5.3 s and a striking 5,286 ms of Total Blocking Time — the signature of a storefront carrying heavy app and tracking JavaScript. Allbirds scored 38/100; its blocking time was lower (1,587 ms) but lab LCP reached 23.5 s in our run — an overlay-driven worst case where the largest element renders long after first paint. Layout stability was fine on both (CLS 0.005 and 0.075): Shopify themes reserve space well. Neither number is a verdict on the brands — both stores convert brilliantly — but they demonstrate that world-class merchandising on Shopify routinely coexists with failing Core Web Vitals, and the gap is app JavaScript and hero media, not Shopify’s servers.

Apps are the number-one Shopify performance tax

Every app that touches the storefront — reviews, upsells, bundles, popups, wishlist, chat, tracking pixels — ships JavaScript into your theme, and most of it runs on the main thread during load. This is why two stores on the same theme can score 40 points apart. Open Shopify admin → Online Store → Themes → the “Speed” report to see Shopify’s own attribution, then audit honestly: for each app, is it paying for the milliseconds it costs on every single page view?

Uninstalling is not always enough. Apps installed before theme app extensions became standard often edited theme.liquid directly, and their script tags survive uninstall. Search your theme code for leftover snippet includes and third-party script domains you no longer recognize, and remove them. For apps you keep, prefer ones built as Online Store 2.0 app blocks — those load only on templates where the block is actually placed, instead of globally.

Theme choice: Online Store 2.0 changes the math

Shopify’s reference theme Dawn was built explicitly for performance — minimal JavaScript, native lazy loading, no jQuery — and most modern OS 2.0 themes follow its patterns. If your store still runs a 2018-2020 era theme (Debut, Brooklyn, or a heavyweight purchased theme), the accumulated JavaScript and render-blocking CSS usually cost more than any amount of micro-optimization can recover. Migrating to a Dawn-class theme is a project, but it routinely moves mobile scores by 20+ points.

Within your theme, be disciplined about sections on high-traffic templates. Each section a page renders adds Liquid work and often its own JS module. Collection pages with filter apps, infinite scroll, and quick-view modals stack main-thread cost on exactly the pages where shoppers are least patient.

Hero images: the LCP element on almost every storefront

On a typical Shopify homepage the LCP element is the hero banner; on product pages it is the featured product image. Shopify’s CDN already serves WebP or AVIF automatically to browsers that support them — the format is not your problem. Size is. Request images at the size they render: use image_url with an explicit width and the image_tag helper, which generates a proper srcset so a phone is not downloading a 2800px desktop banner.

Two theme-level upgrades finish the job. First, preload the hero: Shopify’s preload_tag (or a link rel="preload" as="image" in theme.liquid for the relevant template) starts the hero download before the browser has parsed the rest of the page. Second, resist full-viewport carousels — they multiply the media payload, delay the real LCP, and slider libraries add blocking JS. A single static hero with a strong offer converts as well and loads seconds earlier.

What you cannot control on Shopify — and should stop chasing

Shopify owns the infrastructure: the CDN, HTTP/2 and HTTP/3, TLS, server response times, and the entire checkout. You cannot add server-side caching rules, edit response headers, or optimize checkout’s JavaScript — and Lighthouse findings pointing at Shopify’s own runtime scripts are not actionable. Treat platform-owned findings as background noise; chasing them wastes budget you should spend on apps, theme, and media.

This constraint is also the platform’s strength: TTFB on Shopify is consistently fast worldwide without you managing anything. Your entire performance surface is the theme bundle and what gets injected into it — which is why app discipline and image discipline dominate every Shopify optimization list, including this one.

Measuring Shopify correctly

Measure the templates that take the money, not just the homepage: a product page and your top collection page. They carry different app surfaces (reviews and variant scripts on product pages, filtering on collections) and their scores diverge accordingly. If your store is behind a password page (pre-launch), lab tools will measure the password page instead — remove the password or test a preview link.

Cookie-consent banners deserve attention on Shopify too: a late-loading consent app is a common source of layout shift and can even become the LCP element. And as everywhere, remember Google judges you on 28-day Chrome field data — after an app purge or theme migration, lab scores improve immediately but field metrics follow a month later.

What our audit checks on Shopify sites

These are real checks from the RankVitals SEO audit that most often fire on Shopify sites. Run the audit to see which ones apply to yours.

Frequently asked questions

Why is my Shopify speed score low even though the site feels fast?

Shopify’s CDN makes the first response fast on good connections, which is what you feel on office Wi-Fi. Lab scores emulate a mid-range phone on 4G, where the megabytes of app JavaScript and oversized hero images dominate. The score is telling you what mobile shoppers on average connections experience.

How many apps can I run before speed suffers?

There is no safe number — one badly built app can cost more than ten good ones. The practical rule: every app that renders or injects anything into the storefront must justify its cost in the theme Speed report. Back-office apps (inventory, accounting, shipping) cost nothing on the frontend and don’t count.

Will upgrading to a new theme really improve Core Web Vitals?

If you are on a pre-2021 theme, almost certainly yes. Dawn-class OS 2.0 themes ship a fraction of the JavaScript, lazy-load natively, and support app blocks that load per-template instead of globally. Stores migrating from Debut-era themes typically gain 15-30 mobile performance points before any other optimization.

Can I optimize Shopify’s checkout speed?

No — checkout runs on Shopify’s infrastructure and its code is not editable (checkout.liquid has been fully deprecated in favor of checkout extensibility). That is fine: checkout is consistently fast and is not part of your storefront’s Core Web Vitals assessment. Focus on home, product, and collection templates.

Measure your Shopify site now

Free speed test with waterfall + filmstrip, and an SEO audit in the same tool.

Enter a public website address, including https://. No account is needed to start a trial test.