Introduction
You can usually fix a slow Shopify store without a rebuild by removing unused apps and the code they leave behind, serving correctly sized images, loading the main image first and cleaning up tracking scripts. The slowness rarely comes from the platform itself. It comes from what's been added on top: apps that each load their own scripts, huge product photos, tracking tags pasted into the theme, and custom code layered on by different developers over the years.
Themes have to reach a minimum average Lighthouse performance score of 60 across the home, product and collection pages to be accepted into the Shopify Theme Store, according to Shopify's performance best practices for themes. So the starting point is usually fine, and the fixes work on the store you already have. This is the order we work in when a store owner asks us to speed things up, and why.
The short version
- Measure real-user data first, so you know which metric is failing and on which pages.
- Audit your apps, including code left behind by apps you've already removed.
- Fix the hero image and product images, since they usually decide how fast the page appears.
- Tidy up tracking scripts and third-party widgets.
- Trim theme code, fonts and slow Liquid.
- Re-measure, and keep a log so the store doesn't slowly get worse again.
Step 1: Measure the right thing
Google's Core Web Vitals are the three numbers that matter for how a store feels to shoppers:
- Largest Contentful Paint (LCP): how long the main content, usually the hero or product image, takes to appear. Good is 2.5 seconds or less.
- Interaction to Next Paint (INP): how quickly the page responds when someone taps a variant, opens the menu or adds to cart. Good is 200 milliseconds or less.
- Cumulative Layout Shift (CLS): how much the page jumps around while it loads. Good is 0.1 or less.
Start with Shopify's own web performance dashboard. You can open it from the banner on Online Store > Themes or from Analytics > Reports > Online Store Speed. It replaced the old single "speed score" and shows real-user data for each of the three metrics at the 75th percentile, which means three out of four visitors had a better experience than the figure shown. The time-series view is particularly useful: if a metric got worse on a particular day, check what you installed or changed that day.
Then run your home page, a busy collection page and your best-selling product page through PageSpeed Insights to see which elements are holding each page back. Finally, open those pages on a mid-range phone over mobile data, because that's how many of your customers will see them.
Write the numbers down before you change anything. Without a baseline you can't tell whether a fix helped.
Step 2: Audit your apps
On the stores we look at, apps are the most common cause. A reviews widget, a pop-up, an upsell tool, a currency converter, a wishlist and a chat bubble can each add JavaScript and CSS to every page, including pages where they do nothing.
Go through your installed apps and ask three questions of each one:
- Do we still use it? If not, uninstall it.
- Do two apps do the same job? Two review apps or two pop-up tools is more common than you'd think.
- Does it need to load on every page? A size chart only needs to be on product pages.
Uninstalling isn't always the end of it. On the stores we audit, we regularly find snippets and files that older apps added directly to the theme and that stayed behind after the app was removed. Search `theme.liquid` and the snippets folder for the names of apps you no longer have. That leftover code often loads scripts that go nowhere, and removing it can be a surprisingly big win.
Step 3: Fix the hero and product images
Images usually decide LCP. The fixes:
- Serve the right size. According to Shopify's theme guidance, the `image_url` and `image_tag` Liquid filters generate `srcset` attributes (so phones download a phone-sized image instead of a desktop one), add width and height to prevent layout shift, and serve images from Shopify's CDN. Themes that hard-code image URLs or use one large size everywhere miss all of this.
- Never lazy-load the main image. Lazy-loading everything is a common mistake. Shopify's own guidance is never to lazy-load the LCP image, to load images in the first screen eagerly and to mark the LCP image with `fetchpriority="high"`. Lazy-load the images further down the page instead.
- Tame slideshows. A homepage carousel with several full-width slides can load every slide's image up front. Only the first slide needs to load immediately.
- Replace autoplay hero videos with a poster image on mobile, or at least make sure a light poster shows first.
- Upload sensible source files. A huge PNG straight from the photographer makes every size Shopify generates from it work harder. Export product photos as JPG at a sensible resolution before uploading.
Missing width and height on images and embeds is also the usual cause of layout shift, so this step often fixes CLS too.
Step 4: Tracking scripts and third-party widgets
Over time, stores collect tracking tags: an analytics tag, two ad pixels, a heatmap tool, and something an agency added three years ago. Each one competes for the shopper's phone while the page is loading.
- Remove duplicate tags. If a pixel is installed through an app and also pasted into `theme.liquid`, the script loads twice and events get counted twice. Keep one copy.
- Delay chat and pop-ups. A chat widget doesn't need to load before the shopper has seen the product. Loading it on scroll, after a few seconds or on click is usually fine.
- Question every tag. If nobody has looked at the heatmap tool in a year, remove it.
Step 5: Theme code, fonts and Liquid
- Unused CSS and JavaScript. Themes that have been customised by several developers often carry code for sections that no longer exist.
- Fonts. Each extra font weight is another download. Two weights of one family is plenty for most stores, and `font-display: swap` stops text staying invisible while fonts load.
- Heavy interactions (INP). Sticky add-to-cart bars, complex variant pickers and mega menus can make taps feel sluggish on cheaper phones. The fix is usually lighter JavaScript, not removing the feature.
- Slow Liquid. If the page takes a long time before anything arrives (a slow time to first byte), the theme's Liquid may be doing too much work, often with nested loops on large collections or big menus. Shopify recommends running its Theme Inspector for Chrome to find which Liquid lines are slowest before you start optimising.
Step 6: Re-measure and keep it fast
Change one thing at a time and re-test with the same pages. Real-user numbers are gathered from visits over time, so they take a while to reflect a fix. A fresh PageSpeed Insights lab test shows the effect straight away.
Then keep a simple log: every app you install, every script you add, and the date. Most stores don't get slow all at once. They get slow one "just this one app" at a time.
When a rebuild actually is worth it
We'd usually rather fix a store than rebuild it. A bigger change makes sense when:
- the theme is so old that every app has to be wired into the code by hand;
- a page-builder app generates heavy markup on every page and the store can't run without it;
- the theme has been edited by so many people that fixing it costs more than starting clean.
Even then, a full custom rebuild is rarely needed. Moving to a current, well-built theme and rebuilding your key templates is often enough. If you're weighing up a platform change instead, our WooCommerce vs Shopify comparison sets out the trade-offs.
How we approach a speed fix
We start with a short audit of your real-user data, app list, theme code and key templates. Then we send a written list of what we'd change, in priority order, with a fixed quote. What affects that quote:
- how many apps are installed, and how much leftover app code is in the theme;
- how many templates need work (home, collection, product, cart, landing pages);
- how heavily the theme has been customised, and whether another agency still maintains it;
- whether you want ongoing monitoring afterwards through our website maintenance service.
We build and look after Shopify stores for brands. Vashtara Heaven, a multi-vendor kidswear store, is our documented Shopify case study, and our Shopify development page covers the rest of what we do on the platform.
Frequently asked questions
Why is my Shopify store so slow?
Usually because of what's been added to it: apps that load scripts on every page, oversized images, tracking tags in the theme and code left behind by removed apps. Shopify's hosting is rarely the bottleneck.
Can I speed up my Shopify store without changing the theme?
In most cases, yes. Removing unused apps and their leftover code, serving correctly sized images, loading the main image first and cleaning up tracking scripts all work on your current theme. A new theme is only worth it if the current one is very old or heavily patched.
Do Shopify speed booster apps work?
Be careful. Any app that promises a higher score is still another app adding code to your store. Fixing the causes (apps, images, scripts, theme code) is more reliable than adding a layer on top.
How do I check my Shopify store's Core Web Vitals?
Open the web performance dashboard from Online Store > Themes or Analytics > Reports > Online Store Speed. Then test your key pages in PageSpeed Insights.
How much does Shopify speed optimisation cost?
It depends on the number of apps, how many templates need work and how customised the theme is. We don't publish prices. Send us your store URL and we'll reply by message with a written, fixed quote after a short audit.
Conclusion
If your store feels slow on a phone, fix it before you think about rebuilding it: measure, clear out unused apps and leftover code, sort the images and tidy the scripts, then measure again. Only move to a new theme if the current one is very old or has been patched beyond repair. If you'd like us to look at your store, send the URL and the pages that matter most. Message us on WhatsApp at +91 73482 28167 and you get a fixed written quote within one working day.

