Stylesheet initiators on React sites

37.5% of audited sites (3,593) load stylesheets directly via the HTML parser (71% good LCP, 1.8s median), whereas the 36.1% (3,459) injecting stylesheets via JavaScript drop to 77% good LCP (1.7s median).

Field data PhoneDesktopAll Scope All sites October 2026 edition · Desktop field outcomes · React sites only
React Scoped to 9,570 sites out of 210,902 analyzed (frameworks) Compare with all sites →

99.3% of React sites use inline <style> blocks stylesheet initiator type, and 79% of those sites have a good LCP, against 79% of all React sites.

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 1,979 with desktop field data · 9,569 sites with stylesheet initiator typeBy Arjen Karel · corewebvitals.io/state-of-cwv
1

LCP pass rate

Sites with inline <style> blocks stylesheet initiator type have a good LCP most often: 79%, against 79% of all React sites. Sites with parser-initiated stylesheets CSS initiators have it least often, at 71%.

SitesGood, needs improvement, poor LCPMedian
All React sites1,97979%1.5s
Inline <style> blocks 99.3%1,94879%1.5s
Script-injected CSS 36.1%83977%1.7s
Other initiators (@import / headers) 1.1%5275%1.6s
HTML parser (<link rel="stylesheet">) 37.5%1,18171%1.8s
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 1,979 with desktop field data · 9,569 sites with stylesheet initiator typeBy Arjen Karel · corewebvitals.io/state-of-cwv
2

Stylesheet initiator type usage

Inline <style> blocks is the most used: 99.3% of React sites.

Sites using each option (sites can use more than one) 9,569 sites
Inline <style> blocks 99.3% HTML parser (<link rel="stylesheet">) 37.5% Script-injected CSS 36.1%
Inline <style> blocks 99.3% HTML parser (<link rel="stylesheet">) 37.5% Script-injected CSS 36.1% Other initiators (@import / headers) 1.1%
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 1,979 with desktop field data · 9,569 sites with stylesheet initiator typeBy Arjen Karel · corewebvitals.io/state-of-cwv
3

LCP phase breakdown by stylesheet initiator

Across the four LCP sub-parts in Chrome's field data, the largest gap between inline <style> blocks and parser-initiated stylesheets sits in time to first byte (TTFB): 715 ms median for inline <style> blocks against 919 ms for parser-initiated stylesheets. Overall median field LCP is 1.6s for inline <style> blocks (TTFB 715 ms, load delay 414 ms, load duration 142 ms, render delay 192 ms) versus 1.9s for parser-initiated stylesheets.

Median LCP phase breakdown (Chrome field p75) Load delay Median LCP
React sites with stylesheet initiator type 1,323706 ms414 ms192 ms414 mslab 431 ms1.6s
HTML parser (<link rel="stylesheet">) 889919 ms368 ms237 ms368 mslab 396 ms1.9s
Inline <style> blocks 1,302715 ms414 ms192 ms414 mslab 431 ms1.6s
Script-injected CSS 593772 ms442 ms218 ms442 mslab 453 ms1.7s
Other initiators (@import / headers) 42462 ms571 ms207 ms571 mslab 561 ms1.5s
TTFB Resource load delay Resource load time Element render delay
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 1,979 with desktop field data · 9,569 sites with stylesheet initiator typeBy Arjen Karel · corewebvitals.io/state-of-cwv
4

Stylesheet initiator type per platform

Wix sets the stylesheet initiator type to inline <style> blocks on 100% of its sites, and 92% of Wix sites have a good LCP, against 79% of all sites.

PlatformStylesheet initiator type on its sitesGood LCP
React sites with stylesheet initiator type 9,569 sitesInline <style> blocks 99%HTML parser (<link rel="stylesheet">) 38%Script-injected CSS 36%79%
Wix 5,824 sitesInline <style> blocks 100%Script-injected CSS 31%92%
WordPress 2,342 sitesInline <style> blocks 100%HTML parser (<link rel="stylesheet">) 97%Script-injected CSS 46%66%
Inline <style> blocks HTML parser (<link rel="stylesheet">) Script-injected CSS Other initiators (@import / headers)
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 1,979 with desktop field data · 9,569 sites with stylesheet initiator typeBy Arjen Karel · corewebvitals.io/state-of-cwv
5

Stylesheet initiator or the platform

Does the platform explain the stylesheet initiator type difference?

On Wix, 92% of sites with inline <style> blocks stylesheet initiator type have a good LCP, against 90% of Wix sites with script-injected stylesheets. Within Wix, sites with inline <style> blocks and script-injected stylesheets have a good LCP about equally often. On WordPress, 66% of sites with inline <style> blocks stylesheet initiator type have a good LCP, against 65% of WordPress sites with parser-initiated stylesheets. Within WordPress, sites with inline <style> blocks and parser-initiated stylesheets have a good LCP about equally often.

Why JavaScript-injected stylesheets delay rendering and trigger layout recalculation

Stylesheets declared in HTML (37.5% of sites, 3,593) are discovered immediately by the preload scanner (71% good LCP, 1.8s median), and inline <style> blocks (99.3%) require zero network round-trips (79% good LCP). When stylesheets are injected at runtime by JavaScript (36.1% of sites, 3,459), CSS discovery waits for script download and execution, dropping good LCP to 77% (1.7s median).

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 1,979 with desktop field data · 9,569 sites with stylesheet initiator typeBy Arjen Karel · corewebvitals.io/state-of-cwv
6

Understanding stylesheet initiators

Extract component CSS at build time into static <link rel="stylesheet"> tags or inline critical <style> blocks instead of injecting stylesheets dynamically from JavaScript at runtime. Across all audited sites, 37.5% use parser-initiated CSS (71% good LCP) while 36.1% inject CSS via JavaScript (77% good LCP).

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 1,979 with desktop field data · 9,569 sites with stylesheet initiator typeBy Arjen Karel · corewebvitals.io/state-of-cwv
Related signals Image dimensions set → Script initiator → Stylesheets per page → Scripts per page → By Arjen Karel · 9,570 crawled React sites (1,979 with desktop Chrome field data, 9,569 sites with stylesheet initiator type, October 2026) · How we measured