Stylesheet loading and placement on React sites

9.8% of audited sites (933) use non-blocking stylesheets in <head> and reach 57% good LCP (2.3s median), whereas the 14.1% placing <link rel="stylesheet"> tags inside <body> drop to 59% good LCP (2.3s median).

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

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices field data · 9,569 sites with stylesheet loading and placementBy Arjen Karel · corewebvitals.io/state-of-cwv
1

Core Web Vitals pass rate

Sites with inline <style> blocks stylesheet loading and placement have a good LCP most often: 85%, against 85% of all React sites. Sites with non-blocking <head> stylesheets CSS loading have it least often, at 57%.

SitesGood, needs improvement, poor LCPMedian
All React sites9,11085%1.4s
Inline <style> blocks 99.3%9,04785%1.4s
Render-blocking in <head> 56.2%5,15577%1.7s
Stylesheets inside <body> 14.1%1,29859%2.3s
Non-blocking in <head> (preload / media) 9.8%89757%2.3s
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices field data · 9,569 sites with stylesheet loading and placementBy Arjen Karel · corewebvitals.io/state-of-cwv
2

Stylesheet loading and placement 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% Render-blocking in <head> 56.2%
Inline <style> blocks 99.3% Render-blocking in <head> 56.2% Stylesheets inside <body> 14.1% Non-blocking in <head> (preload / media) 9.8%
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices field data · 9,569 sites with stylesheet loading and placementBy Arjen Karel · corewebvitals.io/state-of-cwv
3

LCP phase breakdown by stylesheet placement and loading mode

Across the four LCP sub-parts in Chrome's field data, the largest gap between inline <style> blocks and non-blocking <head> stylesheets sits in time to first byte (TTFB): 516 ms median for inline <style> blocks against 1312 ms for non-blocking <head> stylesheets. Overall median field LCP is 1.4s for inline <style> blocks (TTFB 516 ms, load delay 439 ms, load duration 146 ms, render delay 174 ms) versus 2.3s for non-blocking <head> stylesheets.

Median LCP phase breakdown (Chrome field p75) Load delay Median LCP
React sites with stylesheet loading and placement 6,739516 ms440 ms440 mslab 440 ms1.4s
Non-blocking in <head> (preload / media) 7081312 ms415 ms300 ms415 mslab 415 ms2.3s
Render-blocking in <head> 3,834666 ms432 ms432 mslab 432 ms1.7s
Inline <style> blocks 6,699516 ms439 ms439 mslab 439 ms1.4s
Stylesheets inside <body> 9941249 ms461 ms269 ms461 mslab 461 ms2.3s
TTFB Resource load delay Resource load time Element render delay
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices field data · 9,569 sites with stylesheet loading and placementBy Arjen Karel · corewebvitals.io/state-of-cwv
4

Stylesheet loading and placement per platform

Wix sets the stylesheet loading and placement to inline <style> blocks on 100% of its sites, and 94% of Wix sites have a good LCP, against 85% of all sites.

PlatformStylesheet loading and placement on its sitesGood LCP
React sites with stylesheet loading and placement 9,569 sitesInline <style> blocks 99%Render-blocking in <head> 56%Stylesheets inside <body> 14%85%
Wix 5,824 sitesInline <style> blocks 100%Render-blocking in <head> 34%94%
WordPress 2,342 sitesInline <style> blocks 100%Render-blocking in <head> 99%Stylesheets inside <body> 46%Non-blocking in <head> (preload / media) 34%61%
Inline <style> blocks Render-blocking in <head> Stylesheets inside <body> Non-blocking in <head> (preload / media)
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices field data · 9,569 sites with stylesheet loading and placementBy Arjen Karel · corewebvitals.io/state-of-cwv
5

Stylesheet loading or the platform

Does the platform explain the stylesheet loading and placement difference?

On Wix, 94% of sites with inline <style> blocks stylesheet loading and placement have a good LCP, against 93% of Wix sites with render-blocking <head> stylesheets. Within Wix, sites with inline <style> blocks and render-blocking <head> stylesheets have a good LCP about equally often. On WordPress, 61% of sites with inline <style> blocks stylesheet loading and placement have a good LCP, against 61% of WordPress sites with render-blocking <head> stylesheets. Within WordPress, sites with inline <style> blocks and render-blocking <head> stylesheets have a good LCP about equally often.

Why <link rel="stylesheet"> inside <body> hurts LCP and triggers late style recalculation

Standard <link rel="stylesheet"> tags in <head> (56.2% of sites, 5,380) block first paint until downloaded (77% good LCP, 1.7s median), while inline <style> blocks (99.3%) reach 85% good LCP and non-blocking <head> stylesheets (9.8%) reach 57% good LCP (2.3s median). Scattering <link rel="stylesheet"> tags inside <body> (14.1% of sites, 1,351) forces late parser pauses and mid-render style passes, dropping good LCP to 59% (2.3s median).

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices field data · 9,569 sites with stylesheet loading and placementBy Arjen Karel · corewebvitals.io/state-of-cwv
6

Understanding stylesheet loading and placement

Inline critical above-the-fold CSS in <head>, load non-critical stylesheets asynchronously in <head> via preload or print-media swap, and never output synchronous <link rel="stylesheet"> tags inside <body>. Across all audited sites, 9.8% use non-blocking <head> CSS (57% good LCP) while 14.1% place stylesheets in <body> (59% good LCP).

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices field data · 9,569 sites with stylesheet loading and placementBy Arjen Karel · corewebvitals.io/state-of-cwv
Related signals CSS coverage (used vs unused) → DOM depth → Image loading attribute → Image dimensions set → By Arjen Karel · 9,570 crawled React sites (9,110 with all devices Chrome field data, 9,569 sites with stylesheet loading and placement, October 2026) · How we measured