Why is my Shopify store slow? A Core Web Vitals troubleshooting guide
Find out why your Shopify store is slow: which speed number to trust, which metric fails on which template, what changed, and how to fix and re-measure it.
Quick answer
A Shopify store is usually slow for one of three reasons: a large or late-loading hero image (Largest Contentful Paint), too much app and theme JavaScript (Interaction to Next Paint), or images, banners and app widgets that push content around as they load (Cumulative Layout Shift). To find which one, work through six steps: decide which number to trust, find the failing metric and template, check what changed, apply the fix for that metric, test it on a duplicate theme, then re-measure once real visitor data has caught up.
Key takeaways
- Trust real visitor (field) data over a single Lighthouse score.
- Shopify's Web performance dashboard reports the 75th percentile of the past 30 days and can lag by up to 36 hours.
- Good means LCP ≤ 2.5 s, INP ≤ 200 ms and CLS ≤ 0.1 at the 75th percentile.
- Diagnose by template: product, collection, cart and home pages load different apps.
- Most regressions follow a change, so check app installs, theme updates and new tags first.
- Test every fix on a duplicate theme before publishing it.
Step 1: Decide which number to trust
Speed numbers disagree because they measure different things. A lab test loads one page once, on a simulated device and connection. Field data records what real visitors experienced over weeks. Field data tells you whether there is a problem; lab tools help you find the cause.
Shopify's Web performance dashboard summarises real user data from the past 30 days at the 75th percentile. Shopify notes that data might be delayed by up to 36 hours, that it keeps 90 days of data, and that a new store or one in private mode (password-protected) might not have metrics at all.
| Source | What it is | Use it for |
|---|---|---|
| Shopify Web performance dashboard | Real visitor data, past 30 days, 75th percentile | Whether there is a problem, on which metric and page type |
| Search Console Core Web Vitals report | Google's field data, grouped by similar URLs | Which groups of URLs Google sees as poor |
| PageSpeed Insights, field section | Chrome User Experience Report data where traffic is sufficient | A second view of real visits for one URL or the whole origin |
| Lighthouse or the PageSpeed Insights lab score | One simulated page load | Finding causes and comparing a fix before and after, not judging the store |
Worth noting
Low-traffic stores get noisy field data. If a template has few visits, a handful of slow sessions can move the 75th percentile. Look for a trend over weeks rather than reacting to one day.
Step 2: Find which metric fails, and on which template
Google's thresholds for a good experience are measured at the 75th percentile of page loads, segmented across mobile and desktop. Shopify's dashboard uses the same "good" lines and adds its own moderate and poor bands.
Then open the Page Type report for the failing metric. Shopify describes it as a way to see whether certain page templates affect performance. A store whose product pages fail INP while the home page passes has a product page problem, usually an app that only loads there.
| Metric | What it measures | Good (web.dev) | Shopify's poor band |
|---|---|---|---|
| LCP (Largest Contentful Paint) | Time until the main content is visible | ≤ 2.5 s | Over 4 s |
| INP (Interaction to Next Paint) | How quickly the page responds to taps, clicks and typing | ≤ 200 ms | Over 500 ms |
| CLS (Cumulative Layout Shift) | How much the layout moves while loading | ≤ 0.1 | 0.25 or more |
Step 3: Work out what changed
Speed rarely drops for no reason. On the dashboard's Over Time charts, Shopify shows event annotations as numbered vertical lines; hovering over one shows changes such as app installations, theme updates and new code. Line those up against the date the metric moved.
Annotations won't catch everything, so check the usual suspects as well.
- A new app, or a new feature switched on inside an existing app
- A theme update, a new theme, or a developer's code change
- A new tracking tag, pixel or tag manager container
- New above-the-fold content, such as a video hero or a slideshow
- A new pop-up, chat widget or review carousel
- Seasonal banners or announcement bars added for a campaign
Pro tip
Keep a simple change log: date, what changed, who changed it. It turns the next slowdown from a guessing game into a five-minute check.
Step 4: Apply the fix for the failing metric
LCP. On Shopify this is most often a large hero image or a render-blocking script delaying everything behind it. Serve the hero at the size it displays, don't lazy-load the image that is the largest element, avoid sliders and video as the main above-the-fold element where possible, and move scripts that aren't needed for first paint out of the way.
INP. This is almost always a JavaScript problem, and apps are the most common source. Find which apps load scripts on every page rather than only where needed, and remove or defer anything not earning its cost. Our app audit checklist covers this step in detail. Tag managers carrying many tags have the same effect.
CLS. Give images, embeds and app content explicit dimensions or reserved space so the layout doesn't jump as they load. Late-injected banners, cookie bars and review widgets are common causes.
- Serve hero images at the size they display, using Shopify's image URL parameters
- Load app widgets only on templates that need them
- Remove leftover code from uninstalled apps
- Set width and height on images and reserve space for banners
- Limit web fonts and use font-display swap
| Symptom | Likely cause | First check |
|---|---|---|
| LCP poor on home and collection pages | Oversized or lazy-loaded hero image, slideshow | Which element is the LCP element in a lab test |
| LCP poor only on product pages | Large product media, app scripts loading first | Product image sizes and scripts loaded before the main image |
| INP poor after installing an app | The app's script on the main thread | Block that script in DevTools on a duplicate theme and re-test |
| INP poor across the whole site | Tag manager, chat widget, theme JavaScript | Third-party scripts loading on every template |
| CLS poor on product pages | Review stars, badges or delivery messages injected late | Elements appearing after first paint |
| Everything worse since a theme update | New sections or settings in the theme | Compare the old and new theme versions on the same template |
Step 5: Test the fix on a duplicate theme
Never test speed fixes on the live theme. Duplicate it, make one change at a time, and compare the same templates in a lab tool before and after. To see what an app costs before you uninstall it, use the request blocking feature in Chrome DevTools to block its script on the duplicate theme's preview and re-run the test.
If the slowness looks like server time rather than scripts, the Shopify Theme Inspector for Chrome shows Liquid render profiling as a flame graph, which helps find theme code that is slow to render. Check that apps, tracking and checkout still work on the duplicate before publishing it.
Step 6: Re-measure after the data catches up
Once the fix is live, give field data time. Shopify's dashboard can lag by up to 36 hours, and its summary covers the past 30 days, so the headline figure moves slowly. Use the Over Time report to see whether the line changes after your publish date, and re-check the Page Type report for the template you fixed.
Write down the date and what you changed, so the next annotation on the chart has an explanation.
Hypothetical example
Hypothetical example: a homeware store's dashboard shows INP moving from good to moderate on mobile. The Page Type report shows product pages are the problem; collection and home pages are fine. An annotation two weeks earlier marks an app installation: a product personalisation widget. On a duplicate theme, blocking the widget's script brings lab interaction times back down. The team limits the widget to the products that use it, publishes, and watches the Over Time chart for the following weeks.
Does the speed problem cost sales?
Shopify has published its own analysis: for every 100 milliseconds slower a store loads, measured by LCP, conversion tends to be about 3.5% lower. This is vendor data from Shopify, based on a 28-day window around January and February 2026, and Shopify describes it as correlation, not direct causation. Treat it as a reason to take speed seriously, not as a forecast for your store.
For how performance connects to conversion and what to prioritise for revenue, see our guide to how site speed affects Shopify conversion rates.
Common mistakes
- Chasing a Lighthouse score of 100 while field data is already good
- Testing only the home page when product pages carry most traffic and most apps
- Uninstalling apps without removing the code they left in the theme
- Testing changes on the live theme
- Judging a fix the day after publishing, before field data has caught up
- Switching themes to fix a problem that was caused by one app
When this flow is not enough
This flow assumes an Online Store theme. Headless storefronts built with Hydrogen or another framework need the developer's own monitoring. Checkout isn't built from your theme's templates, so this flow doesn't diagnose checkout speed. If your site isn't on Shopify at all, use our general guide to diagnosing a slow website instead.
Some fixes also have business costs: removing a reviews widget or a personalisation app may speed up a page and still lose sales. Decide those with conversion data, not speed data alone.
Sources
web.dev: Web Vitals; Shopify Help Center: Web performance dashboard; Shopify.dev: Shopify Theme Inspector for Chrome; Shopify: store speed and conversion (published 27 April 2026, vendor data).
Accessed 14 October 2026. Dashboard features and reporting windows can change; check Shopify's current documentation.
Keep it from slowing down again
Performance degrades gradually as apps and content are added, so a single optimisation pass doesn't hold. Make the six steps part of your regular maintenance routine: check the dashboard monthly, log every change, and test new apps on a duplicate theme before they go live. Performance matters most on mobile; see our Shopify mobile CRO guide for how it connects to conversion there. If fixes need theme or app work, that falls under Shopify development.
Want a second pair of eyes on a slow store?
ZSpace Labs is a remote-first technology studio that works with clients globally on Shopify development and speed and conversion audits. If useful, we can walk through your Web performance dashboard with you and work out which metric, template and change to look at first.
Common questions.
They're three measurements Google uses to judge real-world page experience: Largest Contentful Paint (how fast the main content appears), Interaction to Next Paint (how quickly the page responds once someone interacts with it), and Cumulative Layout Shift (how much the layout jumps around while loading). Together they're a reasonable proxy for whether a page feels fast and stable to an actual visitor.