Shopify Theme Performance: 10 Mistakes That Slow Down Your Store
Three of these (app bloat, heavy images, render-blocking scripts) are the first places to look. Here are the 10 theme-performance mistakes we check for on every audit, why each one matters, and the honest fix: it's almost always subtraction, not another app.

The short version: three of these — app bloat, heavy images, and render-blocking scripts — are the first places to look. Here are the 10 theme-performance mistakes we check on every audit, why each one matters, and the honest fix: it's almost always subtraction, not another app.
We audit and fix Shopify store speed, so this is the actual list we run against. If you want the framework behind why these matter — the metrics, and which performance numbers to trust — start with improving Core Web Vitals without ripping out your theme. This post is the concrete culprits.
For context on where you stand, start with your own numbers: Shopify's web performance reports show your store's real-user LCP, INP and CLS, and Google rates LCP as good at 2.5 seconds or less. If you're looking at a Lighthouse or PageSpeed Insights lab score instead, 90–100 is rated good, 50–89 needs improvement and 0–49 is poor. If your store falls short, here's what's usually behind it.
1. Heavy, bloated theme code
Feature-crammed and ageing themes carry large amounts of unused Liquid, CSS, and JavaScript loaded "just in case." A theme built to do everything ships code for features you don't use — on every page. Inefficient Liquid loops and unminified assets pile on top. To be clear, this is rarely the theme's fault so much as how it's been built and extended over time — build quality matters more than which base theme you chose. But an old, heavily-modified theme is a common starting point for slowness.
2. Unused JavaScript
JavaScript is a major contributor to slow Shopify themes, and a lot of it does nothing. A whole library loaded for one small widget. Leftover code from a feature you removed a year ago. A legacy dependency kept alive for a single plugin. Every kilobyte still gets downloaded, parsed, and executed on the main thread — including the parts nothing ever calls. Dead code isn't free; it's just invisible.
3. Render-blocking scripts and styles
Even necessary code slows you down if it blocks the first paint. Render-blocking scripts tend to pile up on stores that are a few years old, and each one can hold back what appears on screen. Scripts sitting in the <head> without defer or async, and CSS that hasn't been split into critical-plus-deferred, hold the entire page hostage while they load.
4. App bloat
Front-end apps can add JavaScript to every page, whether or not the visitor uses the feature. Hyperspeed's analysis of live Shopify stores gives one view of the scale, from a limited sample: across 422 stores with at least one detectable app, the median was 4 apps, and across the 273 it tested for speed, average mobile PageSpeed scores were about 53 with 1–2 apps and about 38 with 16 or more. (Hyperspeed sells a speed app and counts only apps visible in page source, so treat this as one sample, not a rule for every store.) Uninstalling an app can also leave orphaned script tags behind, so audit your apps — and confirm removed ones left nothing behind.
5. Too many third-party scripts
Chat widgets, marketing pixels, A/B tools, review embeds, live Instagram feeds — each is a connection to a third-party server you don't control, and your page often waits on the slowest one. A live social feed firing on page load is a textbook culprit. Every one you add is a bet that their infrastructure is as fast as yours; usually it isn't.
6. Unoptimized images
Images are often the heaviest files on a page, so oversized, uncompressed images are an easy place to lose speed. The usual sins: serving a 3000px image into a 400px slot, using PNG or JPEG where WebP would be smaller (Google puts lossy WebP at 25–34% smaller than comparable JPEGs), and omitting width/height (which also causes layout shift). Right-size, modern-format, and compress every image, and use Shopify's image transforms to serve the correct dimensions.
7. Lazy-loading the wrong things
Lazy-loading is right for below-the-fold images and wrong for your hero. Lazy-loading the LCP image is a disaster — it adds a script-checking delay that pushes LCP straight into the red. The opposite mistake is just as common: no lazy-loading at all, so every below-fold image competes with the hero for bandwidth on first load. The fix is the split — eager-load (ideally preload) the hero, lazy-load everything below it.
8. Too many web fonts, loaded the wrong way
Fonts can hold back text until they download, and they add up fast: every weight and style is a separate file, which matters most on slower connections. The common mistakes are loading weights you never use, pulling from a third-party font host (which adds a DNS lookup and connection) instead of self-hosting .woff2 in Shopify's asset library, and skipping font-display: swap so visitors stare at invisible text while the font loads.
9. Heavy hero sliders and autoplay carousels
A large hero image is often the element that sets LCP — and a carousel or slider multiplies it, because each slide needs its own image, plus scripts and animation to run the thing. Autoplay video is heavier still. If a slider isn't clearly earning its place, a single static hero is the lighter option.
10. A bloated homepage and oversized DOM
Cramming every section, mega-menu, and widget onto one page inflates the DOM — the total number of HTML elements — which makes layout and rendering measurably slower, especially on mobile. And more sections means more images, more scripts, and more nodes all competing. A long homepage feels productive to build; it's often just heavy. Ship the sections that earn their place and cut the rest.
How to actually fix it: subtract first
Notice the pattern across all ten — the fix is almost always removal, not addition. Which is exactly why "install a speed-booster app" is the wrong instinct: you'd be adding another third-party script to solve a problem caused by too many third-party scripts.
Work in impact order, not alphabetical order:
- Audit and remove apps (mistakes 4 and 5) — start here.
- Fix images and the hero (6, 7, 9) — next, and mostly mechanical.
- Then trim JS, fonts, and render-blocking (2, 3, 8) — real gains, more technical.
- Polish DOM and theme code last (1, 10) — worth it, but not before the big three.
And measure the right number. Don't chase a single lab score up and down. Judge every change on your real-user Core Web Vitals (Shopify's web performance reports and Search Console) (again, the framework post covers how). Speed isn't a vanity metric: a slow store is one of the top reasons stores lose sales despite growing traffic, and it quietly undermines even a well-built product page — a page that's still loading converts nobody.
The bottom line
Slow Shopify stores are rarely slow for one dramatic reason. They're usually slow because several of these mistakes have accumulated quietly over years of adding apps, sections, fonts, and "just one more" pixel.
The good news: the fix is almost always subtraction. Remove the app bloat, compress the images, kill the slider — and you can often make real progress without a rebuild.
We audit and fix Shopify store performance — app and script audits, image and font optimisation, and the field-data measurement that proves the lift. See our Shopify store development work, or talk to us about your store's speed.
Frequently asked questions
What slows down a Shopify store the most?
App bloat and heavy images are the first two things to check. Front-end apps add JavaScript to your pages; in one analysis of 273 live Shopify stores by Hyperspeed (a company that sells a speed app), average mobile PageSpeed scores were lower in stores with more detectable apps. Oversized, uncompressed images are often the heaviest files on a page. Fix those two before you touch anything smaller.
How many apps is too many for store speed?
There's no hard cap and no official number. In Hyperspeed's sample of 273 live Shopify stores, average mobile PageSpeed scores were about 53 for stores with 1–2 detectable apps and about 38 for stores with 16 or more, but that's one limited sample, not a rule for every store. Measure your own store before and after removing an app, and check that uninstalled ones didn't leave orphaned scripts behind.
Do web fonts really slow down my store?
Yes. Fonts can hold back text until they download, and every weight or style is another file to fetch, which adds up on slower connections. Load only the weights you actually use, add font-display: swap so text shows immediately, and self-host .woff2 files rather than pulling from a third-party font host that adds a DNS lookup.
Should I use a hero slider or carousel on my homepage?
Usually not. The hero image is often the element that sets LCP, and a carousel multiplies it with extra images, scripts, and animation. A single static hero is usually the lighter, safer choice for speed — and whatever you do, never lazy-load the hero, which delays LCP.
Will a speed-optimization app fix my slow store?
Sometimes partly — but be careful, because the irony is that many 'speed booster' apps add yet another third-party script. The most reliable performance fix on Shopify is subtraction: remove unused apps and scripts, compress images, and trim fonts. Reach for an app only for a specific job (like image compression) that it does without piling on overhead.
How do I know if my theme is the problem?
Measure the right number first — check your real-user Core Web Vitals in Shopify's web performance reports and Google Search Console, and use lab tools such as Lighthouse only to test a fix. Then audit against the ten mistakes here. Usually it isn't the base theme at all but what's layered on top (apps, images, scripts) — build quality matters far more than which theme you started from.
Building something on Shopify?
We design, build, and maintain Shopify apps, stores, and AI products — to the standard this article describes.








