Web/Guru

Why is my Shopify store slow? 8 causes we find in audits, and how to fix them

The eight causes of slow Shopify stores we find most in audits: app bloat, blocking scripts, lazy heroes, layout shift, heavy themes, with a fix for each.

Published
Updated
October 27, 2026
Read time
9 min read
Written by
Webguru
Why is my Shopify store slow? 8 causes we find in audits, and how to fix them
/On this page01 / 11

Shopify hosts your store on a fast global network, so when a Shopify store is slow, the cause is almost always something added on top: apps, scripts, images and theme code. The good news is that these are fixable, and most stores have the same handful of problems.

These are the eight causes we find most often when we audit Shopify stores for speed, in the order we usually fix them. If you want to know which ones apply to your store, our free Shopify store audit checks six of them automatically in about a minute.

First, measure the right thing

Google judges speed with three Core Web Vitals, measured on real visitors' devices:

MetricWhat it measuresGood
Largest Contentful Paint (LCP)When the biggest element, usually the hero image, appears2.5 s or less
Interaction to Next Paint (INP)How quickly the page reacts to taps and clicks200 ms or less
Cumulative Layout Shift (CLS)How much the layout jumps while loading0.1 or less

Check them in PageSpeed Insights: the top section shows real-visitor data when your store has enough traffic, and the lab score below helps you find causes. Test your home page, a collection and a product page, on mobile. A lab score that changes from run to run is normal; real-visitor data is what counts.

1. Too many apps, and code from apps you removed

This is the most common cause by far. Each app that adds something to your storefront (reviews, upsells, popups, chat, currency switchers, wishlists) loads its own JavaScript and often CSS and fonts. Ten apps loading code is common; we regularly see 20 or more.

Uninstalling an app doesn't always remove its code. Older apps pasted snippets into theme.liquid or created script tags that keep loading.

Fix: list every script on your home page (Chrome DevTools > Network > JS, sorted by domain). For each one, decide: needed, replaceable by a theme feature, or dead. Remove dead code from the theme, and combine apps that do the same job.

2. Render-blocking scripts in the head

A <script src="..."> in the <head> without async or defer stops the browser from drawing the page until that file has downloaded and run. On a phone on a slow connection, three of these can add seconds before anything appears.

Fix: add defer to scripts that don't need to run first. If an app requires a blocking script, ask whether it offers an app embed (theme app extension) instead.

3. The hero image is lazy-loaded or too large

Your hero image is usually the LCP element. If it has loading="lazy", the browser deliberately waits before fetching it. If it's a 4000-pixel PNG, it takes a long time to arrive even when it starts early.

Fix: set the first section's image to loading="eager" and fetchpriority="high", use Shopify's image_url with a sensible width and image_tag with widths so phones get a small file, and prefer JPG or WebP for photos.

4. Images without width and height (layout shift)

When an image has no dimensions, the browser can't reserve space for it, so text and buttons jump down as it loads. That's poor CLS, and it makes shoppers tap the wrong thing.

Fix: Shopify's image_tag filter adds width and height automatically. For app widgets that load late (review stars, payment badges), reserve space with a minimum height in CSS.

5. Heavy theme code and a slow first response

If the server takes more than a couple of seconds to return the page, the delay comes from the theme's Liquid: loops over every product in a collection, mega menus rendering hundreds of links, or many sections on one page. Large HTML (over about 650 KB) is a sign of the same problem, often from inline JSON or duplicated menus for desktop and mobile.

Fix: use the Shopify Theme Inspector for Chrome to see which Liquid files take the longest. Paginate loops, limit what menus render, and remove sections nobody sees.

6. An old theme, and jQuery

Vintage themes (Debut, Brooklyn, Narrative and others built before Online Store 2.0) weren't built for today's performance expectations, and many still load jQuery. They can't use app blocks, so every app injects code.

Fix: moving to a current theme is the biggest single speed upgrade for most older stores, and a good moment to drop apps. If a move isn't possible yet, remove jQuery-dependent code piece by piece.

7. Sliders, videos and fonts above the fold

Auto-playing hero videos, multi-slide carousels and four or five font families all compete for bandwidth at the moment the page matters most.

Fix: use one strong static hero image, load video only on interaction or below the fold, and limit yourself to two font families with font-display: swap.

8. Tracking loaded twice

Many stores load Google and Meta tags through Google Tag Manager in the theme and through Customer Events pixels. That doubles the scripts and often double-counts conversions too.

Fix: since August 26, 2026, purchases can only be tracked through Customer Events pixels, so move tracking there and remove the theme tags you no longer need. Our Thank you page tracking guide explains how.

The order we fix things in

  1. Remove dead app code and unused apps.
  2. Eager-load and resize the hero image.
  3. Defer render-blocking scripts.
  4. Add image dimensions and reserve space for late widgets.
  5. Consolidate tracking into Customer Events.
  6. Profile and simplify slow Liquid.
  7. Plan a theme move if you're on a vintage theme.

Steps 1 to 4 are usually a few days of developer time and fix most of the problem. Check PageSpeed Insights again after each change, and give real-visitor data 28 days to update.

Getting help

If you'd rather have it done, our Shopify developers do speed work as part of Shopify maintenance and Shopify SEO projects. Start with the free store audit to see your score and the three issues costing you the most.

/Tags#Shopify#Speed#Core Web Vitals

Written by

Webguru

Engineering Team

Webguru.pk is a Shopify development team in Lahore, Pakistan, building stores, custom apps and integrations for brands worldwide.

/Share

Need a hand with this?

We design, build and fix this kind of work for Shopify, SaaS and AI products.

/faqs

Slow Shopify stores: Frequently Asked Questions

No. Shopify serves stores from a global CDN and its servers respond quickly. Slow Shopify stores are almost always slowed down by apps, scripts, images and theme code added on top.

Focus on the Core Web Vitals from real visitors rather than the lab score: LCP of 2.5 seconds or less, INP of 200 ms or less and CLS of 0.1 or less. Many fast, profitable stores have a mobile lab score in the 50s or 60s.

Apps that add features to your storefront load their own code, so each one adds some weight. Apps that only work in the admin, such as most inventory or accounting apps, don't affect storefront speed.

Apps built with theme app extensions are removed cleanly. Older apps that edited theme files or used script tags can leave code behind, which a developer needs to remove by hand.

Usually, if you're on a vintage theme. Modern Online Store 2.0 themes are built for Core Web Vitals and let apps use app blocks instead of injecting code. The gain disappears if you install the same apps again without review.

Lab tests show changes immediately. The real-visitor Core Web Vitals in PageSpeed Insights and Search Console are a rolling 28-day average, so expect about a month before they fully reflect your fixes.

Is your store slower than it should be?

Run the free audit to see which of these causes apply, or ask us for the full audit with a fix plan.

or write to+44 7882 755642