
Direct answer: Shopify mobile speed improves by identifying the real bottleneck, not by applying a universal trick. I use field data when available, Core Web Vitals, laboratory tests, network waterfalls and resource analysis to build a baseline, formulate a cause and verify the effect of each intervention.
On mobile, the same page can behave very differently from a powerful desktop: network conditions, CPU, memory and interactions make the cost of images, JavaScript, apps, fonts, video and theme components more visible. That is why I never start from “Shopify is slow” or “app X slows the store down”: I start from the template and the metric that is actually getting worse.
First rule
I do not optimize a score: I optimize a cause. If the problem is the hero image, removing an unrelated app does nothing. If the problem is third-party JavaScript, compressing images again does not solve interaction latency.
1. Which Core Web Vitals I look at on Shopify
Shopify measures storefront performance through LCP, INP and CLS and provides reports based on real visitor data. As an operational reference, Shopify considers LCP within 2.5 seconds, INP within 200 ms and CLS within 0.1 “good”, evaluated at the 75th percentile. I do not use these thresholds as a commercial promise: they help identify where to investigate.
| Metric | What it measures | Causes I check |
|---|---|---|
| LCP | How quickly the main content appears | Hero, product image, fonts, render-blocking CSS, resource priority, late rendering |
| INP | Responsiveness to interactions | Long JavaScript tasks, listeners, apps, variants, filters, search, menu, cart |
| CLS | Visual stability | Images without reserved space, fonts, banners, app blocks, content loaded later |
2. Field data and laboratory tests are not the same thing
A synthetic test is useful for reproducing a page under controlled conditions and analyzing network, main thread and waterfall behavior. Field data describes what actually happened to real users. They can differ, and that is not an error.
When there is enough traffic, I start from Shopify Web Performance reports and the available real-user data; I use PageSpeed Insights or laboratory tools to investigate the cause. If the store is new or has little traffic, lab testing plays a bigger role in the initial diagnosis, but I still treat it as a simulation rather than proof of every user's experience.
Practical example
The home page can have a good LCP in a laboratory test and still have mediocre INP for real users if a menu, filter or app runs a lot of JavaScript when the person interacts. Looking only at the initial score means missing half the problem.
3. LCP: identify the element before optimizing it
The first question is: which element is the LCP on that page? It can be a hero, product photo, banner or text block. After identifying it, I check:
- the actual asset size relative to the displayed space;
- format and compression;
- responsive images and size variants;
- loading priority;
- whether lazy loading was incorrectly applied above the fold;
- CSS or JavaScript delaying rendering;
- the request chain before the browser discovers the resource.
I therefore do not apply lazy loading indiscriminately: an image that is expected to become the LCP may need the opposite, namely to be discovered and requested earlier.
4. INP: when the site looks loaded but responds slowly
INP concerns response to interactions. On Shopify I focus especially on menus, variant selection, filters, predictive search, quantities, cart, drawer and components added by apps.
I inspect long JavaScript tasks, event listeners, rendering triggered by one action and code that runs even on pages where it is not needed. If an app introduces the cost, I first verify whether it can be configured better or loaded more selectively; replacing it is a later decision, not an automatic one.
INP diagnosis
- Is the slow interaction always the same or does it vary?
- Does the problem exist on a theme copy without recent changes?
- Which script occupies the main thread during the interaction?
- Does the feature depend on an app or the theme?
- Is the code loaded globally even though it is only needed on some templates?
- After the change, do variants, cart and tracking still work?
5. CLS: fix the shift, do not hide it
For CLS I look for elements that change position after the first render: images without reserved dimensions, fonts, promotional banners, widgets, reviews, app blocks and asynchronous sections.
The correct fix preserves space or makes rendering predictable. Hiding a useful component just to make the movement disappear is not optimization: it is loss of functionality.
6. Images: file weight is not the only issue
Good image handling considers file weight, delivered dimensions, screen density, loading priority and page position together. A multi-thousand-pixel image served inside a small card wastes bandwidth; a hero image loaded too late can hurt LCP even if it is compressed.
| Situation | What I check |
|---|---|
| Above-the-fold hero | Correct dimensions, priority, early discovery, no indiscriminate lazy loading |
| Product grid | Responsive sizes, dimensions matching the card, lazy loading below the fold |
| Long editorial images | Deferred loading when they are not immediately visible |
| Video/background | Poster image, whether autoplay is truly needed, network and rendering cost |
7. Apps and third-party scripts: measure before removing
Shopify lists apps, third-party libraries, analytics, theme code, images and videos among the factors that influence web performance. That does not mean every app is a problem: some work almost entirely in Admin or backend; others directly modify the storefront.
For frontend apps I check requests, JavaScript, CSS, app embeds, blocks and behavior before and after. If a feature generates real value, the goal may be to make it less expensive rather than remove it.
8. Theme and Custom Liquid: where I look for the real cost
On Online Store 2.0 I do not only inspect theme.liquid. A customization can live in sections, snippets, assets, JSON templates, app blocks or Custom Liquid stored inside template settings. Finding the correct source prevents “optimizing” a file that is not causing the issue.
When I change the theme I work on a copy, compare before and after and run regression checks on connected functions. The improvement needs to survive mobile, variants, search, menus, cart and tracking.
9. My performance diagnostic method
- Baseline: save metric, URL, device and test conditions.
- Segmentation: determine whether the issue affects home, product, collection or the entire site.
- Responsible element/code: isolate the LCP, JavaScript task, layout shift or suspicious request.
- Hypothesis: define which change should affect the cause.
- Minimum intervention: change one thing at a time when possible.
- Retest: repeat the check under comparable conditions.
- Regression: verify the main store functions.
- Field data: when available, check subsequent trends in reports.
10. What I do not promise from a performance intervention
I do not promise a 100 score, a Google position or a percentage increase in sales. Performance, ranking and conversion depend on multiple factors and I cannot automatically attribute a variation to one intervention.
The technical result I can verify is different: identify a cause, reduce its cost without breaking the store and document the before/after under the tested conditions.
11. Checklist before closing a Shopify speed project
- Problematic URLs and templates identified.
- Baseline saved before the change.
- LCP/INP/CLS investigated separately.
- Apps and scripts analyzed without random removals.
- Above-the-fold images handled differently from those below the fold.
- Change tested on mobile and desktop.
- Variants, menus, search, cart and tracking verified.
- No useful content hidden only to improve a score.
- New test comparable with the baseline.
- Field data checked again when traffic volume allows it.
Official sources
I am Francesco Guiducci, a freelance Shopify specialist and Shopify app developer. If you want to identify the bottleneck before changing the theme, these checks are part of my Shopify Audit.
Updated September 13, 2026.
Sources cited in this article
Official documentation and external references linked in the text. Shopify features change: always check against the current version.
- Shopify Help Center — Overview of web performance Shopify · help.shopify.com
- Shopify Help Center — Web performance reports Shopify · help.shopify.com



