The Quick Fix: Before We Dive Into the 7 Reasons
If you're here because your Shopify store is slow and you just want it fixed — you don't need to understand all 7 reasons right now. Thunder Page Speed Optimizer handles the most impactful fixes automatically.
It defers render-blocking scripts, inlines critical CSS, optimizes image loading, and fixes font delivery — addressing reasons #3, #4, and #5 below (the hardest ones to fix manually) plus parts of #1 and #2. Most stores see a 27+ point speed score improvement within minutes.
Fix your slow Shopify store in 30 seconds
Install Thunder
One click from the app store
Enable optimizations
Toggle on what you need
Watch your score jump
Average: +27 points
Free plan available · No credit card required · 30-second install
Want to understand why your store is slow? Keep reading — we'll break down each reason with what Thunder fixes automatically and what you can tackle manually. For an even deeper walkthrough, check out our complete speed optimization guide.
How Fast Is Your Shopify Store?
Get a free speed report with personalized recommendations. Compare your store against industry benchmarks.
Free · Takes ~60 seconds · Report delivered to your inbox
Analyzing your store...
This usually takes 30-60 seconds
Report Sent!
Check your inbox in 2-3 minutes. We've sent a detailed speed report with personalized recommendations.
Too Many Apps Injecting Scripts
This is the #1 reason Shopify stores are slow. Every app you install can inject JavaScript and CSS into your storefront — and most do. A review app adds its widget script. A pop-up app adds its trigger script. An analytics app adds tracking code. A chat widget loads its entire SDK.
Each app typically adds 100–500ms of load time. With 10-15 apps (common for mid-size stores), you're looking at 1–5 seconds of added load time just from app scripts. That's before your theme even finishes rendering.
The worst part? Many of these scripts are render-blocking — they prevent your page from displaying anything until they've finished downloading and executing. Your customer stares at a blank screen while 15 app scripts fight for bandwidth.
⚡ Thunder Fix (Automatic)
Thunder defers all app scripts so they load after your page renders. Your content appears instantly while app functionality loads in the background. You keep every app — they just stop blocking the initial page load. This alone can improve your speed score by 15-25 points.
🔧 Manual Fix (Time-Consuming)
Audit every installed app. Uninstall ones you don't use. For remaining apps, manually check your theme's theme.liquid and snippets folder for their script injections. Try adding defer to each — but be warned, many apps break when deferred because they depend on load order. Budget 4-8 hours for a proper app audit.
Pro tip: Uninstalling an app doesn't always remove its code. After removing an app, search your theme files for the app's name or domain — many leave orphaned script tags and Liquid snippets behind that continue to slow your store. For a step-by-step walkthrough of cleaning these up, read our guide on how to speed up your Shopify store.
Heavy, Bloated Theme
Your theme sets the performance baseline for your entire store. A lightweight theme like Shopify's Dawn starts with a speed score of 80-95 out of the box. Many popular third-party themes start at 40-60 — before you add a single app or product.
Heavy themes ship with features you may never use: complex mega-menus, animated sliders, multiple layout options, built-in pop-ups, and parallax scrolling. All that code loads on every page whether you use those features or not. Some themes ship 500KB+ of CSS and 300KB+ of JavaScript — massive payloads that must be downloaded and parsed before your page becomes interactive.
The telltale sign: your store is slow even with zero apps installed. If that's the case, your theme is the bottleneck. Check our fastest Shopify themes guide to see how your theme compares.
⚡ Thunder Fix (Automatic)
Thunder inlines only the critical CSS needed for the initial viewport and defers the rest. It also defers your theme's JavaScript. This means even a heavy theme renders fast because the browser only processes what's needed for the first paint. Typical improvement: 10-20 points even on bloated themes.
🔧 Manual Fix (Major Project)
Switch to a lighter theme (Dawn, Refresh, Craft, Sense). This is a significant project — expect 20-40 hours of work to migrate content, customize design, and test everything. Alternatively, hire a developer to audit and trim your current theme's unused CSS/JS (8-16 hours). Either way, it's expensive and risky.
Theme Performance Comparison
*Scores are approximate, tested with zero apps on a fresh install
Unoptimized Images
Images are often the heaviest elements on a Shopify store. A single unoptimized product photo can be 2-5MB — larger than your entire theme's code. Multiply that by a homepage slideshow with 5 images, and you're asking visitors to download 10-25MB before seeing your store.
Common image problems on Shopify stores include: using PNG when JPEG/WebP would work, uploading images at 4000×4000px when they display at 800px, not lazy-loading below-the-fold images, missing width and height attributes (causing layout shift), and not using Shopify's built-in image CDN for responsive sizes. Our Shopify image optimization guide covers the full checklist.
Images directly impact two critical metrics: Largest Contentful Paint (LCP) — usually your hero image — and Speed Index — how quickly visible content fills the screen. If your images are the main culprit, our Shopify loading slow fixes article covers image-specific solutions in detail.
⚡ Thunder Fix (Automatic)
Thunder automatically lazy-loads all offscreen images, preloads your hero/LCP image for faster rendering, and adds proper width/height attributes to prevent layout shift. It also leverages Shopify's image CDN to serve correctly sized images. No manual work needed.
🔧 Manual Fix (Ongoing Effort)
Compress all images before uploading (use TinyPNG or Squoosh). Resize to actual display dimensions — don't upload 4000px images for 800px display slots. Add loading="lazy" to below-fold images. Set explicit width/height on all <img> tags. Use Shopify's image_url filter for responsive sizes. This is ongoing work for every new image you upload.
Render-Blocking JavaScript & CSS
This is the most technically impactful reason and the hardest to fix manually. Render-blocking resources are scripts and stylesheets in your page's <head> that prevent the browser from rendering anything until they've fully downloaded and executed.
When a browser encounters a <script> tag without defer or async, it stops everything — pauses HTML parsing, pauses rendering — and waits for that script to download and execute. If you have 10 blocking scripts, the browser stops 10 times. Your visitor sees nothing but a white screen during all of this. For a deeper technical walkthrough, see our guide on fixing render-blocking resources on Shopify.
CSS is also render-blocking by default. The browser won't paint anything until all CSS in the <head> has loaded. If your theme loads a 200KB stylesheet, that entire file must download before the first pixel appears.
Render-blocking resources directly impact TBT (30% of your score), FCP (10%), and LCP (25%). If you're unsure what these metrics mean, our Core Web Vitals guide for Shopify explains each one. Fixing this single issue often improves scores by 20-30 points. You can check how your store is affected right now with our free Shopify speed test.
⚡ Thunder Fix (Automatic)
Thunder defers all render-blocking JavaScript (including third-party app scripts) and extracts critical CSS for inline delivery. Scripts load after the page renders; only above-the-fold CSS loads initially. This is Thunder's #1 impact area — it maps script dependencies to defer safely without breaking anything. Average TBT reduction: 60-80%.
🔧 Manual Fix (Expert-Level)
Add defer to script tags — but most render-blocking scripts come from apps you can't edit. For CSS, extract critical above-the-fold styles, inline them, and load the full stylesheet with media="print" onload="this.media='all'". This requires generating different critical CSS per page template and updating it whenever your theme changes. Budget 8-16 hours initially, plus ongoing maintenance. High risk of breaking things.
Third-Party Code Overload
Beyond Shopify apps, most stores also load third-party scripts directly: Google Analytics, Meta Pixel, Google Tag Manager, Hotjar, Klaviyo, TikTok Pixel, Pinterest Tag, and more. Each one adds a DNS lookup, a connection, and a script download.
The problem compounds because third-party scripts run on servers you don't control. If Facebook's CDN is slow for 500ms during a speed test, your score drops — and there's nothing you can do about it. Google's PageSpeed Insights specifically flags "Reduce the impact of third-party code" because it's such a common issue.
A typical Shopify store loads 15-30 third-party requests. Each one adds latency, consumes bandwidth, and competes for the browser's main thread. Together they can add 2-4 seconds of load time. We break down the worst offenders in our deep dive on Shopify third-party scripts and their performance cost.
⚡ Thunder Fix (Automatic)
Thunder defers third-party scripts and establishes early connections (preconnect) to critical third-party domains. Analytics scripts load after page render, so they don't block what your customers see. Tracking still works — it just doesn't slow down the first paint. Thunder also optimizes the loading order to reduce main thread contention.
🔧 Manual Fix (Careful Optimization)
Audit all third-party scripts: remove what you don't actively use. Load remaining scripts asynchronously. Use Google Tag Manager to control loading timing. Add <link rel="preconnect"> for critical third-party domains. Consider using a facade pattern for chat widgets (load on interaction only). Budget 4-6 hours for a thorough audit, plus risk of breaking tracking.
Oversized DOM (Too Many HTML Elements)
The DOM (Document Object Model) is the browser's representation of your HTML page. When your page has too many HTML elements — Google recommends under 1,500 — everything slows down. Style recalculations take longer, JavaScript DOM queries are slower, and layout/paint operations consume more memory.
Shopify stores commonly have oversized DOMs because of: product collections rendering too many items, mega-menus with hundreds of links, theme sections with deeply nested HTML, and app-injected widgets adding hidden elements. It's not unusual for a Shopify homepage to have 3,000-5,000 DOM elements.
A large DOM doesn't directly tank your speed score like render-blocking scripts do, but it makes everything else worse. JavaScript takes longer to execute (higher TBT), layout shifts are more likely (higher CLS), and paint operations are slower (higher LCP).
⚡ Thunder Fix (Indirect)
While Thunder doesn't directly reduce DOM size, its script deferral means the browser can parse and render the existing DOM faster. By eliminating JavaScript that blocks the main thread, DOM operations complete in less total time. The net effect is better TBT and LCP even with a large DOM.
🔧 Manual Fix (Theme Work)
Reduce products shown per page in collections (12-16 is plenty). Simplify mega-menu structure. Remove unused theme sections. Use pagination instead of "load more" for collections. Flatten deeply nested HTML in theme templates. This requires theme editing expertise and testing — budget 4-8 hours. Results vary based on your starting DOM size.
Slow Server Response Time (TTFB)
Time to First Byte (TTFB) measures how long the browser waits for the first byte of data from Shopify's server. A slow TTFB delays everything else — the browser can't parse HTML, load resources, or render content until it receives that first response.
On Shopify, you can't switch servers or add your own CDN — Shopify controls the infrastructure. But you can control how much work the server does per request. Complex Liquid templates with many loops, nested sections, and heavy product queries force the server to do more computation before responding.
Good TTFB for Shopify is under 200ms. If you're seeing 500ms+ consistently, your theme's Liquid code is likely the culprit. Pages with large collections, complex filtering, or many dynamic sections tend to have the worst TTFB.
⚡ Thunder Fix (Complementary)
Thunder doesn't directly reduce TTFB (that's server-side), but its optimizations compensate for slower server responses. By making the browser process received content faster (deferred scripts, inlined CSS), Thunder reduces the total time to render even when TTFB is high. The perceived speed improvement is significant even if the server response time stays the same.
🔧 Manual Fix (Liquid Optimization)
Simplify Liquid templates — reduce nested for loops, use limit on collection queries, cache expensive computations with {% assign %}. Limit products per page. Remove unnecessary sections from your homepage. This requires Liquid expertise and careful testing — budget 4-8 hours. Improvements are typically modest (50-150ms).
Summary: All 7 Reasons at a Glance
| Reason | Impact | Thunder Fix | Manual Effort |
|---|---|---|---|
| Too many apps | High | ✅ Automatic | 4-8 hours |
| Heavy theme | High | ✅ Automatic | 20-40 hours |
| Unoptimized images | Medium-High | ✅ Automatic | 2-4 hours + ongoing |
| Render-blocking scripts | Very High | ✅ Automatic | 8-16 hours |
| Third-party code | Medium-High | ✅ Automatic | 4-6 hours |
| Large DOM | Medium | 🔄 Indirect | 4-8 hours |
| Slow server response | Medium | 🔄 Compensates | 4-8 hours |
Manual effort estimates assume developer-level Shopify/Liquid expertise
Thunder fixes 5 of 7 reasons automatically
Instead of spending 40+ hours on manual fixes, let Thunder handle the highest-impact optimizations in 30 seconds. See our pricing plans to find the right fit for your store.
Speed Up My Store Now →Free plan available · No credit card required · Works with all themes
Frequently Asked Questions
Why is Shopify so slow compared to other platforms?
Shopify isn't inherently slower than other platforms. The perceived slowness comes from how stores are built — too many apps injecting scripts, heavy themes with bloated code, and unoptimized images. The Shopify platform itself is well-optimized with global CDN and edge caching. The slowness comes from what merchants add on top. Thunder Page Speed Optimizer fixes these added-on performance issues automatically.
How many apps is too many on Shopify?
There's no magic number, but most performance issues start around 10-15 active apps. Each app can inject JavaScript and CSS into your storefront, adding 100-500ms of load time per app. The key isn't how many apps you have installed — it's how many inject frontend code. Thunder optimizes how all app scripts load, so you can keep your apps without the speed penalty.
Does my Shopify theme affect speed?
Absolutely. Theme choice sets your performance baseline. Shopify's free themes (Dawn, Refresh, Craft) are the fastest, scoring 70-90 out of the box. Many third-party themes ship with 500KB+ of CSS and JavaScript before your content loads. If you're using a heavy theme, Thunder can still improve your score significantly, but starting with a lighter theme gives you a better foundation.
Will removing Shopify apps make my store faster?
Yes, but with an important caveat: uninstalling an app from the Shopify admin doesn't always remove its code from your theme. Many apps leave behind script tags, CSS files, and Liquid snippets that continue to slow your store. You need to manually audit your theme files after uninstalling apps. Thunder takes a different approach — it optimizes how scripts load so you keep functionality without the speed hit.
Can I fix Shopify speed without coding?
Yes. Thunder Page Speed Optimizer handles the most impactful speed fixes automatically — script deferral, critical CSS inlining, image optimization, and font loading — all without touching a line of code. Install it, enable the optimizations, and your speed score typically improves by 27+ points within minutes.
Why is my Shopify store slow on mobile but fast on desktop?
Mobile speed tests simulate a mid-tier phone with throttled CPU and 4G network — much harsher conditions than desktop. JavaScript that runs quickly on a fast laptop takes 3-5x longer on a simulated mobile CPU. This is why script optimization (deferring render-blocking JS) has such a big impact on mobile scores. Thunder specifically targets mobile performance by deferring scripts and inlining critical CSS.
What are the most common Shopify performance issues in 2026?
The top Shopify performance issues in 2026 are third-party app scripts (especially review widgets and email popups), unoptimized hero images exceeding 500KB, render-blocking CSS and JavaScript, and excessive DOM size from theme sections. Google's Interaction to Next Paint (INP) metric — which replaced FID in March 2024 — has also surfaced new issues: apps that attach heavy event listeners and themes with complex JavaScript-driven menus often fail INP thresholds. Thunder Page Speed Optimizer addresses all of these automatically.
With Thunder, about 30 seconds — install the app, enable optimizations, and you're done. Manually, expect 10-40 hours of developer work depending on the issues: image optimization (2-4 hours), script auditing (4-8 hours), critical CSS extraction (4-8 hours), theme optimization (8-16 hours), and ongoing maintenance. Most merchants find the automated approach more practical.