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.
| Site | Perf score | LCP (lab) | TBT | CLS |
|---|---|---|---|---|
| allbirds.com | 38/100 | 23.5 s | 1587 ms | 0.01 |
| gymshark.com | 35/100 | 5.3 s | 5286 ms | 0.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.
duplicate_titlesCollection, tag, and vendor pages generated from one title template are the most common duplicate-title source on Shopify stores.thin_contentAuto-generated collection and tag pages with a grid of products and no copy rank poorly — this check flags them so you can add collection descriptions.image_lazy_loadingOlder themes render every product-grid image eagerly; OS 2.0 themes lazy-load by default. This check shows which camp your theme is in.broken_linksDiscontinued products leave dead internal links from blog posts and collections — endemic on mature stores and invisible until crawled.redirect_chainsYears of URL handle changes create redirect chains through Shopify’s URL redirects list, adding latency and diluting link equity.
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.