Why Your Shopify Store Is Slower Than You Think (And What to Do About It)
Go to PageSpeed Insights, type in your Shopify store URL, and hit analyze. If you're like most Shopify store owners, the number that comes back will make you uncomfortable.
The average Shopify store scores between 25 and 45 on mobile. That's not a failing grade — it's a flashing warning sign. Every second your store takes to load, you're losing customers. Google's own data shows that 53% of mobile visitors leave a site that takes more than 3 seconds to load.
Here's what's slowing you down — and what you can actually do about it.
Problem 1: Theme Bloat
The Symptom
Your store takes 4+ seconds to load on mobile, even on pages with minimal content. The homepage feels sluggish. The product page takes forever to become interactive.
Why It Happens
Most Shopify themes are built to be everything for everyone. They ship with code for sliders, mega menus, animations, video backgrounds, quick-view modals, and dozens of other features — whether you use them or not.
A premium theme from the Shopify Theme Store might load 300–500KB of JavaScript and 200KB+ of CSS on every single page. Your store only uses a fraction of those features, but visitors download all of it.
The Fix
- Switch to a lightweight theme. Dawn (Shopify's free default) is significantly faster than most premium themes. If you need more features, look for themes built on Shopify's Online Store 2.0 architecture — they tend to load less unused code.
- Disable features you're not using. In your theme settings, turn off quick-view, animations, and any section type you haven't placed on a page. Some themes still load the JavaScript for disabled features, but it's worth checking.
- Audit your theme's JavaScript. Open Chrome DevTools (F12), go to the Coverage tab, and reload your page. It'll show you exactly how much of each script is actually being used. If your theme loads 400KB of JS and only 80KB is executed — that's the bloat.
Problem 2: Too Many Apps
The Symptom
Your store was fast when you first launched. Then you installed a reviews app. Then an email popup. Then an upsell widget. Then a loyalty program. Now it's slow, and you're not sure which app is the culprit.
Why It Happens
Every Shopify app that touches your storefront injects its own JavaScript. Some inject their own CSS too. Most load these scripts on every page, even where the app's functionality isn't needed.
Here's what a typical app stack looks like in terms of added weight:
| App Type | Typical Script Size | Loads On |
|---|---|---|
| Reviews (Judge.me, Loox) | 50–150KB | Every page |
| Email popup (Klaviyo, Privy) | 80–200KB | Every page |
| Upsell/cross-sell | 40–100KB | Every page |
| Loyalty program | 60–120KB | Every page |
| Live chat widget | 100–300KB | Every page |
| Analytics/tracking | 30–80KB each | Every page |
Five apps can easily add 400–800KB of JavaScript to every page load. That's on top of your theme's code, Shopify's own scripts, and your images.
The Fix
- Audit ruthlessly. Go to Settings > Apps and review every installed app. For each one, ask: "Is this app generating enough revenue to justify slowing down my store?" If you can't answer confidently, uninstall it.
- Check for leftover code. Uninstalling a Shopify app doesn't always remove the code it injected into your theme. Go to Online Store > Themes > Edit Code, and search for the app's name in your theme files. Remove any leftover snippets.
- Consolidate. If you're running three separate apps for reviews, UGC, and loyalty, look for a single platform that handles all three. Fewer apps means fewer scripts.
- Defer non-critical scripts. If you have access to a developer, ask them to lazy-load app scripts so they only execute after the main page content is visible. This won't reduce the total download size, but it makes the page feel faster.
Problem 3: Unoptimized Images
The Symptom
Product pages take a long time to load. Scrolling feels janky. Your PageSpeed report screams about "properly size images" and "serve images in next-gen formats."
Why It Happens
You uploaded the original photos from your photographer — 3000x4000 pixel images at 2–5MB each. Shopify's CDN does some automatic resizing, but it can't fix fundamentally oversized source images served in the wrong context.
A product grid showing 200x200 thumbnails doesn't need a 3000-pixel source image. A mobile screen that's 390 pixels wide doesn't need an image optimized for a 27-inch monitor.
The Fix
- Resize before uploading. No product image needs to be wider than 2048 pixels. For most use cases, 1200–1600 pixels is plenty. Resize your images before uploading to Shopify.
- Use WebP or AVIF format. Shopify's CDN can serve WebP automatically if your theme requests it correctly. Check that your theme is using Shopify's
image_urlfilter with proper sizing parameters. - Implement lazy loading. Images below the fold (not visible when the page first loads) should only load when the visitor scrolls near them. Most modern Shopify themes support this — make sure it's enabled.
- Compress aggressively. Use a tool like TinyPNG or Squoosh before uploading. You can typically reduce file size by 60–80% with no visible quality loss.
Problem 4: Third-Party Scripts
The Symptom
Your own code is fine, but something external is dragging your scores down. PageSpeed Insights shows "reduce the impact of third-party code" as a major issue.
Why It Happens
Beyond apps, most stores load additional third-party scripts: Google Analytics, Facebook Pixel, TikTok Pixel, Google Tag Manager, Hotjar, chat widgets, affiliate tracking. Each one makes an external network request, downloads JavaScript, and executes code.
These scripts are often "render-blocking" — meaning the browser can't show your page until they finish loading. Three or four tracking pixels can add 1–2 seconds to your load time.
The Fix
- Audit your tracking scripts. Open Google Tag Manager (if you use it) and review every tag. Are you still tracking for a Facebook campaign that ended six months ago? Remove it.
- Use server-side tracking where possible. Shopify supports server-side events through its Customer Events API. Moving Facebook and Google tracking to server-side reduces client-side JavaScript and improves both speed and data accuracy (no ad blockers).
- Delay non-essential scripts. Tracking pixels don't need to fire before the page is visible. Use a script loader that delays execution until after the page has rendered.
- Consolidate with Google Tag Manager. Rather than injecting five separate tracking scripts, use GTM to manage them all through a single container. It won't reduce the total code, but it gives you centralized control.
The Nuclear Option: Go Headless
If you've optimized everything above and your store is still slow — or if you're doing $500K+ in annual revenue and page speed directly impacts your bottom line — it might be time to consider a headless architecture.
Headless means keeping Shopify as your backend (products, orders, checkout) but replacing the frontend with a custom-built storefront. Instead of Shopify's Liquid templates and theme engine, you get a modern React or Next.js frontend that loads only exactly what's needed.
The result: PageSpeed scores of 90+ on mobile, sub-second load times, and a shopping experience that feels as fast as a native app.
It's not cheap, and it's not for everyone. But for high-volume stores where every percentage point of conversion rate is worth thousands of dollars per month, the ROI is clear.
Start Here
You don't need to rebuild your entire store tomorrow. Start with the highest-impact fix:
- Run PageSpeed Insights on your homepage and top product page.
- Count your apps. If you have more than 8–10, you almost certainly have unnecessary ones.
- Check your images. Open a product page, right-click an image, and check its dimensions. If it's 3000+ pixels wide, you have low-hanging fruit.
- Review your third-party scripts. Remove anything you're not actively using.
These four steps take less than an hour and can measurably improve your store's performance.
Want a full performance audit of your Shopify store? Reach out — we'll analyze your site and show you exactly where the speed is hiding.