Stylesheet initiators on React sites

37.5% of audited sites (3,593) load stylesheets directly via the HTML parser (70% good LCP, 2.0s median), whereas the 36.1% (3,459) injecting stylesheets via JavaScript drop to 80% good LCP (1.5s median).

Field data PhoneDesktopAll Scope All sites October 2026 edition · Phone 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 84% of those sites have a good LCP, against 84% of all React sites.

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone 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: 84%, against 84% of all React sites. Sites with parser-initiated stylesheets CSS initiators have it least often, at 70%.

SitesGood, needs improvement, poor LCPMedian
All React sites5,48884%1.4s
Inline <style> blocks 99.3%5,44384%1.4s
Script-injected CSS 36.1%2,11180%1.5s
Other initiators (@import / headers) 1.1%7173%1.8s
HTML parser (<link rel="stylesheet">) 37.5%2,23970%2.0s
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone 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 · 5,488 with phone 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): 502 ms median for inline <style> blocks against 952 ms for parser-initiated stylesheets. Overall median field LCP is 1.4s for inline <style> blocks (TTFB 502 ms, load delay 433 ms, load duration 131 ms, render delay 180 ms) versus 2.0s for parser-initiated stylesheets.

Median LCP phase breakdown (Chrome field p75) Load delay Median LCP
React sites with stylesheet initiator type 4,168502 ms433 ms433 mslab 439 ms1.4s
HTML parser (<link rel="stylesheet">) 1,687952 ms433 ms253 ms433 mslab 427 ms2.0s
Inline <style> blocks 4,139502 ms433 ms433 mslab 439 ms1.4s
Script-injected CSS 1,621527 ms441 ms441 mslab 450 ms1.5s
Other initiators (@import / headers) 59702 ms587 ms289 ms587 mslab 574 ms1.7s
TTFB Resource load delay Resource load time Element render delay
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone 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 94% of Wix sites have a good LCP, against 84% 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%84%
Wix 5,824 sitesInline <style> blocks 100%Script-injected CSS 31%94%
WordPress 2,342 sitesInline <style> blocks 100%HTML parser (<link rel="stylesheet">) 97%Script-injected CSS 46%63%
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 · 5,488 with phone 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, 94% of sites with inline <style> blocks stylesheet initiator type have a good LCP, against 90% of Wix sites with parser-initiated stylesheets. Within Wix, sites with inline <style> blocks have a good LCP more often. On WordPress, 63% of sites with inline <style> blocks stylesheet initiator type have a good LCP, against 63% 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 (70% good LCP, 2.0s median), and inline <style> blocks (99.3%) require zero network round-trips (84% 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 80% (1.5s median).

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone 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 (70% good LCP) while 36.1% inject CSS via JavaScript (80% good LCP).

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone 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 (5,488 with phone Chrome field data, 9,569 sites with stylesheet initiator type, October 2026) · How we measured