Shopify LCP resource discovery and the Core Web Vitals

HTML markup, CSS background-image, <link rel="preload">, JavaScript, or HTTP Link header: how the browser finds the LCP element and how much load delay each path adds.

Field data PhoneDesktopAll Scope All sites October 2026 edition · Phone field outcomes · Shopify sites only
Shopify Scoped to 8,248 sites out of 203,892 analyzed (cms) Compare with all sites →

On 89.4% of Shopify sites, the browser finds the LCP element straight in the HTML. 9.5% hide it in a CSS stylesheet, 0.4% declare it with <link rel="preload">, and 0.6% inject it with JavaScript. Sites with the LCP element in HTML have a good LCP on 96% of sites (1.3s median), against 92% for CSS discovery (1.5s) and 86% for JavaScript discovery (1.7s). Preloading cuts median resource load delay to 652 ms, the lowest of any discovery path.

The State of Web Vitals · October 2026 · Shopify: 8,246 crawled sites · 5,825 with phone field data · 7,873 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
1

LCP pass rate

Sites with HTML discovery have a good LCP on 96% of Shopify sites, <link rel="preload"> at 73%, CSS discovery at 92%, and JavaScript discovery at 86%. Why does <link rel="preload"> (73%) trail plain HTML discovery (96%) when preload is meant to speed up loading? Because six in ten preload sites use it on a CSS background-image on slower sites. On those background images, preload lifts good LCP from 92% to 73%.

SitesGood, needs improvement, poor LCPMedian
All Shopify sites5,82595%1.4s
103 Early Hints 0.1%7100%1.5s
HTML document 89.4%4,98296%1.3s
CSS background-image 9.5%51092%1.5s
JavaScript injection 0.6%3586%1.7s
<link rel="preload"> 0.4%2773%1.7s
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · Shopify: 8,246 crawled sites · 5,825 with phone field data · 7,873 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
2

LCP resource discovery usage

On Shopify, 89.4% of sites put their LCP element in the initial HTML markup. 9.5% (747 sites) put the LCP image inside a CSS background-image rule. Explicit <link rel="preload"> tags appear on 0.4% of Shopify sites (32 sites), JavaScript injection on 0.6% (45 sites).

HTML document 89.4%
HTML document 89.4% CSS background-image 9.5% JavaScript injection 0.6% <link rel="preload"> 0.4% 103 Early Hints 0.1%
The State of Web Vitals · October 2026 · Shopify: 8,246 crawled sites · 5,825 with phone field data · 7,873 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
3

LCP phase breakdown by discovery path

How the browser discovers the LCP asset directly sets its resource load delay: <link rel="preload"> starts the download after a median 652 ms, HTML discovery after 577 ms, CSS discovery after 809 ms, JavaScript discovery after 748 ms. When a hero image lives in CSS, Chrome must download and parse the stylesheet and match the selector against the DOM before it sees the image URL. That adds 232 ms of load delay over HTML discovery.

Median LCP phase breakdown (Chrome field p75) Load delay Median LCP
Shopify sites with LCP resource discovery 4,808401 ms591 ms306 ms591 mslab 596 ms1.4s
HTML document 4,307400 ms577 ms302 ms577 mslab 581 ms1.3s
JavaScript injection 30449 ms748 ms218 ms510 ms748 mslab 794 ms1.7s
CSS background-image 440403 ms809 ms348 ms809 mslab 827 ms1.6s
TTFB Resource load delay Resource load time Element render delay
The State of Web Vitals · October 2026 · Shopify: 8,246 crawled sites · 5,825 with phone field data · 7,873 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
4

LCP discovery path by element type

More than half of all <link rel="preload"> sites (7 of 32) preload a CSS background-image rather than an <img> tag. Preloading cuts the background image's field load delay from 809 ms to 652 ms. Those sites score 86% on LCP against 92% without preload. Among standard <img> LCP elements, HTML discovery covers 6,008 sites (95% good, 577 ms load delay), <link rel="preload"> covers 20 sites (63% good, 543 ms delay), and JavaScript injection covers 32 sites (85% good, 900 ms delay).

Discovery path <img> element CSS background-image Text block <video> element
HTML document
95% 577 ms delay 6,008 sites
few sites
97% 585 ms delay 685 sites
96% 566 ms delay 349 sites
CSS background-image few sites
92% 809 ms delay 747 sites
few sites few sites
<link rel="preload">
63% 543 ms delay 20 sites
few sites few sites few sites
JavaScript injection
85% 900 ms delay 32 sites
few sites few sites few sites
The State of Web Vitals · October 2026 · Shopify: 8,246 crawled sites · 5,825 with phone field data · 7,873 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
5

LCP resource discovery per framework

jQuery discovers the LCP element in HTML on 80% of its sites and in CSS on 19%, and 93% of jQuery sites have a good LCP. Vue discovers the LCP element in HTML on 89% of its sites and in CSS on 10%, and 94% of Vue sites have a good LCP.

FrameworkLCP resource discovery on its sitesGood LCP
Shopify sites with LCP resource discovery 7,873 sitesHTML document 89%95%
Vue 892 sitesHTML document 89%94%
jQuery 3,031 sitesHTML document 80%CSS background-image 19%93%
HTML document CSS background-image JavaScript injection <link rel="preload"> 103 Early Hints
The State of Web Vitals · October 2026 · Shopify: 8,246 crawled sites · 5,825 with phone field data · 7,873 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
6

LCP discovery path or the framework

Does the framework explain the discovery gap?

On jQuery, 93% of sites with HTML discovery have a good LCP, against 91% of jQuery sites whose LCP image sits in CSS.

How much time early discovery saves

Resource load delay is the gap between Time to First Byte (when the HTML arrives) and the moment the browser starts downloading the LCP resource. When the LCP image is a standard <img> in the HTML, Chrome's preload scanner finds it at a 577 ms median load delay. When the image sits in an external stylesheet as a background-image, load delay jumps to 809 ms. The browser has to download the CSS, build the CSSOM, and match selectors to the DOM before it sees the image URL. A <link rel="preload" as="image"> tag in the <head> lets the preload scanner start the image download alongside the stylesheet. That cuts the CSS background image's load delay from 809 ms to 652 ms.

The State of Web Vitals · October 2026 · Shopify: 8,246 crawled sites · 5,825 with phone field data · 7,873 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
7

Understanding LCP resource discovery

Render your hero banner with Liquid's image_tag filter (image_url | image_tag: preload: true, fetchpriority: 'high') instead of a section CSS background-image or a JavaScript slider. On Shopify, 89.4% of stores discover their LCP in the HTML (96% good LCP) and 0.4% use <link rel="preload"> (73% good LCP), while stores that hide the hero in CSS drop to 92% good LCP (809 ms median load delay).

The State of Web Vitals · October 2026 · Shopify: 8,246 crawled sites · 5,825 with phone field data · 7,873 sites with LCP resource discoveryBy Arjen Karel · corewebvitals.io/state-of-cwv
Related signals LCP image size → LCP element type → LCP origin → LCP image format → By Arjen Karel · 8,246 crawled Shopify sites (5,825 with phone Chrome field data, 7,873 sites with LCP resource discovery, October 2026) · How we measured