// Performance
Core Web Vitals for Shopify: Why Themes Are the Problem
Shopify Core Web Vitals scores are typically limited by theme and app choices, not hosting. How to diagnose and fix LCP, CLS, and INP on Shopify specifically.
In this article
Core Web Vitals on Shopify
Shopify stores often score worse than WordPress or custom sites on Core Web Vitals — not because Shopify's servers are slow, but because the app ecosystem encourages installation of JavaScript-heavy tools that increase INP, add layout-shifting elements that hurt CLS, and block rendering that delays LCP.
Poor Core Web Vitals mean search ranking penalties and lower conversion rates. Google's research shows sites meeting CWV thresholds see higher session time and better conversion. For most Shopify stores, the path to passing CWV runs through theme selection and app reduction — not infrastructure changes.
Fixing LCP on Shopify
LCP measures time until the largest visible element loads. On product pages it's usually the hero product image; on collection pages, a hero banner or first product image. Common killers: the hero image isn't preloaded, it's too large, or a render-blocking script delays the entire page.
Fixes: add fetchpriority='high' to your hero product image tag in the theme. Remove lazy loading from the first product image if your theme applies it globally. Preload hero images with <link rel='preload'> in <head>. Compress hero images to under 100KB.
- Target LCP: under 2.5s (Good), under 4.0s (Needs Improvement), over 4.0s (Poor)
- Add fetchpriority='high' to hero product image
- Remove lazy loading from first product image
- Preload with <link rel='preload'> in <head>
- Check for render-blocking script delaying LCP element
Fixing CLS on Shopify
CLS measures unexpected visual movement as the page loads. On Shopify: images without explicit dimensions cause reflow when they load, font swaps shift text position, and apps injecting content after initial render shift layout. Image tags should always include width and height attributes so the browser reserves space before images load.
App injections are a major CLS source. Cookie banners, chat widgets, popup apps, and review widgets that load after the initial render shift content. Move these to load before main content where possible, or give them reserved space.
Improving INP on Shopify
INP measures delay between user interaction and next frame paint. Poor INP means sluggish buttons, lagging filters, variant selectors that take a beat. The main cause on Shopify: JavaScript main thread congestion from heavy app bundles that execute synchronously during page load.
Identify long tasks using Chrome DevTools Performance tab. Any task over 50ms blocks user interaction. Defer non-critical JavaScript and remove unused app scripts to reduce main thread pressure.
Theme choice is the biggest CWV lever
After app bloat, theme choice is the single biggest CWV determinant. Shopify's Dawn theme was designed specifically with Core Web Vitals in mind and is among the best-optimized. Many older third-party premium themes load 2–3× more JavaScript than Dawn.
If you're on an older feature-heavy theme and CWV remain consistently poor despite other optimizations, a migration to Dawn may be the biggest single improvement available. WebEnture's Shopify Store Audit Agent runs CWV diagnostics specific to your store, identifying the exact scripts, images, and layout issues affecting each metric.