Skip to content

Problem

Core Web Vitals failing on product pages: how to fix it

The three metrics measure different things and share almost no fixes. Largest contentful paint is about how quickly the main image or heading appears, interaction to next paint is about how quickly the page responds when someone taps, and cumulative layout shift is about whether things move under their finger. Find which one is failing in field data, on mobile, and work on that. Product pages fail most often on the second and third.

By CartKernel · Last reviewed 2026-09-07

Does this look familiar?

  • The Search Console report marks the product page group as needing improvement or poor on mobile
  • The main product image takes noticeably long to appear on a phone
  • Tapping a variant swatch or the add to cart button feels delayed
  • Content jumps as review widgets, badges or promotional bars load in
  • Lab tools give a good score while field data continues to fail
  • Desktop passes comfortably while mobile does not

Causes, ranked

Why it happens, most common first

Check them in this order. The first two account for most cases we open.

  • most common

    Third party scripts are occupying the main thread

    Review widgets, chat tools, personalisation apps, tag managers and analytics all execute on the same thread that handles taps. When they run during or just after page load, the first interaction waits for them. This is the dominant cause of poor interaction to next paint on product pages.

  • most common

    The main product image is discovered late or is too large

    An image loaded lazily, inserted by a script, delivered inside a carousel, or served at desktop dimensions to a phone all delay the largest paint. The browser cannot prioritise what it does not know about early, so discovery matters as much as file size.

  • common

    Elements load in above existing content

    Promotional bars, cookie notices, review star ratings, stock messages and badge apps that insert themselves after render push the page down. Without reserved space, each one contributes to layout shift, and product pages tend to carry several at once.

  • common

    Images and embeds have no dimensions

    Any image, video or iframe without width and height attributes or an aspect ratio in the stylesheet leaves the browser guessing. When the real size arrives, everything below moves. This is the simplest layout shift cause and one of the most common.

  • common

    Web fonts swap late

    Fonts loaded without a display strategy or preloading cause text to render in a fallback and then reflow. On a product page with a long title and specification list, that reflow moves a large amount of content.

  • occasional

    Variant selection re-renders more than it needs to

    Selecting a size or colour that rebuilds the gallery, price block and availability message can take long enough to register as a slow interaction, and can shift layout if the new content is a different height. Heavier themes do more work per selection than they need to.

  • occasional

    The server is slow to respond

    A slow first byte delays everything downstream, so the largest paint cannot be fast no matter how well the images are optimised. This is more common on self hosted stores and on pages that build recommendations on request.

The fix

In this order

Each step is something you can do today. Do them in sequence; skipping ahead is how a review fails twice.

Prevent it next time

  • Set a performance budget for product pages and check it before any app is installed
  • Require dimensions or an aspect ratio on every image and embed added to a template
  • Review installed apps quarterly and remove anything not earning its script weight
  • Track field data for the product page group monthly, not only when a report turns red
  1. Read field data for the product page group on mobile

    Use the Search Console report and the field section of the page speed tool to see which metric is failing for real visitors. Field data is collected over a rolling period, so a change today will take weeks to show. Note the starting values before you begin.

  2. Reproduce the interaction delay on a real device

    Test on a mid range phone with the network throttled, and record what happens when you tap a variant swatch and the add to cart button. Use the browser's performance profile to see which scripts hold the thread during that tap.

  3. Delay or remove third party scripts

    Load review widgets, chat and personalisation after the page is interactive, or on user interaction rather than on load. Remove tools nobody uses. Each script removed from the initial load is time returned to the first tap.

  4. Make the main image load first

    Serve it in a modern format at the size the device needs, mark it as high priority, remove lazy loading from it specifically, and make sure it is present in the initial markup rather than inserted by a script or hidden inside a carousel that initialises late.

  5. Reserve space for everything that arrives late

    Set explicit dimensions or aspect ratios on every image, video and embed, and give review widgets, badges, banners and stock messages a fixed height container before their content arrives. Nothing above the fold should be allowed to push content down.

  6. Fix font loading

    Preload the fonts used above the fold, set a display strategy that avoids invisible text, subset to the characters you need, and match the fallback font metrics so the swap does not change line heights.

  7. Break up long tasks

    Split heavy initialisation into smaller pieces and yield between them so the browser can respond to input. Defer anything not needed for the first view, including recommendation carousels and anything below the fold.

  8. Deploy, then wait for field data to catch up

    After the changes are live, monitor lab results immediately for regressions and field data over the following weeks. Judge success on the field metric for the mobile product page group, since that is the measurement that counts.

When to get help

Get help when the failing metric is interaction to next paint and the cause is spread across several apps, because untangling that means profiling on real devices and making decisions about which tools the business is willing to lose. It is also worth help when the store is on a heavily customised theme or a headless front end, where the fixes involve rendering strategy rather than settings. Both cases benefit from someone who can trade off measurable speed against the features the merchandising team relies on.

Get a Growth Analysis

Free. We reply within one business day.

Questions

Asked alongside this problem

By CartKernel · Last reviewed

How much do Core Web Vitals affect rankings?

They are part of how page experience is assessed and they act as a differentiator between pages of similar relevance rather than a primary ranking factor. Treat the work as worthwhile for conversion and for competing on close calls, not as a route to outranking a more relevant page.

Why does my lab score look fine when the report still fails?

Lab tests simulate one visit on one configuration. The report uses field data collected from real visitors over a rolling period, across the devices and connections they actually have. When they disagree, trust the field data and test on a mid range phone rather than a fast laptop.

Does lazy loading images improve product page performance?

It helps for images below the fold and hurts when applied to the main product image, because it delays the very element the largest paint measures. Exclude the primary image and anything else visible on load from lazy loading, and apply it to the rest.

How long before improvements show in the Search Console report?

The report is based on a rolling window of field data, so expect several weeks before a fix is fully reflected, and longer for page groups with lower traffic. Watch lab measurements for immediate confirmation that the change worked, then wait for the field data to follow.

Related problems, answers and terms

All problems
ProblemShopify store slow on mobile: how to fix itA Shopify store slow on mobile usually comes down to app scripts, oversized images and busy theme sections. How to find the weight and remove it in order.OpenProblemWooCommerce site slow: how to fix itA slow WooCommerce site is usually database work and uncached requests, not the theme alone. Diagnose server, database and front end in that order.OpenProblemLow add to cart rate: how to fix itA low add to cart rate points at the product page or the traffic reaching it. Separate the two, then fix what is missing from the buying decision.OpenProblemDiscovered currently not indexed on an ecommerce site: how to fix itDiscovered currently not indexed means Google found the URL and chose not to crawl it yet. On a store, that is usually a crawl priority problem.OpenAnswerDoes site speed affect ecommerce rankings?Site speed is a small ranking factor and a large conversion factor. What Google measures, where store templates lose time, and how to prioritise fixes.OpenAnswerWhy is mobile conversion rate lower than desktop?Mobile converts lower for three reasons: different intent, cross-device buying counted on desktop, and real friction. How to separate them and fix the last.OpenGlossaryCore Web VitalsCore Web Vitals are Google's three field metrics for loading, responsiveness and visual stability. The thresholds, a worked store report, and what moves them.OpenGlossaryInteraction to next paint (INP)Interaction to next paint (INP) measures how long a page takes to respond visibly to a tap or click. Thresholds, a worked breakdown, and what fixes it.Open

Stop the leak.

A free Growth Analysis finds what is broken and ranks it by the revenue it costs you.