I've run speed audits across 550+ Shopify stores in the past 8+ years, and the pattern almost never changes: the merchant blames the theme, and the real problem is somewhere else — usually the apps they installed, the images they never resized, or a script loading on every page when it's only needed on one. This is the checklist I actually run on a store before I touch a single line of theme code, not a generic 50-point list copied from a speed-testing tool's blog. Work through it in order and you fix what actually moves Core Web Vitals first, and the things that only look good on a report last.
What Core Web Vitals Actually Measure on a Shopify Store
Google's Core Web Vitals are three metrics, and each one maps to something a shopper actually feels:
- LCP (Largest Contentful Paint) — how long it takes the biggest visible element (almost always your hero image or product photo) to fully render. This is the "is this page ever going to load" number.
- INP (Interaction to Next Paint) — how fast the page responds when someone taps "Add to Cart" or opens a size selector. Replaced First Input Delay in 2024, and it's the one most Shopify stores fail without realizing it, because it only shows up under real interaction, not a static Lighthouse run.
- CLS (Cumulative Layout Shift) — how much the page jumps around as it loads. A cookie banner, a late-loading review widget, or an app badge that pushes the buy button down half a second after the page looks "done."
These aren't just a Google ranking signal. They track directly with whether someone finishes checkout, which is the actual reason to fix them.
The Three Real Causes of a Slow Shopify Store
1. Oversized and badly formatted images
This is the highest-impact fix on almost every store I look at, and it's also the easiest to get wrong. A 4000px-wide product photo served at 400px in the browser is pure waste — the browser downloads the full file and resizes it client-side. The fix is consistent: export product and banner images in WebP (or AVIF where your theme supports it), size them for their actual display dimensions, and lazy-load everything below the first screen. Your hero/LCP image is the one exception — that one should load eagerly and get priority, not lazy-load, or you'll tank LCP trying to fix it.
2. Apps and render-blocking third-party scripts
Every app you install adds at least one script tag, and most add several — analytics pixels, chat widgets, upsell popups, review displays. Individually each one feels harmless. Stacked, they're the single most common reason a store that used to load fast doesn't anymore. Worse: uninstalling an app rarely removes its code. It leaves orphaned snippets in theme.liquid, unused ScriptTags registered through the Shopify API, and app blocks sitting disabled but still loading their JS.
3. Theme code bloat
Liquid loops that re-query the same collection three times on one page, unminified custom CSS/JS, fonts loaded in five weights when the design uses two — this is the slowest to fix and the one that actually requires a developer touching theme code, not just toggling app settings.
The Audit: How I Actually Check a Store Before Touching Anything
- Shopify's own Online Store Speed report (Analytics → Reports → Online Store speed) — gives you a comparative score against other stores in your Shopify plan tier and industry. It's a starting signal, not a diagnosis.
- Lighthouse and PageSpeed Insights, run on mobile — for your home, collection, product, and cart templates separately. A fast homepage with a bloated product template is still a slow store, because that's where the buy button lives.
- Chrome UX Report (CrUX) field data, available through Google Search Console — lab scores (Lighthouse) show what's possible under ideal conditions; field data shows what your real visitors on real connections actually experienced. They frequently disagree, and field data is the one that affects rankings.
- A before/after Lighthouse test per app — this is the step almost nobody does and the one that actually finds the culprit. Disable one app, re-run Lighthouse, note the delta, re-enable it, move to the next. It's tedious. It's also the only way to know for certain which app is costing you the most, instead of guessing.
Fix Priority Order When Budget Is Limited
Not every store can fix everything at once, so I prioritize in this order because it consistently produces the biggest score movement per hour of work:
- Images first. WebP conversion, correct sizing, and lazy-loading below the fold. This category moves LCP more than anything else because it's usually the LCP element itself.
- Render-blocking third-party scripts second. Defer what can be deferred, load chat widgets and popups after first interaction instead of on page load, and remove scripts left behind by uninstalled apps.
- Theme code bloat last. Liquid cleanup, CSS/JS minification, font subsetting. Real gains, but smaller per hour of dev time than the first two categories, which is why it's worth doing after the higher-impact fixes are already in place.
What You Can Fix Yourself vs What Needs a Developer
You can usually handle in Shopify admin: re-exporting and re-uploading images in WebP at correct dimensions, removing apps you're not actively using, checking the Online Store Speed report monthly, and turning off app embeds you don't need in Theme Settings → App embeds.
This generally needs a developer touching theme code: removing orphaned script snippets that survive an app uninstall, fixing render-blocking CSS/JS load order, cleaning up redundant Liquid loops, font subsetting, and diagnosing INP issues caused by heavy JavaScript on interactive elements. This is exactly the work I cover on my Core Web Vitals and speed optimization service — a real before/after audit, fixes made on a duplicate theme, tested before anything goes live.
Why This Is Worth Fixing
Ecommerce load-time research has repeatedly found that stores loading in under two seconds convert roughly 2.5x better than stores taking five seconds or more. That gap compounds: a slow store doesn't just lose the sale in front of it, it loses the organic ranking that would have brought the next visitor, since Core Web Vitals are a confirmed part of Google's ranking signals. I hold Google's GA4 and Search Console certifications and SEMrush's Technical SEO certification specifically because speed, indexing, and rankings are the same problem approached from three angles — you can't fix one and ignore the other two.
The 2026 Shopify Speed Checklist
- Run the Shopify Online Store Speed report and note your baseline score
- Run Lighthouse (mobile) on home, collection, product, and cart templates separately
- Check CrUX field data in Search Console — compare it against your lab scores
- Test each installed app with a disable/re-run Lighthouse cycle to isolate the worst offenders
- Convert and correctly size all product/banner images to WebP; lazy-load everything except the LCP element
- Defer or delay non-critical third-party scripts (chat, popups, upsells) until after first interaction
- Remove orphaned script snippets left behind by apps you've already uninstalled
- Clean up redundant Liquid loops and minify custom CSS/JS in the theme
- Re-test all four templates after each change and log the before/after — don't guess whether a fix worked
If you'd rather have someone run this end-to-end with a measured before/after report instead of doing it template by template yourself, that's the exact process I use on the speed optimization service page, and it pairs directly with the theme-level work I do on custom Shopify development — a redesign done right doesn't reintroduce the same app bloat six months later.
FAQ
Why did my Shopify store get slower after I installed a few apps?
Every app adds at least one script tag, and most add several — analytics, chat, upsells, reviews. Individually they seem harmless; stacked, they're the most common reason a store slows down. The fix is a disable/re-run Lighthouse test per app to find which ones are actually costing you the most, not a blanket "audit your apps" guess.
What's the single biggest speed fix for most Shopify stores?
Image optimization — converting to WebP, sizing images for their actual display dimensions, and lazy-loading everything except your LCP element. It's usually the highest-impact category because the oversized image often is the LCP element being measured.
Does removing an app actually remove its code?
No. Uninstalling an app frequently leaves orphaned script snippets in your theme and unused ScriptTags registered through the Shopify API. This leftover code keeps loading on every page unless someone goes into the theme and removes it directly — it's the single most overlooked cause of a store that "shouldn't" be slow anymore.
Can I fix Core Web Vitals myself, or do I need a developer?
Image re-exporting, removing unused apps, and checking your Speed report monthly you can do yourself in Shopify admin. Fixing render-blocking script order, cleaning orphaned code, Liquid loop inefficiencies, and diagnosing INP issues generally requires a developer working directly in theme code.