How to Speed Up a Slow Shopify Store Without Deleting Every App
Most slow Shopify stores are held back by apps, leftover code and heavy themes, not by Shopify itself. Here is how to find the real cause and fix it in the right order.

A slow Shopify store is rarely Shopify's fault. The platform's hosting and CDN are fast. What slows a store down is everything layered on top: apps, scripts, a theme built to demo every feature, and product photos uploaded straight from a camera. The good news is that you can usually win back most of the speed without ripping out the apps that actually make you money. Here is how I approach it.
Why Shopify stores get slow
On the stores I audit, the causes are remarkably consistent. Roughly in order of how often they are the main culprit:
- App scripts. Every review widget, upsell popup, chat bubble and loyalty badge loads its own JavaScript, often on every page, whether that page uses it or not.
- Leftover code from uninstalled apps. Older apps injected snippets directly into theme files. Uninstalling the app does not always remove them, so you keep paying the performance cost of software you stopped using months ago.
- Heavy themes. Themes designed to sell on a theme store ship with sliders, animations, mega menus and a dozen features you never switched on, and some of that code loads anyway.
- Unoptimised images. A 5 MB hero photo, or a product gallery that loads every image at full size before anyone scrolls.
- Too many fonts. Three families in four weights each is twelve files before a single word renders properly.
- Tracking pixels. Meta, TikTok, Google, Pinterest, a heatmap tool, an affiliate network. Each one is small. Together they compete with your own code for the browser's main thread.
None of these is exotic. That is exactly why they pile up: each one felt harmless when it was added.
Diagnose before you delete anything
The mistake I see most often is a store owner uninstalling apps at random, losing features, and seeing no real improvement. Measure first, so you know which change is worth making.
Shopify's web performance report
The web performance report in the Shopify admin shows your Core Web Vitals based on real visits to your store, not a lab simulation. It also marks events such as app installs and theme changes on the timeline, so you can often see exactly when things got worse. If LCP jumped the week you installed a new app, you have your first suspect.
PageSpeed Insights field data
Run your homepage, a collection page and your best-selling product page through PageSpeed Insights. Read the field data at the top, which reflects how real Chrome users experienced the page, before the lab score underneath. The targets are LCP at or under 2.5 seconds, INP at or under 200 milliseconds and CLS at or under 0.1. If those terms are new, my Core Web Vitals guide for business owners explains each one in plain English.
The Shopify Theme Inspector
Shopify's Theme Inspector extension for Chrome profiles how long your Liquid takes to render on the server, broken down by file. It is the quickest way to find a section or snippet doing something expensive, such as looping through every product in a large collection just to build a menu.
Finally, open Chrome DevTools, go to the Network tab, filter by JavaScript and sort by size. Anything loaded from a domain you do not recognise deserves a question.
Fix 1: clean up app debris
Start with the free win. Open the theme editor and check App embeds in theme settings. Switch off embeds for any app you no longer use. Then, on a duplicate of your live theme, search the code for the names of apps you have uninstalled. Old snippets, script tags and stylesheets that reference dead apps can go. Preview the duplicate, click through the key pages, then publish.
Next, review the apps you still pay for. For each one, ask: does it make or save more money than it costs in speed? Some apps earn their place. A reviews app that loads on every page, including your blog and your contact page, probably does not need to.
Fix 2: load scripts only where they are needed
This is how you keep your apps and still get faster. Apps built on theme app extensions let you place app blocks in specific sections or templates instead of loading everywhere. A size guide only needs to be on product pages. A store locator only needs to be on one page. Where an app still injects its script globally, ask the developer whether it can load conditionally. Good app developers will say yes.
The same thinking applies to tracking. Move marketing tags into Shopify's customer events, where pixels run in a sandbox rather than directly on the page, and remove duplicates. I regularly find the same Meta pixel installed twice, once by an app and once by hand.
Fix 3: images
Shopify's CDN will resize and convert images for you if the theme asks for them correctly. Check that your theme uses the image_url filter with a sensible width and the image_tag filter, which outputs responsive srcset markup. Make sure the hero or first product image is not lazy-loaded, because it is usually your LCP element, and that everything below the fold is. And upload sensibly sized originals; there is no reason for a 6,000-pixel-wide product photo.
Fix 4: fonts
Pick one family, two weights at most, for body and headings. Use Shopify's font library or host fonts in the theme so they come from the same CDN as everything else, preload the one used above the fold, and set font-display: swap so text appears immediately. It is a small change that often fixes visible layout shift on load.
Fix 5: interaction speed
If LCP is fine but the store feels sluggish when people tap a variant or open the cart drawer, the problem is INP. That is almost always too much JavaScript fighting for the main thread, usually the same app and pixel stack from earlier. I cover the diagnosis in detail in INP explained, and the approach is the same on Shopify as anywhere else.
The order I actually work in
- Remove leftover code from uninstalled apps.
- Switch off unused app embeds and duplicate pixels.
- Fix the hero image and whatever else loads above the fold.
- Scope the remaining app scripts to the pages that need them.
- Trim fonts.
- Profile Liquid and fix slow sections.
- Re-measure with field data a few weeks later.
That last step matters. Field data in PageSpeed Insights covers a rolling 28-day window, so a fix made today will not be fully reflected for a few weeks. Shopify's own report responds faster, which makes it the better place to watch for early signs.
When to rebuild the theme instead
Sometimes cleanup is not enough. If the theme is several years old, predates Online Store 2.0, has been edited by four different freelancers, or loads a large JavaScript bundle before anything works, patching it costs more than replacing it. Signs you are there:
- Every fix breaks something else.
- Nobody knows what half the snippets do.
- Your marketing team cannot change a page without a developer.
- Field data stays poor after the cleanup above.
A rebuild does not have to mean an expensive bespoke project. A lean, modern theme with a small set of custom sections your team can actually edit is often faster and easier to live with than the heavily customised theme it replaces. For most stores, going headless is not the answer to a speed problem; I explain why in Shopify Hydrogen vs Liquid themes.
Why it is worth the effort
Speed is not a vanity metric. A faster store means more people see your products before they give up, and more of the ones who tap "Add to cart" make it to checkout. If you want the commercial case in more detail, read the hidden ROI of a fast website. For the patterns that slow sites down beyond Shopify, ten common web performance mistakes is the place to start.
Store feeling sluggish and not sure which app is to blame? Send me your store URL and I will tell you where the time is going. You can also see stores I have built on my projects page.




