Published
Why Your Shopify Store Is Slow (and What Actually Fixes It)
Shopify is fast; storefronts are slow. Where the weight actually comes from, a 20 minute diagnosis you can run yourself, the fixes that work inside a theme, and the point where a rebuilt front end is the honest answer.
By Tyler Stocks · Stocks Local
A slow Shopify store is rarely Shopify's fault. The platform's hosting and CDN are quick. The weight lives in the storefront layer: app scripts stacked up over years, theme JavaScript, oversized images, and third-party embeds. Most stores can get meaningfully faster inside their theme. Some hit a ceiling only a rebuilt front end moves.
Speed is a commercial problem before it is a technical one. A buyer on a phone, on mobile data, comparing your product against two open competitor tabs, gives you a few seconds of patience. Google's own research has long shown that most mobile visitors abandon a page that takes more than three seconds to load. For a premium brand the damage is subtler too: a storefront that stutters while selling a £3,000 product quietly contradicts the price.
Shopify is fast. Storefronts are slow.
It helps to separate the two layers, because they fail differently.
The platform layer is Shopify's responsibility: hosting, the CDN that serves your images, the checkout, the cart. This layer is genuinely quick, globally distributed, and you cannot meaningfully slow it down or speed it up. If Shopify's infrastructure were the bottleneck, every store would be slow. They are not.
The storefront layer is everything your visitors' browsers have to download, parse, and run before the page feels usable: your theme's code, every app's scripts, your images, your fonts, your tracking pixels. This layer is your responsibility, and it is where almost every slow Shopify store earned its problem.
Where the weight actually comes from
| Source | How it accumulates | What it costs |
|---|---|---|
| App scripts | Each installed app can load JavaScript on every page, used or not | Main-thread time, delayed interactivity |
| Theme JavaScript | Multipurpose themes ship sliders, mega menus, quick views, wishlists you may never use | Payload and parse time on every visit |
| Images | Full-resolution uploads placed straight into heroes and grids | Slow largest-element render, mobile data burn |
| Third-party embeds | Chat widgets, review carousels, external fonts, pixels | Network requests you do not control |
The pattern behind all four is the same: nothing was ever expensive on the day it was added, and nothing was ever removed. A store that has traded for three years is usually carrying the residue of every experiment it ran on the way.
Diagnose it yourself in 20 minutes
You do not need an agency to find out where your weight is. You need five checks.
- Run your homepage and one product page through PageSpeed Insights on mobile. Read the field data at the top first, because it describes real visitors over the last 28 days. The lab score below it is a diagnostic, not a verdict.
- Find the Largest Contentful Paint element in the report. On most stores it is the hero or the first product image. Note what it is and how heavy the file is.
- Open your theme editor and look at App embeds, then your installed app list. Count how many apps you actually still use. Most stores are surprised.
- Duplicate your live theme, switch off the app embeds you do not recognise or use in the copy, and preview it through the same test. This is reversible and costs nothing.
- Check total page weight in your browser's developer tools or WebPageTest. Note how many megabytes are images and how much is JavaScript.
Twenty minutes of this usually names your two or three real problems. It also protects you from spending money in the wrong place: there is no point commissioning a rebuild to fix a 6MB hero image.
What you can fix without leaving your theme
Honesty first: most slow Shopify stores do not need a new storefront. They need a tidy-up, and it is usually a day of careful work.
- Remove the apps you stopped using. Uninstall them properly, then check the duplicate-theme test again. Some older apps also left code behind in theme files when they were removed; if your theme predates Shopify's app embed system, it is worth having the leftover snippets cleaned out.
- Fix the images. Export sensibly sized WebP files instead of full-resolution PNGs, especially for the hero. Shopify's CDN serves scaled versions, but templates and apps that request originals will happily ship the full file to a phone.
- Trim the homepage. Every section a page carries is code, images, and often another script. The strongest premium homepages are usually the shortest.
- Bring fonts in-house. Fonts served from third-party services add external requests on every visit. Shopify-hosted or system fonts remove them.
- Verify lazy loading. Modern themes defer below-the-fold media by default, but app-inserted sections often do not.
Do this before any bigger conversation. It is the cheapest speed you will ever buy, and for many stores it is enough.
When the theme itself is the ceiling
Some stores do the tidy-up, retest, and still sit well short of quick. That is usually one of these patterns.
- The functionality lives in apps. Reviews, filtering, comparison, bundles, search. Each is a widget bolted over the theme, each brings its own scripts, and removing them removes features you sell with.
- The theme renders its hero late. If the largest element structurally waits behind theme JavaScript, image compression alone will not save the render.
- Section creep is the operating model. The team builds pages by stacking sections, and every landing page repeats the weight.
- The design you want is not the design the theme wants. You are fighting the template with overrides, and every override is more code.
At that point speed stops being a maintenance task and becomes an architecture question, and it should be judged commercially, not by a score. I wrote about the decision in what a custom Shopify website actually is and priced the step honestly in what a headless Shopify build costs. A rebuild is justified by revenue, catalogue complexity, and a buying decision the theme cannot argue, with speed as one of the returns. It is not justified by a Lighthouse number alone.
What a rebuilt front end actually changes
A headless storefront, a custom Next.js front end with Shopify still running products, cart, and checkout, changes one thing fundamentally: control. Pages are rendered server-side and arrive as ready HTML. The only scripts on the page are the ones deliberately chosen. Images go through a pipeline that serves exact sizes in modern formats. Fonts ship from your own domain. The app-widget model disappears, because the features live in the storefront itself.
And the honest limit: headless is not automatically fast. A carelessly built custom front end, loaded with client-side JavaScript and chatty data fetching, can be slower than the theme it replaced. The speed comes from the discipline the architecture makes possible, not from the word headless. If a proposal promises a score instead of explaining a build, treat it the way you would treat any other guarantee in this industry.
Measure what actually matters
Three field numbers are worth watching, all reported in PageSpeed Insights from real Chrome users: Largest Contentful Paint under 2.5 seconds, Interaction to Next Paint under 200 milliseconds, and Cumulative Layout Shift under 0.1. Judge changes against those over a 28 day window, not against a single lab run on office wifi.
Then watch the commercial line alongside: conversion, enquiry quality, and how deep mobile visitors get. Speed is in service of the sale. A store that feels instant on a phone earns trust the way a well-structured product page does: quietly, before the buyer has consciously judged anything.
The next step
Run the 20 minute diagnosis. Do the tidy-up. If the store is still heavy after that, or you want a second pair of eyes on where the weight and friction actually sit, send it in for the free written Shopify teardown. It is a written review of trust, product pages, and conversion friction, and storefront weight shows up in all three. No sales call, just the clearest first fixes in writing.
Questions
Asked and answered.
Do Shopify apps really slow down a store?
Often, yes. Many apps load JavaScript on every page whether the feature is used there or not, and the effect compounds as apps accumulate. Audit your installed list and app embeds, remove what you no longer use, and test a duplicate theme with unused embeds switched off to measure the difference on your own store.
Will uninstalling apps immediately make my store faster?
Usually it helps, but not always completely. Apps built on Shopify's app embed system remove cleanly. Some older apps injected code directly into theme files, and that residue stays after uninstalling. If your theme is several years old, have the leftover snippets checked and cleaned out as part of any speed work.
What is a good speed score for a Shopify store?
There is no prize for a perfect lab score. The numbers that matter are field data from real visitors: Largest Contentful Paint under 2.5 seconds, Interaction to Next Paint under 200 milliseconds, and Cumulative Layout Shift under 0.1. An image-led premium store can accept some weight deliberately, provided those thresholds hold on mobile.
Does site speed affect Google rankings?
Core Web Vitals are a real but lightweight ranking signal, so speed alone rarely moves positions. The stronger commercial case is behavioural: fewer abandoned visits, deeper mobile sessions, and a storefront that feels as considered as the product. Fix speed for buyers first and treat any ranking benefit as a side effect, not a promise.
Want a clear second opinion on the site?
Get a free Shopify teardown