Skip to content

Shopify Speed Optimisation: The Technical Guide

Updated on:
Updated by: Ciaran Connolly
Reviewed byFatma Mohamed

Shopify speed optimisation usually gets sold as a five-step checklist: compress your images, delete a few apps, switch to a newer theme, and watch your score climb. The trouble is that the Shopify speed score most merchants chase is a throttled mobile simulation that often disagrees with what real visitors experience. Chasing the number can leave a store that still feels slow to the people buying from it.

This guide takes a more technical route. It covers what the speed score actually measures, the three problems that cause most slow Shopify stores, the Liquid and asset changes that move real-world load times, and how delivery from a UK base affects customers in Belfast, Dublin, and beyond. ProfileTree, a Belfast web design and digital marketing agency, has rebuilt slow Shopify stores down to sub-two-second loads, and the patterns below are the ones that did the work.

Speed Is a Revenue Number, Not a Vanity Score

Slow stores lose money before they lose rankings. Studies of e-commerce load times consistently link extra delay to lower conversion, and mobile shoppers in particular drop off when a page takes more than a few seconds to become usable. So the first thing to fix is the framing: page speed sits on the same line of the spreadsheet as basket abandonment, not on a separate technical to-do list.

If you are already auditing where customers fall away, speed belongs in that work. Our conversion rate optimisation approach treats load time as one of the levers on checkout completion, alongside layout and trust signals.

Three Takeaways Before the Detail

  • The Shopify dashboard score is a guide, not a verdict. Judge the store on real-world loading and Core Web Vitals.
  • Most slowdowns trace back to three causes: app bloat, unoptimised images, and heavy theme code.
  • For UK and Ireland stores, edge delivery and image format choices matter as much as any single app.

The Truth About the Shopify Speed Score

The Shopify speed score is a simulated test, not a recording of your actual customers. It runs a throttled mobile profile against a sample of your pages, then averages the result. Two stores with identical real-world performance can post different scores depending on which pages get sampled and how heavy their product pages are.

Google does not rank on that number. It uses field data from the Chrome User Experience Report, drawn from real Chrome visits, summarised through Core Web Vitals. That is why a store can show a middling dashboard score yet still pass Core Web Vitals for the visitors who matter. Treat the dashboard as an early-warning light and the field data as the source of truth. Google’s own guidance on Core Web Vitals sets out which metrics carry ranking weight.

Core Web Vitals That Matter Now

Three metrics decide whether a Shopify store passes. Largest Contentful Paint (LCP) measures how quickly the main content appears and should land under 2.5 seconds. Cumulative Layout Shift (CLS) measures visual stability and should stay below 0.1, which on Shopify usually means reserving space for images and avoiding banners that push content down as they load.

The metric most older guides still get wrong is responsiveness. Interaction to Next Paint (INP) has replaced First Input Delay as the responsiveness metric, and it is stricter. INP tracks how fast the page responds across the whole visit, not just the first tap, so a store that feels sluggish when filtering a collection or opening a cart drawer will fail it even if the first interaction was quick. Aim for INP under 200 milliseconds, and look at JavaScript execution as the usual culprit.

Long tasks that block the main thread, often from third-party scripts, are what push INP into the red. Breaking that work into smaller chunks, or deferring it until after the page is interactive, is the practical fix.

The Big Three Killers of Shopify speed

Most slow stores are not slow for exotic reasons. The same three causes account for the bulk of the damage, and they compound.

App Bloat and the Residue Problem

Every app you install can add JavaScript, CSS, and extra network calls, and those costs stack up across every page, even when the app is only used on one. Review widgets, pop-ups, loyalty schemes, and chat tools are the common offenders, and each can add hundreds of kilobytes of script.

The hidden trap is what happens when you remove an app. Uninstalling rarely strips the code an app injected into your theme, so you are left with “ghost” snippets and asset references that still load and still slow the store. Cleaning that residue by hand, by searching the theme for the app’s leftover tags, often recovers more speed than any optimisation app. A realistic ceiling for most SME stores is five to seven carefully chosen apps, tested before and after each install.

Images That Were Never Optimised

Images are usually the largest thing a Shopify page downloads. The baseline fix is serving WebP through Shopify’s image filters at the exact size each slot needs, rather than shipping a 2000-pixel hero to a phone. The next step beyond WebP is AVIF, which compresses further again for browsers that support it, and is worth using for large hero and banner images where the saving is biggest.

Preloading the hero image also helps LCP directly, because it tells the browser to fetch the most important visual before it works through the rest of the page. The one caveat is to preload only the single most important image. Preload too many and you compete for bandwidth, which slows the very thing you were trying to speed up. On a typical Shopify homepage, that means the hero and nothing below the fold.

Lazy loading handles the rest. Native loading="lazy" On off-screen images stop the browser from fetching product thumbnails a visitor may never scroll to, which is one of the simplest wins on a long collection page.

Theme Architecture

Online Store 2.0 is the baseline now, not an upgrade. Its section-based structure reduces Liquid complexity, caches better, and lets you load assets per template instead of dumping everything into one global bundle. Stores still running legacy themes carry a structural speed penalty before anyone touches a line of code, and migrating often recovers 20 to 30 per cent on its own.

Advanced Technical Optimisations at the Code Level

This is where a store moves from “fine” to fast, and where most guides stop. The principle is simple: do less work on every request, and do it later where you can.

Conditional Loading by Template

There is no reason to load product-gallery code on the cart page or cart-drawer code on a blog post. Loading assets against the current template keeps each page lean. This pattern is also why the template contains 'product' Check appears so often in well-built themes.

{% case template.name %}
  {% when 'product' %}
    {{ 'product-gallery.css' | asset_url | stylesheet_tag }}
    <script src="{{ 'product-zoom.js' | asset_url }}" defer></script>
  {% when 'collection' %}
    {{ 'collection-filters.css' | asset_url | stylesheet_tag }}
    <script src="{{ 'collection-sort.js' | asset_url }}" defer></script>
{% endcase %}

Cleaner Liquid Loops

Nested loops that query collections, products, and variants together are a frequent cause of slow server response. Assigning expensive values once and limiting scope cuts compilation time sharply.

{% comment %} Cache the expensive call, then reuse {% endcomment %}
{% assign featured = collections['featured'].products | limit: 12 %}
{% for product in featured %}
  {% assign variant = product.selected_or_first_available_variant %}
  {% if variant %}{{ variant.price | money }}{% endif %}
{% endfor %}

Deferring non-essential scripts and moving tracking pixels into Shopify’s Web Pixels or a tag manager is the other half of the job, and it is the most direct fix for the “reduce JavaScript execution time” warning. Complex theme work of this kind is part of our e-commerce web development service and sits alongside broader web development and web design work.

Ciaran Connolly, founder of ProfileTree, puts it plainly: “Most Shopify stores give away half their potential speed to apps they barely use. When we rebuild a store, the biggest single win is usually hard-coding a feature in clean Liquid instead of bolting on another script. The clean-code version loads faster and breaks less.”

The UK Factor: Edge Delivery and Latency

Shopify runs on Cloudflare’s network, so a content delivery network is already in place; the question is how well it serves your actual customers. A store selling mainly to Belfast, Dublin, and the rest of the UK and Ireland benefits from European edge locations caching content close to those visitors, which trims the round-trip time on every request.

The friction appears when a UK store also sells into the US or EU and adds currency conversion, translation, and regional tax logic. Each of those can add processing unless they are handled efficiently. Preconnect hints to the domains you rely on, and cached currency rates rather than a live call on every page load, keep international features from undoing your speed work. If search visibility across regions matters too, that overlaps with SEO services and the wider work covered in our e-commerce SEO guidance.

Sustainable Speed and Lighter Pages

Lighter pages are not only faster, but they also use less energy to serve and to load, which is a growing concern for UK brands reporting on their carbon footprint. The same moves that help speed (less JavaScript, smaller images, fewer redundant requests) also reduce the data each visit transfers. There is no trade-off here: a leaner store is both quicker and lower-impact, which makes the case for hard-coding features rather than stacking apps easier to put to a board.

Choosing Speed Optimisation Apps

If you do reach for an app, choose one and test it properly rather than installing several and hoping. The honest position is that apps marketed as speed boosters often add their own script while deferring someone else’s, so the net gain can be small. A single, well-reviewed tool used to lazy-load images or defer third-party scripts can help, but it is no substitute for cleaning app residue and fixing theme code. Measure total blocking time before and after, and keep only what earns its place.

Frequently Asked Questions

Short answers to the questions Shopify merchants ask most about speed.

What is a good speed score for Shopify?

Around 70 or above is solid. Real-world loading under 2.5 seconds matters more than the dashboard number.

Does Shopify speed affect SEO?

Yes. Core Web Vitals are a Google ranking signal, and slow pages also lose conversions.

Why did my store slow down after installing a theme?

Heavy hero sections, video backgrounds, and unoptimised Liquid are the usual causes. Check image sizes and script loading first.

Can I use a CDN with Shopify?

Shopify includes a Cloudflare CDN automatically. The gains come from edge-aware optimisation, not from adding a second CDN.

Leave a comment

Your email address will not be published.Required fields are marked *

Join Our Mailing List

Grow your business with expert web design, AI strategies and digital marketing tips straight to your inbox. Subscribe to our newsletter.