Our Services
Close

How to Keep Your Shopify Store Fast: Performance Optimisation for Growing Ecommerce Brands

TL;DR

Shopify stores slow down over time because of app script bloat, unoptimised images, and theme sections loading assets they don't need. The metrics that matter are LCP (under 2.5s), INP (under 200ms), and CLS (under 0.1). Fix them through quarterly app audits, image compression before upload, lazy loading for below-fold sections, and deferred third-party scripts. Performance and SEO are the same problem. Slow stores rank lower and convert less. Fix both together.

Most Shopify stores start fast. The problem is they don't stay that way.

Every app you install, every section you add to your homepage, every third-party script that loads at checkout chips away at the page speed your store launched with. By the time a brand notices the slowdown, it's already costing them conversions. Shopify's own 2026 analysis of millions of stores found that for every 100 milliseconds slower a store loads, conversion tends to drop by 3.5%. Stores with a 2.5 second LCP report roughly 30% lower conversion than stores at 1.5 seconds.

That's not a marginal difference. For a store doing £50,000 a month, a 1-second improvement in load time can translate to £5,000+ in additional monthly revenue.

At Futur Media, we build and optimise Shopify stores for UK ecommerce brands, and performance is a non-negotiable part of every project we deliver. This guide covers the most common causes of Shopify performance degradation, how to diagnose them, and the specific configuration decisions that keep stores fast under real growth conditions.

Here's what we'll cover:

  • Why Shopify stores slow down over time (and it's not Shopify's fault)
  • The three Core Web Vitals metrics that actually matter for rankings and revenue
  • The specific configuration fixes that produce the biggest gains
  • How to diagnose your store's performance in under 20 minutes
  • What a genuine performance-first build looks like in practice

Why Shopify Performance Degrades Over Time

Shopify's hosted infrastructure is genuinely fast out of the box. The platform uses a global CDN, automatic image compression, and optimised server response times. According to the Chrome User Experience Report, Shopify ranks second overall for Core Web Vitals pass rates across all major CMS platforms, ahead of WordPress by a significant margin (around 65% vs 44% on mobile). The platform is not the problem.

The slowdowns that affect growing stores almost never come from Shopify itself. They come from what gets built on top of it.

Culprit 1: Third-party apps loading scripts they don't need to

Every Shopify app that loads JavaScript on the storefront adds to your page weight. A single loyalty app, a review widget, a live chat tool, a cookie banner, a size guide pop-up. Individually, none of these are catastrophic. Together, they can add two to four seconds to your Time to Interactive on mobile.

The issue isn't the apps themselves. It's that most are configured to load on every page, including pages where they're completely irrelevant. A review widget loading on your homepage. A live chat script loading on your about page. A loyalty pop-up loading for first-time visitors who aren't even logged in. A benchmark study of 1,000 real Shopify stores found that 60% to 80% of loaded JavaScript goes unused on any given page. That's dead weight slowing down every visit.

Culprit 2: Theme sections loading assets they don't use

Shopify 2.0 introduced section-based themes, which gave merchants far more flexibility to build pages visually. The downside is that every section typically loads its own CSS and JavaScript, regardless of whether that section appears on the current page.

A homepage with eight or nine sections can end up loading assets for all of them on every page load, even on collection pages where most of those sections don't exist. The browser downloads scripts for an Instagram feed section that never renders on a product page. It loads CSS for a testimonials carousel that only lives on the homepage. Multiply this across a growing store and the cumulative weight becomes significant.

Culprit 3: Unoptimised images and video

This remains the single biggest contributor to slow Shopify stores in 2026. The average Shopify store loads in 3.8 seconds on mobile, according to Google CrUX data. The fastest 10% load in under 1.5 seconds. The difference is almost always images.

Product images uploaded at 4,000px wide, lifestyle photography straight from a camera, background videos set to autoplay. These are consistently the heaviest assets on any ecommerce page and, crucially, the easiest to fix. A single unoptimised hero image can account for 3-5MB of page weight on its own.

The Metrics That Actually Matter

Before making any changes, you need to know what you're measuring. Google's Core Web Vitals are the standard framework for Shopify performance, and they're the metrics that directly influence both search rankings and conversion rates. There are three of them.

Metric

What it measures

Good threshold

What fails on Shopify

LCP (Largest Contentful Paint)

How quickly the main visible element loads

Under 2.5 seconds

Hero images, unpreloaded fonts

INP (Interaction to Next Paint)

How responsive the store feels to taps and clicks

Under 200ms

Heavy JavaScript from apps

CLS (Cumulative Layout Shift)

How much the page jumps around as it loads

Under 0.1

Images without dimensions, late-loading banners

LCP: the metric most stores fail

LCP measures how long it takes for the largest visible element on the page to load, typically your hero image or featured product image. The target is under 2.5 seconds. A benchmark study of 1,000 real Shopify stores found the median mobile LCP sits at 2.26 seconds, which sounds fine until you realise that a single unoptimised image or one extra app script can push you over the threshold.

Stores we build at Futur Media consistently achieve sub-2 second LCP on mobile through a combination of image optimisation, fetchpriority="high" preloading on the hero image, and lean theme architecture that doesn't load unnecessary CSS before the main content renders.

INP: the silent conversion killer

INP replaced First Input Delay as a Core Web Vital in March 2024. It measures how responsive your store feels to user interaction, tapping a button, opening a filter, selecting a variant. Every interaction is measured, and your slowest one becomes your reported score.

Heavy JavaScript from third-party apps is the primary cause of poor INP scores on Shopify. When a customer taps "Add to cart" and waits 600ms for anything to happen, that's a failing INP score. Shopify's own data shows that for every 32 milliseconds slower a store responds to interactions, conversion drops by approximately 1.5%.

CLS: the one most brands ignore (but shouldn't)

CLS measures visual stability, specifically how much the page jumps around as it loads. Common causes on Shopify include images without defined dimensions, late-loading font swaps, and dynamically injected banners or cookie notices that push content down after the initial render.

A high CLS score means customers are tapping the wrong button because the page shifted under their finger. On mobile, this is a significant source of cart abandonment that most brands never attribute to performance.

Key benchmark: A Shopify store with strong Core Web Vitals, LCP under 2.5s, INP under 200ms, CLS under 0.1, will consistently outperform slower competitors in both Google rankings and on-page conversion. Stores loading in under 2 seconds convert at 2.4% on average, compared to the Shopify platform average of 1.4%.

Configuration Fixes That Produce the Biggest Gains

The biggest performance gains on existing Shopify stores almost always come from configuration changes, not code rewrites. You don't need to rebuild your theme. You need to be more deliberate about what loads, when it loads, and whether it needs to load at all.

1. Audit which apps actually load on the storefront

Open your Shopify admin, go to Online Store, then Themes, and click Customise. In the Theme editor, check which App Embeds are active. Then open your theme code and look at theme.liquid and your section files for third-party script tags.

For every script, ask one question: does this need to load on every page, or only on specific pages?

  • A review widget only needs to load on product pages
  • A loyalty programme pop-up only needs to load for logged-in customers
  • A live chat widget can be deferred until a user scrolls or shows intent to engage
  • A size guide app only needs to load on collection and product pages

Most Shopify apps load globally by default because that's the easiest configuration for the app developer. It's rarely the right configuration for your store. Our guide to the best Shopify apps covers which categories of apps tend to carry the heaviest performance cost, which is worth reading before you install anything new.

2. Optimise your images before they hit Shopify

Shopify's CDN does compress and resize images, but it works with what you give it. Uploading a 6MB JPEG and relying on Shopify to handle it is not a performance strategy.

Before uploading product images:

  1. Resize to the maximum display size they'll appear at on your storefront (2000px wide for hero images, 1000-1200px for product thumbnails)
  2. Convert to WebP format where possible. WebP files are typically 25-35% smaller than equivalent JPEGs at the same visual quality
  3. Compress to under 200KB per image using a tool like Squoosh or Imageoptim before upload
  4. Set explicit dimensions on all <img> tags in your theme to prevent CLS

The difference in page weight between a store that does this consistently and one that doesn't is often 3-5MB per page. On a mobile connection, that's the difference between a 2-second load and a 5-second load.

3. Use lazy loading for below-the-fold sections

Shopify 2.0 themes support lazy loading for sections that appear below the fold. If your homepage has a testimonials section, a featured blog section, and an Instagram feed in the lower half of the page, none of those need to load before a customer sees your hero and primary CTA.

Add the loading="lazy" attribute to images within below-fold sections. For section-specific JavaScript, defer it using the defer attribute so it downloads in parallel with HTML parsing but executes only after the page has loaded. The customer sees and can interact with your store faster, even if the Instagram feed initialises a fraction of a second later.

4. Defer and consolidate third-party scripts

Rather than loading each app's script independently, consolidate where possible and use defer or async attributes on scripts that don't need to block rendering.

Here's the rule of thumb:

  • Payment processors and core analytics (GA4, Shopify's own tracking): load as normal
  • Review widgets, loyalty apps, chat tools, pop-ups: defer
  • Scripts for features that only activate on user interaction: load lazily on first interaction

A single render-blocking script from a third-party app can delay your LCP by 400-800ms. Deferring it costs you nothing functionally and can recover that entire delay.

5. Do a quarterly app audit

Many growing Shopify stores accumulate apps over time. A pop-up tool added for one campaign, a countdown timer from a Black Friday promotion, a size guide app installed before a custom solution was built. Each one may still be installed and loading scripts even if it's no longer actively used.

Every quarter, go to your Shopify admin, check every installed app, and ask two questions:

  1. Is this actively being used right now?
  2. Is the functionality it provides worth the performance cost?

Apps that add less than 10KB of JavaScript and serve a clear ongoing purpose are generally fine. Apps that load 200KB or more of JavaScript for a feature that could be handled natively or removed entirely are worth reconsidering. One unused app removed from a store we audited last year cut 340ms from its LCP on mobile.

6. Fix your fonts

Custom web fonts are a common and overlooked source of both LCP delays and CLS. If your theme loads fonts without preloading them, the browser renders the page in a fallback font first, then swaps to your custom font when it arrives. That's a layout shift. If the font file is large and loads before your hero image, it's competing for bandwidth and delaying your LCP.

The fixes are straightforward:

  • Use font-display: swap in your CSS so text renders immediately in a fallback font
  • Preload your primary font files using <link rel="preload"> in your theme's <head>
  • Only load the font weights and styles you actually use. A single font family with six weights adds unnecessary load

Performance and SEO: Why They're the Same Problem

Page speed is not just a user experience issue. It's a search visibility issue, and the two are more tightly connected than most brands realise.

Google uses Core Web Vitals as a ranking signal. A slow Shopify store is a store that ranks lower for the keywords its customers are searching. The pages that matter most for SEO are also the pages most likely to be performance-impacted: collection pages with large product grids, product detail pages with multiple images and review widgets, and the homepage. These are the pages that carry the most JavaScript, the most images, and the most third-party scripts.

53% of mobile visitors abandon a page that takes longer than 3 seconds to load. If your collection pages are ranking on page one but converting at half the rate they should because they load in 4 seconds, your SEO investment is only working at partial capacity.

There's also a compounding effect. Faster stores rank better. Higher rankings drive more traffic. More traffic means more data for Google's ranking algorithms. The performance advantage builds on itself over time, which is why brands that invest in it early see disproportionate returns.

At Futur Media, we treat performance and SEO as a unified workstream on every project. A store that loads in under 2 seconds, passes Core Web Vitals, and uses clean semantic HTML with proper heading structure and schema markup will outrank an equivalent store that doesn't, all else being equal. If you're working through Shopify SEO without also addressing performance, you're leaving a significant portion of that investment on the table.

The mobile gap is where most UK stores lose

73% of Shopify traffic is mobile, according to Shopify's own data. Mobile pages load 1.4 seconds slower than desktop on average. Mobile conversion rates are 45% lower than desktop, and page speed is the most commonly cited reason.

This means the performance problem is disproportionately a mobile problem. Running PageSpeed Insights on desktop and seeing a good score is not the full picture. The score that matters is mobile, measured on a mid-range Android device on a 4G connection. That's the experience most of your customers are actually having.

What "Performance First" Actually Means in a Shopify Build

The phrase gets used a lot. Here's what it means in practice.

A performance budget before a single section is designed

Every store we build at Futur Media starts with a performance budget: a defined target for page weight, JavaScript payload, and Core Web Vitals scores before design work begins. Design and development decisions are then evaluated against that budget throughout the build, not as an afterthought at QA.

This changes the conversation from "can we add this feature?" to "what does this feature cost us, and is it worth it?" A background video on the homepage might look great in a design mockup, but if it adds 4 seconds to mobile LCP, that's a trade-off that needs to be made explicitly, not discovered after launch.

Native architecture over page builders

We build on Shopify's native architecture: Liquid, Metafields, the Storefront API. We don't use third-party page builders like Shogun or PageFly as a default approach. Page builders introduce an additional JavaScript rendering layer that consistently degrades performance, often adding 1-2 seconds to LCP on mobile. For brands that genuinely need the visual flexibility of a page builder, we weigh that trade-off explicitly and document it.

This is also why our custom Shopify theme development work produces measurably faster stores than builds on off-the-shelf themes with page builders layered on top. The architecture is leaner from the start.

A pre-launch performance audit on every build

Every build includes a pre-launch performance audit: LCP, INP, and CLS checked across mobile and desktop, image optimisation verified, render-blocking scripts identified and resolved. We don't launch a store that doesn't pass Core Web Vitals.

The targets we hold ourselves to:

  • LCP under 2 seconds on mobile (not just under the 2.5s "good" threshold)
  • INP under 150ms
  • CLS under 0.05
  • 95%+ mobile usability score in Google Search Console

Ongoing performance monitoring after launch

Performance doesn't stay static. A store that passes Core Web Vitals at launch can fail them six months later if three new apps have been installed, a campaign added a new section to the homepage, and product images were uploaded without optimisation.

We include performance monitoring in our ongoing support offering. Stores that grow, adding apps, running campaigns, expanding product catalogues, need periodic performance reviews to catch degradation before it becomes a conversion problem. Our Shopify audits cover performance alongside conversion and SEO, so you get a complete picture of what's holding your store back.

How to Diagnose Your Store's Performance Right Now

You don't need to hire anyone to get a baseline picture of where your store stands. These four steps will surface the majority of performance issues on most Shopify stores, and most of them can be addressed without touching a line of code.

Step 1: Run PageSpeed Insights on your key templates

Go to PageSpeed Insights and test three URLs on mobile:

  • Your homepage
  • A collection page (ideally your highest-traffic one)
  • A product page

Note your LCP, INP, and CLS scores for each. The "Field Data" tab shows real user experience from Chrome users, which is more meaningful than the lab score. If your field data LCP is above 2.5 seconds on any of these pages, that's your starting point.

Step 2: Check your JavaScript payload in Chrome DevTools

Open Chrome, navigate to your store, and press F12 to open DevTools. Go to the Network tab and filter by "JS". Reload the page and look at the total JavaScript transferred.

For a well-optimised Shopify store, the total JS payload should be under 400KB. If you're seeing 800KB, 1MB or more, you have significant script bloat. Sort by size and look at the largest files. The "Initiator" column tells you which app or theme section loaded each script.

Step 3: Check the Coverage tab for unused JavaScript

In Chrome DevTools, go to the Coverage tab (you may need to enable it via the three-dot menu). Reload the page and look at the percentage of loaded JavaScript that goes unused. On a bloated Shopify store, 60-80% of loaded JavaScript is unused on any given page. That's the number to drive down.

Step 4: Audit your installed apps

Go to your Shopify admin and list every installed app. For each one:

  • Is it actively being used?
  • Does it load scripts on the storefront?
  • Could the functionality be handled natively or by a lighter solution?

Check your product images in the Files section of your admin. If you have images over 1MB, that's your first fix. Our website speed guide covers additional diagnostic tools and techniques if you want to go deeper.

If you want a more thorough assessment, Futur Media offers a free Shopify audit that covers performance alongside conversion and SEO. You'll get a clear picture of what's holding your store back and a prioritised list of what to fix first. Request your free audit here.

The Bottom Line

Shopify performance isn't a one-time task. It's a discipline that needs to be built into how you run your store, not something you address when customers start complaining.

The data is unambiguous. Google and Deloitte's analysis of 37 retail brands across 30 million sessions found that a 0.1-second improvement in mobile load time increases conversions by 8.4% and average order value by 5.2%. For a growing UK ecommerce brand, that's not a marginal gain. It's compounding revenue.

The stores that win on performance are the ones that treat it as a constraint from the start, not a problem to fix later. That means a performance budget before design, native architecture over page builders, deliberate app management, and regular audits as the store grows.

If your store is already live and you're not sure where it stands, the four-step diagnostic above will give you a clear starting point. If you want expert eyes on it, our free Shopify audit covers performance, conversion, and SEO together, because fixing one without the others leaves revenue on the table.

Futur Media is a Shopify Growth Partner based in Cardiff, UK. We design, build, and optimise Shopify stores for ambitious ecommerce brands, with a focus on performance, conversion, and long-term growth. Every store we deliver achieves under 2 second average page load times and 95%+ mobile usability scores. Get in touch to talk through your project.

Ready to turn these ideas into a high-performing Shopify store?

Articles

Related Articles

Shopify Services

Our Shopify Services