You opened Google PageSpeed Insights, ran your store URL, and felt your stomach drop. A score of 22 on mobile. Maybe 34. You've got a good product, decent traffic, a theme you paid for, and Google is telling you your store is basically unusable on mobile.
Here's the thing: it's almost never the theme's fault. And it's almost never something you did wrong on purpose. It's the slow accumulation of small decisions that made total sense at the time: installing an app here, adding a chat widget there. Together, they quietly buried your performance.
I've audited over 47 Shopify stores in the past two years. The causes are almost always the same seven things. Let me walk through each one.
| Mobile score | What it means | Revenue impact |
|---|---|---|
| 0-49 | Poor: most visitors experience slow loads | Significant daily revenue loss |
| 50-69 | Needs improvement: noticeable lag on mobile | Moderate impact on conversions |
| 70-100 | Good: fast experience for most users | Optimised for conversions |
Cause 1: Too many apps firing JavaScript on every page
App script bloat: the #1 reason Shopify stores are slow
Every app you install adds JavaScript to your store. That JavaScript loads on every single page: your homepage, your product pages, your checkout, even when the app has no function on that page whatsoever.
A review app fires on your homepage even though there are no reviews there. A currency switcher loads on your blog. A loyalty points widget loads on your 404 page. None of this is visible to you. All of it is visible to Google and to your customers' browsers.
In practice, stores with more than 12-15 active apps almost always score below 40 on mobile PageSpeed. I've seen stores with 23 apps scoring 14 on mobile. Not because any one app was catastrophically bad, but because 23 small problems add up to one very large one.
Cause 2: Large, uncompressed images
Images that are too large are the easiest win
Images are typically 50-80% of a page's total weight. A single hero image uploaded at 4MB can add 2-3 seconds to your load time on its own. Most merchants upload images straight from their camera or a designer without ever compressing them.
The problem gets compounded when you have 30 product images on a collection page, all loading at full resolution before the customer has even scrolled past the first row.
Cause 3: Render-blocking scripts
Scripts that stop your page from loading until they finish
Some scripts load synchronously, meaning your browser stops everything and waits for that script to fully download and execute before rendering any more of the page. This is called render-blocking, and it's invisible to you but devastating to your load time.
Common culprits: old Google Analytics implementations, Facebook
Pixel added the wrong way, chat widgets loaded in the
<head>, and certain review app scripts.
defer or async attributes,
or moved to load after the main content. Your chat widget does not
need to block your hero image from loading. Neither does your
review app.
Not sure what's slowing your store?
I'll audit your store before we even speak: free, no obligation.
Cause 4: A poorly optimised theme
Your theme may be loading features you're not using
Many premium Shopify themes come packed with features: sliders, animations, video backgrounds, parallax effects, all of which load their JavaScript and CSS regardless of whether you've enabled those features. A theme you bought for $180 can be loading 800KB of unused code on every page.
Shopify's own free themes (Dawn, Sense, Craft) are substantially leaner than most premium themes and often outperform them on PageSpeed scores.
Cause 5: Unoptimised font loading
Custom fonts add more load time than most people realise
Fonts seem small but they block text from rendering until they're downloaded. If you're loading 4 font weights from Google Fonts, that's 4 separate network requests before your customer can read a single word on your page.
This shows up in Core Web Vitals as a high LCP (Largest Contentful Paint) score, meaning the main content of your page takes too long to become visible.
font-display: swap so text renders immediately in
a fallback font while the custom font loads. Preload your most
important font file. Limit yourself to 2 font weights maximum.
Self-host fonts instead of loading from Google Fonts where
possible.
Cause 6: Too many third-party tracking scripts
Pixels, tags, and trackers that accumulate over time
Every marketing channel you've tried has probably left a script behind. Facebook Pixel, Google Analytics, TikTok Pixel, Pinterest Tag, Klaviyo, Hotjar, Lucky Orange: each one adds weight. And unlike apps, these scripts are often forgotten when you stop using a channel.
I've audited stores still loading the TikTok Pixel six months after the merchant stopped running TikTok ads. Pure dead weight.
<head> section and Google
Tag Manager container. Remove any scripts for channels you're no
longer actively using. Consolidate remaining scripts into Google
Tag Manager if you haven't already. It loads asynchronously and
is significantly cleaner than individually pasted scripts.
Cause 7: Failing Core Web Vitals
Google's three metrics that directly affect your SEO ranking
Core Web Vitals are Google's official measurements of user experience, and since 2021, they're a direct Google ranking factor. A failing score here means your store is being actively penalised in search results, even if your content and products are excellent.
The three metrics are: LCP (Largest Contentful Paint: how long until the main content loads), CLS (Cumulative Layout Shift: how much the page jumps around while loading), and INP (Interaction to Next Paint: how quickly your page responds to clicks and taps).
How long does it take to fix a slow Shopify store?
For most stores, a proper speed optimization takes 5-7 working days. This includes a full audit, making all changes in preview mode (so your live store is never affected), and delivering a before/after report with every change documented.
The work itself, once you know what needs fixing, is systematic. App audit, image compression, script cleanup, Core Web Vitals fixes. Done properly, most stores move from a mobile score of 20-40 to 70-85 within that window.
Can I fix my Shopify store speed myself?
Yes, for some of it. Removing unused apps, compressing images before upload, and deleting dead tracking scripts are all things you can do yourself without touching any code. These changes alone can move a score by 15-20 points in some cases.
The harder parts (JavaScript deferral, Core Web Vitals fixes, theme code cleanup, lazy loading implementation) require code access and Shopify Liquid knowledge. If you're not comfortable in your theme code, those are the parts worth getting help with.
What should I do right now?
Start here: run your store URL through Google PageSpeed Insights. Look at your mobile score. Look at the "Opportunities" section. It will tell you the biggest wins in order of impact.
Then go through your apps. If you have more than 12 installed, you almost certainly have scripts you don't need firing on pages they have no business being on.
If you want someone to do this for you, thoroughly and with zero risk to your live store, that's exactly what I do. I personally audit every store before our first call so I can tell you exactly what's wrong before you commit to anything.
Get your store audited (free)
20-minute call. I review your store first. You get the truth about your speed before spending a penny.