TL;DR: A slow Shopify store comes from three layers: apps, images, and theme code. Do not guess which one. Diagnose first with a cold-load speed test that shows the blocking cost of each app, then fix the heaviest layer before the next. For most stores the order is: cut or replace heavy apps, optimize images, then tune the Liquid. One client store went from mobile PageSpeed 38 to 81 doing exactly this. The fixes are free; knowing which to do first is the whole game.
The question I get most from store owners is not “how do I fix my LCP.” It is “why is my store so slow, and where do I even start.” After optimizing 100+ Shopify stores over 12 years, the honest answer is that almost every slow store is slow for the same three reasons, in the same rough order, and the fastest path is to measure which one is hurting you most before you touch anything.
Why is your Shopify store slow?
Speed on Shopify is not one problem. It is three layers stacked on top of each other, and each one adds seconds independently.
Apps. This is the most common cause by a wide margin. Every app you install loads third-party JavaScript, and on the first, uncached visit all of that code competes for one main thread on a mid-tier phone. A store running 15 to 30 apps often carries several seconds of blocking time from scripts alone, including apps you uninstalled whose scripts are still loading.
Images and media. Images are usually the largest bytes on the page. An uncompressed hero, a full-size image served to a phone, or an autoplaying video pushes your Largest Contentful Paint out past the point where shoppers bounce.
Theme and Liquid code. The template layer is the quiet one. Inefficient Liquid, uncapped collection loops, and a bloated DOM inflate Time to First Byte before the browser sees a single byte. It is invisible in the admin and accounts for a real slice of total render time.
The mistake almost everyone makes is fixing the layer they can see instead of the layer that is actually costing them. That is why the first move is never a fix. It is a measurement.
How do I check what is actually slowing my store down?
Do not trust a warm reload from your own browser; you have the whole store cached. A first-time shopper gets a cold, uncached load on a phone, and that is the load that decides whether they stay. Run your live product page through a cold-load Shopify speed test: it renders the first visit frame by frame, scores LCP and Total Blocking Time against Google’s thresholds, and, most usefully, attributes the blocking time to each individual app so you can see the culprits ranked.
Run the free Shopify speed test
Pair it with two checks. Run Google PageSpeed Insights for the 28-day field data Google actually ranks on. And if you are not sure what is even installed, a Shopify app detector lists every app on the page with its blocking cost, which is faster than scrolling your admin. Now you have a ranked list of what to fix, instead of a hunch.
How to speed up your Shopify store, step by step
Fix the heaviest layer first, re-test, then move to the next. Doing it in this order means the biggest wins land early.
1. Cut or replace the heaviest apps
Start where the blocking time is. Uninstall any app you no longer use, then confirm its script actually stopped loading, not just that the app is gone; orphaned scripts are the most common finding in my audits. For the apps you keep, ask whether the job is a few lines of code instead: a surprising number are, which I cover in replacing Shopify apps with Liquid snippets. Whatever survives, defer it so it loads after the page paints, the exact technique in my note on deferring third-party scripts for INP.
2. Fix your images
Serve every image at the size it displays, not the size it was uploaded. Use Shopify’s image_url filter with a width, add srcset so phones get a smaller file, set loading="lazy" on everything below the fold, and let Shopify serve next-gen formats. The one image that must load fast is your hero, because it is usually your LCP element. Preload it and give it explicit dimensions so it does not shift the layout.
3. Tune the theme and Liquid
Once apps and images are handled, the code layer is where the last one to two seconds hide. Cap collection loops, drop capture from inside loops, and keep your DOM under Lighthouse’s node ceiling. This is developer work, and I wrote the full playbook in Shopify speed optimization with Liquid code. For the specific goal of a sub-second hero paint, the sub-1s LCP tricks go deeper, and the Core Web Vitals guide maps each fix to LCP, INP, and CLS.
How much faster can you actually get?
Realistic, not magic. On a Factory Direct Blinds build, cutting the app and image weight and then tuning the Liquid moved mobile PageSpeed from 38 to 81 without a redesign. A separate store’s INP went from 612ms to 178ms once the third-party scripts were deferred, the full breakdown is in that INP case study. Most slow stores are carrying two or three seconds of removable weight; the question is only which layer holds it.
The reason this matters in dollars: Google and Deloitte’s 37-brand study found roughly 7% of mobile revenue lost per additional second of load time. A store stuck at five seconds is not just ranking worse, it is leaving real money on the table every day.
How to verify it worked
Re-run the cold-load speed test after each change and watch the blocking time and LCP move; that is the lab confirmation you can see in five minutes. Then wait for the field data. Core Web Vitals in PageSpeed Insights update on a 28-day rolling window, so the real-user proof of a fix shows up two to four weeks later, not instantly. If the lab number moved and the field number follows, the fix was real.
The takeaway:
- Diagnose before you fix. A cold-load speed test tells you which of the three layers, apps, images, or code, is actually costing you.
- Apps are usually the biggest culprit, especially orphaned scripts from apps you already removed.
- Do it in order: cut and defer apps, optimize images, then tune the Liquid. The biggest wins land first.
- Every high-impact fix is free. You are paying with attention, not money, so spend it where the number moves.
- Verify twice: the lab test in five minutes, the field data in 28 days.
Kaspian Fuad is a Shopify developer and CRO consultant who builds, audits, and ships themes for DTC brands. 12 years in ecommerce, 100+ stores, Top Rated Plus on Upwork. See a recent theme and performance build, or book a free 30-minute call if you want a second pair of eyes on your store speed.