Our Services
Close

How to Improve Shopify Core Web Vitals: LCP, INP and CLS Fixes

TL;DR

Shopify itself is rarely the reason stores fail Core Web Vitals — it's what gets added on top: app JavaScript, page builder code, oversized hero images and years of theme edits. Fix LCP by optimising above-the-fold images (under 200KB, WebP), preloading the hero and deferring render-blocking scripts. Fix INP by cutting JavaScript: remove unused apps, defer chat and pop-ups, scope scripts to the templates that need them. Fix CLS by setting image dimensions and reserving space for review widgets, banners and app blocks. Test product and collection pages separately from the homepage, and re-test after every app install or campaign.

If your Shopify store is failing Core Web Vitals, the problem is almost never Shopify itself. It's what's been added on top: apps, tracking scripts, page builder code, oversized images and years of theme edits.

To improve Shopify Core Web Vitals, focus on LCP, INP and CLS across your homepage, product pages and collection pages. The biggest culprits are usually large hero images, app JavaScript loading sitewide, page builder bloat, slow product media, layout shift from review widgets or announcement bars, and third-party scripts firing too early.

Core Web Vitals are not just a PageSpeed score. They measure how real users experience your store: how fast the main content appears, how quickly the page responds when someone taps or clicks, and how stable the layout is while it loads. Google uses these signals as part of how it evaluates page experience, and they matter for Shopify performance optimisation across search, ads and conversion rate.

This guide covers what each metric means, what causes failures on Shopify, and what to fix first.

What are Core Web Vitals on Shopify?

Core Web Vitals are three metrics Google uses to measure real-user experience on a webpage. They cover loading speed, interactivity and visual stability. On Shopify, all three can be affected by how your theme, apps and assets are configured.

The three metrics

MetricWhat it measuresGood threshold
Largest Contentful Paint (LCP)How quickly the main visible content loadsUnder 2.5 seconds
Interaction to Next Paint (INP)How fast the page responds when a user taps or clicksUnder 200 milliseconds
Cumulative Layout Shift (CLS)How stable the layout is while the page loadsUnder 0.1

LCP is typically the hero image, product image, banner or largest text block visible above the fold. If it loads slowly, users see a blank or partial page for too long.

INP replaced First Input Delay (FID) as Google's responsiveness metric in March 2024. It measures how quickly the page reacts to any interaction, not just the first one. Heavy JavaScript is the main cause of poor INP scores.

CLS measures unexpected layout movement. If content jumps around while loading, that's a CLS problem. Review widgets, late-loading banners and images without set dimensions are common causes on Shopify.

Field data vs lab data

Google recommends assessing Core Web Vitals using field data (real user measurements) wherever possible, not just lab tests. PageSpeed Insights shows both. The field data comes from the Chrome User Experience Report (CrUX) and reflects how actual visitors experience your store. Lab scores from tools like Lighthouse are useful for debugging but can differ significantly from what real users see.

Why Shopify stores fail Core Web Vitals

Shopify as a platform is not slow. The infrastructure is solid, CDN delivery is built in and the core Shopify storefront loads quickly on a clean theme. The performance problems almost always come from what gets added on top.

The real culprits are usually:

  • App bloat — every installed app can inject JavaScript, CSS and widgets into your pages, often sitewide even when the app is only needed on one template
  • Page builder code — tools like PageFly, Shogun and GemPages add extra wrappers, scripts and CSS that increase page weight and slow rendering
  • Oversized hero images — large, uncompressed images above the fold are one of the most common causes of poor LCP
  • Unoptimised product media — high-resolution images without proper compression or modern formats slow product and collection pages
  • Review widgets — third-party review apps often load late and cause both CLS and INP issues
  • Tracking scripts and pixels — Meta Pixel, TikTok Pixel, Google Tag Manager, Klaviyo and others all add to the JavaScript load
  • Fonts — web fonts that aren't preloaded or configured correctly can cause layout shift and render delays
  • Theme debt — themes that have been edited, customised and added to over several years often carry leftover CSS, scripts and sections that no longer serve a purpose
  • Late-loading banners and announcement bars — these frequently cause CLS when they appear after the page has started rendering
  • Dynamic sections and cart drawers — JavaScript-heavy interactive elements that load sitewide add to INP problems
  • Filter and search app scripts — collection page filtering tools are a common source of unnecessary JavaScript

The more apps, scripts and customisations a store has accumulated, the harder it becomes to pass Core Web Vitals without a proper audit. Read more about Shopify app bloat and how it affects store performance.

How to improve LCP on Shopify

LCP measures how quickly the largest visible element on the page loads. On Shopify, this is almost always the hero image on the homepage, the main product image on a product page, or a large banner on a collection page.

Quick answer: The fastest way to improve Shopify LCP is to optimise the largest above-the-fold image, reduce render-blocking scripts, preload the key visual asset and stop non-essential apps from loading before the main content.

What causes poor LCP on Shopify

The most common causes are large, uncompressed images, render-blocking JavaScript from apps loading before the page content, and heavy homepage sliders that try to load multiple images at once.

LCP fixes for Shopify

  • Compress and resize hero images — aim for under 200KB for above-the-fold images. Tools like Squoosh or Shopify's built-in image optimisation can help
  • Use WebP or AVIF formats — both are significantly smaller than JPEG or PNG at comparable quality. Shopify's CDN can serve WebP automatically in many cases
  • Avoid large homepage sliders — carousels force the browser to load several images upfront. A single, well-chosen hero image almost always performs better
  • Preload the main image — adding a <link rel="preload"> for the hero image tells the browser to fetch it early, before other resources
  • Reduce render-blocking CSS and JavaScript — scripts that load in the <head> before the main content delay LCP. Defer or async-load non-critical scripts
  • Stop apps loading before main content — apps that inject scripts into every page can push LCP back significantly. Audit which apps load sitewide and whether they need to
  • Set explicit image dimensions — images without width and height attributes can delay layout and affect both LCP and CLS
  • Test product and collection pages separately — LCP on your product pages is often worse than on the homepage. Don't assume a good homepage score means your whole store is fine

How to improve INP on Shopify

INP measures how quickly your page responds when a user interacts with it: tapping a button, selecting a product variant, opening a menu or adding something to the cart. A slow INP score means the page feels laggy and unresponsive, which directly affects conversion rate.

Quick answer: To improve INP on Shopify, reduce JavaScript. Audit apps, remove unused scripts, defer non-critical tools, simplify interactive elements and avoid loading product, review or page builder scripts where they are not needed.

What causes poor INP on Shopify

The main cause is too much JavaScript executing on the main thread. Every app that loads on your store adds to this. The problem compounds when multiple apps load sitewide, even on pages where they serve no purpose.

Common INP offenders on Shopify:

  • Product option and variant apps
  • Review widgets (Okendo, Judge.me, Yotpo and similar)
  • Live chat tools loading on every page
  • Pop-up and email capture apps
  • Cart drawer scripts
  • Filtering and search apps on collection pages
  • Page builder scripts running on pages they didn't build

INP fixes for Shopify

  • Reduce the JavaScript payload — fewer scripts mean faster interaction response. Start with Chrome DevTools' Coverage tab to see which scripts are unused
  • Remove apps you no longer need — uninstalled apps sometimes leave script embeds behind. Check your theme's <head> for leftover code
  • Defer non-critical scripts — analytics, chat tools and pop-ups do not need to block the main thread. Load them after the page is interactive
  • Delay chat and pop-ups until interaction — trigger these only after the user has scrolled or clicked, not on page load
  • Scope product scripts to product pages only — there is no reason for product option or variant scripts to load on the homepage or collection pages
  • Simplify heavy cart drawers — complex cart drawers with upsell logic and animations add significant JavaScript weight. Consider whether the functionality justifies the cost
  • Remove duplicate analytics and pixels — it's common to find Meta Pixel firing twice, or GTM and a direct Klaviyo script running alongside each other
  • Replace app functionality with native theme sections — if your theme can do something natively, removing the app that duplicates it reduces JavaScript load

If your store relies heavily on a page builder, this is worth reading: Shopify custom theme vs page builder. Page builder scripts are a significant source of INP problems on stores that use them across multiple templates.

How to improve CLS on Shopify

CLS measures unexpected layout movement: when content shifts position after the page has started rendering. On mobile, this is particularly disruptive. A customer tries to tap a button and the page jumps, sending them somewhere they didn't intend to go.

Quick answer: To fix CLS on Shopify, reserve space for anything that loads after the page starts rendering. Images, review widgets, banners, fonts and app blocks should not push content around once the customer has started reading or tapping.

What causes CLS on Shopify

Layout shift on Shopify is almost always caused by elements that load asynchronously, after the initial render, without reserved space.

Common CLS causes:

  • Images without explicit width and height attributes
  • Product cards that change height depending on whether a badge, label or review snippet loads
  • Review widgets (star ratings, review counts) loading after the surrounding content
  • Announcement bars and promo banners appearing above or within content after load
  • Cookie consent banners pushing content down
  • Chat widgets appearing in the corner and shifting nearby elements
  • Dynamic payment buttons (Shop Pay, Apple Pay, Google Pay) rendering at different heights
  • Fonts swapping from a fallback to the web font mid-render
  • Lazy-loaded sections that don't have reserved height before they load

CLS fixes for Shopify

  • Set image width and height attributes — this lets the browser reserve the correct space before the image loads. Without these, the page reflows when the image appears
  • Reserve space for review widgets — add a minimum height to the container that holds star ratings and review counts so the surrounding content doesn't shift when they load
  • Avoid late-loading announcement bars — if a promo bar loads after the page renders, it pushes everything down. Either load it immediately or use a fixed position that doesn't affect document flow
  • Stabilise product cards — use consistent card heights across your collection grid, and avoid dynamic badges or labels that change card dimensions
  • Use font-display: swap carefully — it prevents render blocking but can cause text to shift as the web font replaces the fallback. font-display: optional is sometimes a better choice for CLS
  • Reserve space for dynamic app blocks — if an app injects a widget into your product page (size guides, trust badges, upsell blocks), set a minimum height on the container
  • Test mobile layouts specifically — CLS issues are often more pronounced on mobile, where smaller screens amplify any layout movement

Which Shopify templates should you test first?

Most store owners test the homepage and stop there. That's a mistake. The homepage is often not where your performance problems are worst, and it's rarely where your customers spend the most time or money.

Prioritise in this order

  1. Product pages — this is where purchase decisions happen. Slow LCP, laggy INP when selecting variants, or CLS from review widgets all directly affect conversion rate. Product pages also tend to carry the most app load: reviews, upsells, size guides, trust badges, payment buttons.
  2. Collection pages — these are often the entry point from search and paid ads. They carry filter scripts, product card grids and lazy-loaded images. Collection page performance is frequently worse than the homepage and gets far less attention.
  3. Homepage — important for brand first impressions and direct traffic, but often not where Core Web Vitals failures hurt most commercially.
  4. Cart page and checkout — Shopify's checkout is hosted separately and performs well by default. The cart page, however, can be slow if it uses a custom template with heavy app integrations.
  5. Paid landing pages — if you're running Meta or Google ads to custom landing pages built in a page builder, test these separately. Page builder pages often have the worst Core Web Vitals scores on the entire store.
  6. Blog pages driving SEO traffic — if blog posts are bringing in organic visitors, a slow blog template affects both bounce rate and the experience of users arriving from search.

The practical takeaway: run PageSpeed Insights on at least one URL from each of these template types. The scores will often be different, and the problems will be different too. Fixing the homepage alone won't fix your store.

Tools to diagnose Shopify Core Web Vitals

Before you start fixing things, you need to know what's actually failing and where. These are the tools worth using.

ToolWhat it's useful for
Google Search ConsoleThe Core Web Vitals report shows which URLs are failing based on real user data, grouped by template type. Start here.
PageSpeed InsightsShows both field data (CrUX) and lab data for a specific URL. Breaks down LCP, INP and CLS with specific diagnostics. Test individual product and collection URLs, not just the homepage.
Chrome DevToolsUse the Performance tab to profile JavaScript execution and find long tasks. The Coverage tab shows unused JavaScript and CSS. Essential for diagnosing INP problems.
LighthouseBuilt into Chrome DevTools. Runs a lab-based audit and gives specific recommendations. Useful for debugging but scores can differ from real-user field data.
CrUX (Chrome User Experience Report)The underlying dataset behind PageSpeed Insights field data. Accessible via the CrUX dashboard or the PageSpeed Insights API. Reflects real user experience across 28 days.
WebPageTestMore detailed waterfall views than PageSpeed Insights. Useful for identifying exactly which resources are blocking render and in what order.
Shopify theme editorCheck which app embeds are active in your theme. Many stores have embeds enabled for apps that were uninstalled months ago.

Lab data vs field data: what to trust

Lab data (Lighthouse, WebPageTest) runs a simulated test under controlled conditions. It's useful for identifying specific issues and testing fixes, but it doesn't always reflect what real users experience.

Field data from CrUX is based on actual Chrome browser sessions over the past 28 days. If your store doesn't have enough traffic, field data may not be available, and you'll need to rely on lab scores for now.

The practical approach: use Search Console to identify which pages are failing, PageSpeed Insights to understand why, and Chrome DevTools to dig into the specifics.

Shopify Core Web Vitals checklist

Use this as a starting point when auditing your store. Work through it methodically rather than making changes all at once, so you can identify what actually moves the needle.

  • Test homepage, at least one product page and at least one collection page separately in PageSpeed Insights
  • Check field data in PageSpeed Insights (not just the lab score)
  • Review the Core Web Vitals report in Google Search Console to identify failing URLs by template
  • Compress and resize above-the-fold images to under 200KB where possible
  • Convert hero and product images to WebP or AVIF
  • Remove apps you no longer actively use
  • Check the Shopify theme editor for app embeds that are still active from uninstalled apps
  • Check the JavaScript payload in Chrome DevTools (Coverage tab) for unused scripts
  • Defer non-critical scripts (chat, pop-ups, analytics) so they don't block initial render
  • Remove duplicate tracking pixels (check for Meta Pixel firing twice, duplicate Klaviyo scripts, etc.)
  • Remove or replace large homepage sliders with a single hero image
  • Set explicit width and height on all images
  • Reserve space in CSS for review widgets, announcement bars and dynamic app blocks
  • Stabilise product card heights across collection grids
  • Test mobile layouts specifically for CLS issues
  • Re-test after every app install, theme change, campaign launch or major design update

A note on testing frequency: Core Web Vitals scores can change after seemingly minor updates. Adding a new app, enabling a new theme section or installing a new pixel can all affect LCP, INP and CLS. Build re-testing into your workflow, not just your launch checklist.

For a deeper look at how technical SEO and performance overlap, see our guide to Shopify technical SEO.

When to hire a Shopify performance optimisation agency

A lot of the fixes in this guide are things a store owner or in-house marketer can do: compressing images, removing unused apps, checking for duplicate pixels. If your store is relatively clean and the issues are straightforward, start there.

But there are situations where a DIY approach stops being practical.

Signs you need a specialist

  • Core Web Vitals keep failing despite changes — if you've compressed images and removed a few apps but scores haven't moved, the problem is likely deeper in the theme code or JavaScript architecture
  • Product pages are slow and you're not sure why — product page performance is often affected by a combination of factors that require profiling to diagnose properly
  • The theme has accumulated years of edits — custom CSS, leftover scripts, deprecated sections and old app integrations are hard to untangle without knowing what each piece does
  • You have many apps and aren't sure which ones are safe to remove — removing the wrong app can break functionality. An audit identifies what's actually being used and what isn't
  • Your store was built on a page builder — page builder dependency is one of the harder performance problems to fix without rebuilding affected templates. See our custom Shopify theme development service for what that involves
  • Performance issues are affecting paid ads or conversion rate — slow pages cost money directly. If ads are underperforming or conversion rate is lower than expected, performance is worth investigating as a contributing factor

What Futur Media does

Futur Media is a UK Shopify performance optimisation agency. We work with ecommerce brands to diagnose and fix Core Web Vitals issues, reduce app and script bloat, improve page builder performance and clean up slow theme code.

We don't recommend a rebuild by default. Our process starts with a Shopify performance optimisation audit that reviews your apps, scripts, theme code and Core Web Vitals across your key templates. From there, we give you a prioritised fix list: some stores need image optimisation and script cleanup, others need sections rebuilt, and some benefit from moving to a leaner custom theme. The recommendation depends on what's actually causing the problem.

Want help improving Shopify Core Web Vitals?

If your Shopify store is slow, failing Core Web Vitals or getting weighed down by apps and page builder code, the first step is working out what's actually causing the problem.

Our Shopify performance audits review your apps, scripts, theme code, templates and Core Web Vitals, then give you a prioritised fix list with clear next steps. No generic recommendations. No unnecessary rebuilds.

Get a free Shopify performance audit, or if you'd prefer to talk through what you're seeing first, book a strategy call and we'll take a look together.

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

FAQ

FAQs

What are Core Web Vitals on Shopify?

Core Web Vitals are Google's user experience metrics for loading speed, responsiveness and visual stability. On Shopify, they are usually affected by theme code, apps, product media, scripts and layout behaviour. The three metrics are LCP (loading), INP (interactivity) and CLS (visual stability).

How do I improve LCP on Shopify?

Improve LCP by optimising the largest above-the-fold image or content block, reducing render-blocking scripts, preloading key assets, avoiding oversized sliders and testing product and collection pages separately from the homepage.

How do I improve INP on Shopify?

Improve INP by reducing JavaScript, removing unused apps, deferring non-critical scripts, simplifying interactive elements, avoiding duplicate tracking and loading scripts only where they are needed.

How do I fix CLS on Shopify?

Fix CLS by setting image dimensions, reserving space for review widgets and app blocks, avoiding late-loading banners, stabilising product cards and testing mobile layouts for unexpected movement.

Do Shopify apps affect Core Web Vitals?

Yes. Shopify apps can affect Core Web Vitals when they add JavaScript, CSS, widgets, tracking scripts or layout elements that slow loading, delay interactions or shift content. Apps that load sitewide are particularly impactful, even on pages where they serve no purpose.

Can Shopify page builders hurt Core Web Vitals?

Yes, they can. Page builders often add extra JavaScript, CSS and layout wrappers. They are useful for flexibility, but they can make LCP, INP and CLS harder to pass if used heavily on key templates. The impact depends on how many pages use the builder and how complex those pages are.

How often should I check Shopify Core Web Vitals?

Check Core Web Vitals monthly, and always after installing apps, changing themes, launching campaigns, adding tracking scripts or making major design changes. Scores can shift significantly after what seems like a minor update.

Should I rebuild my Shopify theme if Core Web Vitals are failing?

Not always. Some stores can be improved significantly with image optimisation, script reduction and app cleanup. A rebuild makes sense when the theme, page builder or app stack is too bloated to fix efficiently, or when the performance problems are structural rather than surface-level. An audit will tell you which situation you're in.

Articles

Related Articles

Shopify Services

Our Shopify Services