If your Shopify store loads in over three seconds on mobile, you are losing roughly 32% of your mobile conversions to the platform’s speed. Shopify is fast by default — their CDN handles TTFB beautifully. Almost every slow Shopify store we audit is slow because of the same seven decisions, all of which sit on your side of the platform. This guide walks each one in order of impact.

The honest summary: Shopify is not slow. Slow Shopify stores are slow because of installed themes, plugin app bloat, unoptimised images, and customisations that fight the platform rather than work with it. Fix those, and the same store moves from a 4-second mobile LCP to under 1.5 seconds. We have done this engagement dozens of times.

How to measure before you optimise

Three tools matter: Google PageSpeed Insights (for real Core Web Vitals data from Chrome users), Shopify’s own Online Store Speed report (for the platform’s view), and a synthetic test in WebPageTest for waterfall analysis. Record the current LCP, CLS, INP, and TTFB on the homepage, a product page, the collection page, and the cart. These four pages cover roughly 80% of visits.

Core Web Vitals thresholds in 2026 are LCP under 2.5s, CLS under 0.1, INP under 200ms. Google ranks pages that pass these visibly higher in organic search. Most slow Shopify stores fail LCP and INP — the LCP failure is usually a heavy theme + unoptimised hero image; the INP failure is almost always app JavaScript piling up on the main thread.

Fix 1 — Audit your apps

The single biggest performance lever on Shopify is the apps. The average Shopify store has 25 to 40 apps installed; the average store uses 8 to 12 actively. Every installed app loads its JavaScript on every page by default — not just the pages where the app is used. A reviews app loads its 80 KB of JavaScript on every page. A wishlist app the same. A back-in-stock app the same. By the time you have 30 apps installed, that is 2 to 4 MB of JavaScript loading on every visit.

The fix is an audit: go through every installed app and ask three questions. Is it currently being used? Is it loading conditionally (only where needed) or unconditionally (everywhere)? Is there a lighter alternative or a way to replace it with theme code? In a typical audit we remove 40 to 60% of installed apps. Mobile JavaScript drops 1 to 2 MB. INP halves.

Fix 2 — Replace the installed theme

Most Shopify stores run an installed Theme Store theme — Dawn, Sense, Crave, or a paid theme like Impulse, Prestige, Empire, Motion. Many of these are excellent themes by design, but they ship with every possible feature enabled, which means 200 to 400 KB of theme CSS and 200 to 400 KB of theme JavaScript loading on every page even when the page only uses 10% of those features.

The fix is either a serious theme audit (turn off sections you do not use, strip CSS, defer JavaScript) or a custom theme built around what your store actually needs. We typically build custom themes that ship 60 to 80 KB of CSS and 40 to 80 KB of JavaScript — an order of magnitude lighter than installed themes — and the editor experience is the same or better because we use Shopify 2.0 sections everywhere editors need to make changes.

Fix 3 — Optimise images properly

Images are the largest payload on most product pages. Shopify automatically resizes images at the CDN edge, but uploading a 4000 by 4000 pixel PNG straight from your phone and letting Shopify resize it is roughly five times slower than uploading a properly compressed source.

The fix: convert to AVIF before upload (AVIF compresses 30 to 50% better than WebP and Shopify serves it to compatible browsers), explicitly size every image tag with width and height attributes (prevents CLS), use Shopify’s responsive image syntax with multiple sizes, and lazy-load offscreen images. The hero image specifically should be preloaded with link rel=preload in the theme head — this often moves LCP from 2.8s to 1.2s by itself.

Every additional second of mobile load time costs roughly 7% of conversions. The site does not crash — it just leaks.

Fix 4 — Defer non-critical scripts

Even after the app audit, the scripts that remain need to load efficiently. Anything not required for the first paint should be deferred — analytics, marketing pixels, chat widgets, reviews, recommendation widgets. The standard pattern is: defer attribute on the script tag, or async, or wait for first user interaction before loading the script.

Shopify Plus stores get access to Web Pixels and the new Customer Events system, which is the right way to load marketing pixels asynchronously. Standard Shopify stores can still defer scripts but the implementation is theme-side. We usually replace third-party chat widgets with a delayed-load pattern (load only when the user has scrolled or interacted) which saves 200 to 400 KB of initial JavaScript on every page.

Fix 5 — Optimise the Liquid templates

Shopify renders pages server-side from Liquid templates. Inefficient Liquid — nested loops, repeated metafield lookups, complex collection filtering — slows down TTFB. Most installed themes have at least one or two performance hotspots in their Liquid that show up as a slow homepage or collection page.

The fix requires a developer to profile the templates (Shopify’s Theme Inspector for Liquid Chrome extension is the standard tool), identify the slow renders, and refactor. For collection pages with many filtering options this often means moving filtering to client-side AJAX rather than full-page reloads. For homepages with many product cards this often means caching the product data and pre-computing the related-product logic at build time.

Fix 6 — Cart and checkout performance

The cart-to-checkout transition is where Shopify conversions live or die. Every second of delay between “Add to cart” and the checkout being interactive costs roughly 7% of conversions. Many installed themes add cart drawers, upsells, and bundles that ship multiple scripts and re-render on every cart change.

The fix: minimise cart-drawer complexity, defer cart-upsell scripts until the user has actually opened the cart, use Shop Pay where the platform allows it (Shop Pay’s saved-payment flow converts 70 to 110% better than guest checkout on mobile), and on Plus, use Checkout Extensibility properly instead of legacy checkout.liquid customisations which load on every page.

Fix 7 — Theme JavaScript: audit and refactor

By this point you have already cut the heaviest sources of slowness. Fix 7 is the cleanup pass: review the theme JavaScript that remains, replace heavy libraries with lighter alternatives (a 90 KB lodash include can almost always become a 4 KB hand-written utility, jQuery is rarely needed in modern themes), strip unused code with Rollup or esbuild, defer everything that is not required for first paint.

For Shopify 2.0 themes built with modern bundlers, this is straightforward. For older themes built without bundlers, it is a more involved refactor — but for stores already doing serious revenue, the conversion uplift pays back the engagement many times over.

What good looks like (after the seven fixes)

A well-tuned Shopify store in 2026 hits these numbers on real production pages:

LCP under 1.5 seconds. Most pages comfortably under the 2.5-second threshold. Homepage and product page sub-1.2s achievable.

CLS under 0.05. Effectively no layout shift if images have explicit dimensions.

INP under 100ms. JavaScript deferred and minimal.

PageSpeed mobile score 90+. All four Core Web Vitals in the green for both mobile and desktop.

Cart-to-checkout transition under 1 second. Shop Pay flow optimised.

These are the targets we hold every Shopify build to. Conversion typically lifts 12 to 35% after a thorough performance pass; mobile traffic responds faster than desktop because mobile users feel slowness more acutely.

If you do not want to do this yourself

Shopify performance is craft work. Knowing which app to remove, which template to refactor, which images to convert, in what order, without breaking the editor experience, is a specific skill. We offer a Shopify performance audit as a fixed-scope engagement: we measure your current Core Web Vitals, identify the seven highest-impact fixes for your store specifically, and either hand you the report to implement or implement them ourselves. Most clients see mobile LCP halve in the first week.

Common questions

How much will fixing all seven things actually improve my store?

On a typical slow Shopify store (4-second mobile LCP, PageSpeed mobile score 30-50), all seven fixes together usually move LCP to under 1.5 seconds and the mobile PageSpeed score above 90. Conversion typically lifts 12 to 35% in the first 90 days after the fixes; mobile conversion responds first and fastest. Specific gains depend on starting state: stores with many apps see the largest gains from the app audit; stores with heavy installed themes see the largest gains from the theme rebuild.

Will I lose any functionality by removing apps?

In every audit we have run, the answer is no — you retain everything you actually use. Most installed apps are either duplicates, abandoned, or have an equivalent that loads only where it is needed. The audit identifies which apps map to actual customer-facing features versus which are technical debt. We typically replace 3 to 5 apps with light theme code (saves 200 to 400 KB), consolidate 4 to 6 apps with one better alternative, and remove 8 to 14 apps that nobody is using. Net: the store does more, faster.

How long does a Shopify performance engagement take?

Audit alone is typically 3 to 5 working days. Implementation depends on the seven fixes the audit prioritises and your starting state. A typical engagement is 2 to 4 weeks of part-time work, often delivered while the existing store stays live and the changes are tested on a development store first. For Shopify Plus stores with complex checkout customisation, expect 4 to 6 weeks total.

Does a custom Shopify theme cost more than an installed theme?

Up front, yes — a custom Shopify theme is a build engagement, an installed theme is a one-time purchase from the Shopify Theme Store. Three years in, the maths usually favours the custom theme: faster site means higher conversion (typically 10 to 30%); a content model built around how the marketing team actually works means less developer time per landing page; no platform tax of carrying an installed theme’s bloat for the lifetime of the store. For stores doing serious revenue, the custom theme pays back within the first 6 to 12 months.

Does Shopify performance affect SEO?

Yes, in two ways. Core Web Vitals are direct Google ranking signals — stores that pass them rank visibly higher than identical stores that fail. Fast stores also have lower bounce rates and higher dwell time, which feed back into ranking signals. We have measured 15 to 40% organic traffic lift in the first 90 days after a performance engagement on content-heavy Shopify stores. For stores where Google Shopping or product-feed-driven traffic dominates, the performance gain shows up most strongly in mobile category-page conversion.

Want a free Shopify performance audit?

Send us your store URL. We will send back a 2-page audit showing your current Core Web Vitals, the seven highest-impact fixes for your store specifically, and what good looks like.


Request a performance audit