React — Core Web Vitals

Field data PhoneDesktopAll October 2026 edition · Desktop field outcomes
63.5% of React sites pass all three Core Web Vitals
  • #6 of 11 frameworks by overall pass rate
  • Add TTFB and only 39.9% still pass
  • Runs on 4.5% of all sites measured (9,570 crawled React sites, 1,979 with desktop field data)

The distribution, not just the median

Each bar is the good / needs-work / poor split for React. The marks where the whole fleet sits, so you can see who is ahead and who is behind.

LCP 2.3s p75
78.9% good ▼ fleet 86.1%
INP 66ms p75
98.9% good ▲ fleet 98.9%
CLS 0.08 p75
79.7% good ▲ fleet 77.9%
TTFB diagnostic 1.5s p75
52.6% good ▼ fleet 63.1%
FCP diagnostic 1.7s p75
76.5% good ▼ fleet 82.3%
Where React loses ground: TTFB — 52.6% of sites pass, against 63.1% across the fleet. The takeaways below show which techniques move that number.
Metric & Architecture Takeaways

What moves Core Web Vitals on React & Next.js

Field data findings across React & Next.js sites from our metric deep dives.

LCP image loading 5,497 sites
19.6% lazy-load the LCP image

19.6% of React sites have loading="lazy" on their hero component.

Next.js <Image> sets loading="lazy" by default unless priority or preload is configured. Across React sites, 83% with default loading pass LCP compared with 87% with loading="lazy".

Read the LCP image loading study →
LCP resource discovery 9,109 sites
82% vs 64% good LCP (HTML img vs CSS background)

React sites with an HTML <img> hero pass LCP 18 percentage points more often than sites with CSS background heroes.

Across React sites, 84.1% include the LCP image in initial HTML (82% good LCP, 1.5s median) compared with 13.7% that reference the hero image in CSS (64% good LCP, 2.0s median).

Read the LCP resource discovery study →
Font-display 9,246 sites
90% vs 69% good LCP (all swap vs mixed rules)

React sites with all fonts on swap pass LCP 21 points more often than mixed-font sites.

Across React sites, 71.3% of @font-face rules use swap. Sites with all fonts on swap pass LCP at 90% (1.2s median) compared with 69% (1.9s median) on mixed-rule sites.

Read the font-display study →
HTML document protocol 9,282 sites
86% vs 69% good LCP (HTTP/3 vs HTTP/2)

68.3% of React sites serve HTML over HTTP/3 (86% good LCP vs 69% on HTTP/2).

Across React sites, 68.3% serve main HTML over HTTP/3 (86% good LCP, 1.3s median) compared with 23.9% on HTTP/2 (69% good LCP, 1.9s median).

Read the HTML document protocol study →
Main-thread yielding 9,282 sites
100% vs 98% good INP (scheduler.yield vs requestIdleCallback)

React sites using scheduler.yield() pass INP 2 points more often than sites using requestIdleCallback().

Across React sites, 62.9% call scheduler.yield() (100% good INP, 39ms median) compared with 22.9% calling requestIdleCallback() (98% good INP, 57ms median).

Read the main-thread yielding study →
LCP image format 6,642 sites
60.3% serve AVIF on the LCP image (92% good LCP)

60.3% of React sites serve an AVIF hero image (1.2s median LCP).

Next.js Image Optimization supports image/avif and image/webp output formats. Across React sites, 60.3% serve AVIF hero images (92% good LCP, 1.2s median), 13.5% serve WebP, and 25% serve JPEG or PNG.

Read the LCP image format study →
Speculation rules 9,282 sites
60.1% use eager speculation rules

60.1% of React sites emit eager speculation rules and 16.8% emit no inline tag.

Next.js App Router provides route prefetching on <Link> components in JavaScript. Across React sites in the dataset, 60.1% carry inline eager speculation rules, 22.2% carry conservative rules, and 16.8% have no inline speculation rules tag.

Read the speculation rules study →
LCP priority hints 9,109 sites
88% vs 76% good LCP (highprio vs none)

35.3% of React & Next.js sites set fetchpriority="high" on the LCP element (88% vs 76% good LCP).

Next.js <Image> supports the fetchPriority="high" and priority props. Across React sites, 35.3% set fetchpriority="high" on the LCP element (88% good LCP, 1.3s median) compared with 60.9% with no hint (76% good LCP, 1.6s median, 12 percentage points apart).

Read the LCP priority hints study →
As the LCP element 9,109 sites
84% vs 65% good LCP (<img> vs background-image)

React & Next.js sites with an <img> LCP element pass LCP 19 percentage points more often than sites with CSS background-image LCP.

Across React sites, 60.3% paint LCP from an <img> tag (84% good LCP, 1.4s median), 23.0% paint from text blocks (79% good LCP), and 14.6% paint from CSS background-image styles (65% good LCP, 1.9s median).

Read the as the LCP element study →
LCP image hosting 6,931 sites
72.1% React sites using external image CDNs

72.1% of React & Next.js sites load LCP media from external image origins (88% good LCP).

Next.js <Image> supports custom loader functions for external image CDNs. Across React sites, 72.1% load the LCP image from an external origin (88% good LCP, 1.3s median) and 27.9% load it from the application origin (70% good LCP, 1.8s median).

Read the LCP image hosting study →
Speculation rules 9,282 sites
77.2% React sites with prefetch posture

Among React & Next.js sites with speculation rules, 77.2% use prefetch and 5.7% use prerender_until_script.

Across React sites in the dataset, 77.2% emit prefetch rules (67% CWV pass rate), 5.7% emit prerender_until_script (92% CWV pass rate), and 16.8% emit no inline speculation rules tag.

Read the speculation rules study →
HTML compression 9,282 sites
86% vs 69% good LCP (Brotli vs gzip)

React & Next.js sites on Brotli (70.6%) pass LCP 17 percentage points more often than sites on gzip (17.9%).

Across React sites, 70.6% serve Brotli-compressed HTML (86% good LCP, 1.4s median) compared with 17.9% serving gzip-compressed HTML (69% good LCP, 1.9s median).

Read the HTML compression study →
An HTML edge CDN 9,282 sites
91% vs 73% good LCP (Fastly edge vs origin)

React sites serving HTML from Fastly (37.1%) pass LCP at 91% vs 73% on direct origins.

Across React sites, 37.1% serve main HTML from Fastly edge nodes (91% good LCP, 1.2s median) compared with 46.9% serving HTML from direct origins (73% good LCP, 1.7s median, 18 points apart).

Read the an HTML edge CDN study →
As their CMS 7,993 sites
63% React all-three CWV pass rate

React & Next.js sites record a 63% all-three CWV pass rate across 7,993 sites.

Across 7,993 audited React & Next.js sites, 63% pass all three Core Web Vitals (LCP, INP, and CLS) simultaneously.

Open React & Next.js Explorer Hub →
CSS @import rules 9,282 sites
80% vs 67% good LCP (no @import vs @import)

React & Next.js sites without CSS @import pass LCP 13 percentage points more often than sites with @import.

Across React sites, 96.0% ship stylesheets without runtime @import rules (80% good LCP, 1.5s median) compared with 4.0% that include a runtime CSS @import (67% good LCP, 1.8s median).

Read the CSS @import rules study →
Text compression coverage 9,282 sites
42.4% React sites with all text compressed

57.6% of React & Next.js sites ship at least one uncompressed JSON, SVG, or script response.

Across React sites, 42.4% compress every text asset (80% good LCP, 1.5s median) and 57.6% include at least one uncompressed text response (78% good LCP, 1.6s median).

Read the text compression coverage study →
Last-Modified cache validation 9,282 sites
99.6% React sites with Last-Modified

99.6% of React & Next.js sites include Last-Modified headers on static and CDN responses.

Across React & Next.js deployments, 99.6% emit Last-Modified timestamps on static chunks or media assets (79% good LCP, 1.5s median).

Read the Last-Modified cache validation study →
Image loading strategies 9,274 sites
33.1% lazy-load an image inside the viewport

33.1% of React sites lazy-load at least one above-the-fold image.

Next.js <Image> components default to loading="lazy" unless priority or preload is passed. Across React sites, 96.6% render an eager image in the viewport and 33.1% have a visible viewport image with loading="lazy".

Read the image loading strategies study →
Responsive image markup 9,216 sites
86% vs 78% good LCP (<picture> vs fixed <img>)

React sites using <picture> (29.4%) pass LCP at 86%, 8 points above sites with fixed images.

Next.js <Image> generates responsive srcset candidate URLs. Across React sites, 84.9% use srcset on <img> (79% good LCP) and 29.4% use <picture> (86% good LCP).

Read the responsive image markup study →
Image dimension sizing 9,216 sites
82% vs 64% good CLS (width/height vs CSS aspect-ratio)

React sites with HTML width/height (88.4%) pass CLS 18 points more often than sites with CSS-only aspect-ratio (5.1%).

Next.js <Image> requires width and height props unless fill is set. Across React sites, 88.4% include HTML width and height attributes (82% good CLS) and 5.1% use CSS aspect-ratio (64% good CLS).

Read the image dimension sizing study →
Iframe dimension sizing 5,148 sites
79% vs 73% good CLS (sized vs unsized iframes)

Iframe-using React sites with sized iframes (62.5%) pass CLS 6 points more often than sites with unsized iframes.

Across 5,148 iframe-using React sites, 62.5% declare explicit width and height on their embeds (79% good CLS) compared with 70.4% with unsized iframes (73% good CLS).

Read the iframe dimension sizing study →
CSS rendering hints 8,797 sites
77.3% scroll-driven CSS (99% good INP)

Hint-using React sites include scroll-driven CSS on 77.3% and will-change on 71.3% (99% good INP).

Across 8,797 hint-using React sites, 77.3% include scroll-driven animation rules (99% good INP), 71.3% use will-change, and 53.5% use aspect-ratio.

Read the CSS rendering hints study →
Layout shift causes 3,771 sites
66% vs 46% good CLS (box growth vs unsized media)

Among shifting React sites, unsized_media sites pass field CLS at 46% and displaced sites at 72%.

Across 3,771 React sites that record a lab layout shift, 76.9% record box growth (66% good CLS), 35.4% record sibling displacement (72% good CLS), and 2.4% record unsized media shifts (46% good CLS).

Read the layout shift causes study →
Subresource network protocols 9,282 sites
92.1% negotiate HTTP/3 (79% good LCP)

React sites reach 98.8% HTTP/2 and 92.1% HTTP/3 subresource adoption (79% good LCP).

Across 9,282 React sites, 98.8% serve subresources over HTTP/2 and 92.1% serve subresources over HTTP/3 (79% good LCP).

Read the subresource network protocols study →
HTTP cache TTL tiers 9,282 sites
70.8% immutable hashed chunks (86% good LCP)

70.8% of React & Next.js sites serve Cache-Control: immutable assets (86% good LCP).

Across React sites, 70.8% emit Cache-Control: immutable headers on static chunks (86% good LCP) compared with 75% on short-TTL sites.

Read the HTTP cache TTL tiers study →
JavaScript frameworks 9,282 sites
63% vs 50% all 3 CWV pass (all React vs React + jQuery)

27.7% of React sites also load jQuery (50% CWV pass vs 63% across all React sites).

Across 9,282 React sites, 27.7% load jQuery alongside React and pass all three Core Web Vitals at 50% (13 points below the 63% React cohort pass rate).

Read the JavaScript frameworks study →
Analytics providers 4,068 sites
96.6% / 5.2% GA4 (99% INP) / Matomo (99% INP)

React sites with analytics use GA4 on 96.6% (99% good INP) and Matomo on 5.2% (99% good INP).

Across 4,068 analytics-using React sites, 96.6% load Google Analytics 4 (99% good INP), 71.0% include UA tags, and 5.2% run Matomo Analytics (99% good INP).

Read the analytics providers study →
Ad networks 894 sites
54% vs 44% all 3 CWV pass (AdSense vs GPT)

Ad-supported React sites pass all three CWV at 54% with AdSense and 44% with GPT.

Across 894 React sites running display ads, 93.5% load Google AdSense (54% passing all three CWV) and 8.9% load Google Publisher Tag (44%).

Read the ad networks study →
Performance optimization plugins 597 sites
43% / 62% all 3 CWV pass on hybrid WordPress + React sites

On the 597 WordPress + React sites using caching plugins, LiteSpeed Cache (26.1%) passes all three CWV at 43% and WP Rocket (34.7%) at 62%.

Across 597 React sites with a detected WordPress optimization plugin, 34.7% use WP Rocket (62% passing all three CWV), 26.1% use LiteSpeed Cache (43%), and 20.8% use Autoptimize (53%).

Read the performance optimization plugins study →
Third-party technology categories 9,280 sites
81% vs 57% all 3 CWV pass (RUM vs tag managers)

React sites with RUM (64.0%) pass all three CWV at 81% vs 57% on sites with tag managers (39.4%).

Across 9,280 React sites, 89.8% use a CDN (64% passing all three CWV), 64.0% include Real User Monitoring (81% CWV pass), and 39.4% load tag managers (57% CWV pass).

Read the third-party technology categories study →
Maximum DOM depth 9,282 sites
42.6% / 40.3% 21-31 levels / 32+ levels on React

83% of React & Next.js sites have a DOM depth above 20 levels (40.3% at 32+ levels).

Across React sites, 42.6% have a maximum DOM depth of 21 to 31 levels (99% good INP) and 40.3% have 32+ levels (99% good INP).

Read the maximum DOM depth study →
Initial HTML document size 9,282 sites
67.8% React sites over 75 KB HTML (84% LCP)

67.8% of React & Next.js sites ship over 75 KB of HTML (84% good LCP).

Across React sites, 67.8% transfer over 75 KB of initial HTML (84% good LCP) and 16.8% transfer 30 to 75 KB (66% good LCP).

Read the initial HTML document size study →
Iframe count per page 9,282 sites
84% vs 69% good CLS (0 iframes vs 4+ iframes)

React & Next.js sites with 4+ iframes (8.1%) pass field CLS at 69% vs 84% with 0 iframes.

Across 9,282 React sites, 44.5% use 0 iframes (84% good CLS), 25.7% use 1 iframe (84%), and 8.1% embed 4 or more iframes (69% good CLS).

Read the iframe count per page study →
Layout shift count 9,282 sites
91% vs 62% good CLS (0 shifts vs 3-5 shifts)

58.3% of React & Next.js sites record 0 lab layout shifts (91% good CLS vs 62% at 3 to 5 shifts).

Across 9,282 React sites, 58.3% record 0 lab shifts (91% good CLS), 26.0% record 1 to 2 shifts (79%), 9.2% record 3 to 5 shifts (62% good CLS), and 6.4% record 6+ shifts (54% good CLS).

Read the layout shift count study →
Largest single layout shift score 3,867 sites
85% vs 51% good CLS (<0.01 vs >0.25 largest shift)

Shifting React & Next.js sites with a largest shift over 0.25 (15.3%) pass field CLS at 51% vs 85% under 0.01 (34 points apart).

Across 3,867 shifting React sites, 36.3% have a largest shift under 0.01 (85% good CLS) and 15.3% exceed 0.25 (51% good CLS).

Read the largest single layout shift score study →
Distinct network domain count 9,282 sites
69% vs 57% all 3 CWV pass (8-14 vs 15+ domains)

React & Next.js sites connecting to 15+ domains (16.6%) pass all three CWV at 57% vs 69% at 8 to 14 domains.

Across 9,282 React sites, 61.3% connect to 8 to 14 domains (69% passing all three CWV) and 16.6% connect to 15 or more domains (57%, 12 percentage points apart).

Read the distinct network domain count study →
Cacheable resource share 9,282 sites
81% vs 69% good LCP (80%+ vs <20% cacheable)

React & Next.js sites caching under 20% of resources (9.3%) pass LCP at 69% vs 81% at 80%+ (12 points apart).

Across React sites, 58.3% cache 80%+ of assets (81% good LCP), 29.0% cache 50% to 79% (80%), and 9.3% cache under 20% (69% good LCP).

Read the cacheable resource share study →
Third-party provider count 9,282 sites
79% vs 49% all 3 CWV pass (0-1 vs 9+ providers)

React & Next.js sites with 9+ third-party providers (7.7%) pass all three CWV at 49% vs 79% at 0 to 1 providers (30 points apart).

Across 9,282 React sites, 43.2% load 0 to 1 external providers (79% passing all three CWV), 23.0% load 2 to 4 (68%), 26.0% load 5 to 8 (60%), and 7.7% load 9+ providers (49%).

Read the third-party provider count study →
Page image format mix 9,274 sites
90% vs 74% good LCP (with AVIF vs with PNG)

React & Next.js sites serving AVIF (63.5%) pass LCP at 90% vs 74% on sites serving PNG (54.4%).

Next.js <Image> supports image/avif and image/webp output formats. Across 9,274 React sites, 63.5% serve AVIF images (90% good LCP, 1.2s median), 54.4% serve PNGs (74% good LCP, 1.7s median), and 44.2% serve JPEGs (74% good LCP).

Read the page image format mix study →
Image hosting origin 9,274 sites
79% vs 72% good LCP (dedicated image CDN vs origin)

93.9% of React & Next.js sites serve images from external image origins (79% good LCP vs 72% self-hosted).

Next.js <Image> supports custom loader functions for external media CDNs. Across 9,274 React sites, 93.9% serve images from external origins (79% good LCP, 1.5s median) and 32.3% serve images from the primary origin (72% good LCP, 1.8s median).

Read the image hosting origin study →
Script loading strategy 9,282 sites
80% vs 69% good LCP (deferred vs blocking scripts)

React & Next.js sites with synchronous blocking scripts (30.0%) pass LCP at 69% vs 80% with defer.

Across React sites, 89.2% load scripts with defer (80% good LCP), 96.8% use async (79% good LCP), and 30.0% include synchronous blocking scripts in <head> (69% good LCP, 1.9s median, 11 points apart).

Read the script loading strategy study →
Script origin (first-party vs third-party) 9,282 sites
100.0% / 94.8% first-party / third-party scripts on React

94.8% of React & Next.js sites load cross-origin scripts (99% good INP, 48ms median).

Across 9,282 React sites, 100.0% run first-party bundles (99% good INP) and 94.8% also execute cross-origin scripts (99% good INP, 48ms median).

Read the script origin (first-party vs third-party) study →
Script initiator type 9,282 sites
99.6% / 95.1% parser / script-injected on React

99.6% of React & Next.js sites declare scripts in HTML and 95.1% also load script-initiated chunks (99% good INP).

Across 9,282 React sites, 99.6% use parser-discovered <script> tags (99% good INP), 95.1% load script-initiated chunks (99% good INP), and 71.8% use other initiators (99% good INP).

Read the script initiator type study →
Stylesheet loading and placement 9,281 sites
79% vs 63% good LCP (inline CSS vs <body> CSS)

React & Next.js sites with <body> stylesheets (14.1%) pass LCP 16 points less often than sites with inline CSS (63% vs 79%).

Across 9,281 React sites, 99.3% use inline <style> blocks (79% good LCP, 1.5s median), 56.0% load blocking <head> CSS (74%), and 14.1% include <link rel="stylesheet"> tags inside <body> (63% good LCP, 2.1s median).

Read the stylesheet loading and placement study →
Stylesheet origin (first-party vs third-party) 9,281 sites
79% vs 73% good LCP (first-party vs third-party CSS)

React & Next.js sites loading third-party stylesheets (44.8%) pass LCP 6 points less often than sites on first-party CSS (73% vs 79%).

Across 9,281 React sites, 99.9% serve first-party CSS (79% good LCP, 1.5s median) and 44.8% load external third-party stylesheets (73% good LCP, 1.7s median).

Read the stylesheet origin (first-party vs third-party) study →
Stylesheet initiator type 9,281 sites
79% vs 70% good LCP (inline CSS vs external parser CSS)

99.3% of React & Next.js sites use inline styles (79% good LCP), while 37.4% load external <link> CSS (70%).

Across 9,281 React sites, 99.3% emit inline <style> tags (79% good LCP, 1.5s median), 36.2% load CSS from JS chunks (76% good LCP), and 37.4% load parser <link rel="stylesheet"> tags (70% good LCP, 1.8s median).

Read the stylesheet initiator type study →
Web font format 9,147 sites
79% vs 61% good LCP (WOFF2 vs raw TTF on React)

React & Next.js sites loading TTF fonts (7.3%) pass LCP 18 points less often than sites on WOFF2 (61% vs 79%).

Across 9,147 font-using React sites, 97.1% serve WOFF2 (79% good LCP, 1.5s median), 13.8% serve WOFF (68% good LCP), and 7.3% serve TTF (61% good LCP, 2.1s median).

Read the web font format study →
Web font hosting source 9,147 sites
84% vs 65% good LCP (CDN font host vs Google Fonts)

React & Next.js sites loading external Google Fonts (18.9%) pass LCP at 65% vs 84% on dedicated CDNs.

Across 9,147 font-using React sites, 77.3% serve fonts from external CDNs (84% good LCP, 1.4s median) and 18.9% load Google Fonts at runtime (65% good LCP, 2.0s median, 19 percentage points apart).

Read the web font hosting source study →
Video and audio media source 1,803 sites
86% vs 69% good LCP (external media CDN vs self-hosted)

85.6% of media-using React & Next.js sites stream from external CDNs (86% good LCP vs 69% self-hosted).

Across 1,803 React sites with <video> or <audio> tags, 85.6% serve media from external CDNs (86% good LCP, 1.3s median) and 15.9% serve media from their own origin (69% good LCP, 1.9s median, 17 points apart).

Read the video and audio media source study →
Long Animation Frame (LoAF) script invoker type 5,701 sites
60.0% / 44.3% event listener / classic script LoAF on React

60.0% of LoAF React & Next.js sites record long frames in event listeners (99% good INP).

Across 5,701 React sites recording Long Animation Frames, 60.0% record long frames in DOM event listeners (99% good INP, 47ms median), 44.3% during script evaluation (98% good INP), and 18.6% in timer callbacks (99%).

Read the Long Animation Frame (LoAF) script invoker type study →
Network resource type mix 9,282 sites
91.6% / 98.5% fetch() API / web fonts on React sites

91.6% of React & Next.js sites execute fetch() requests during load (79% good LCP, 1.5s median).

Across 9,282 React sites, 100.0% load JS bundles, 99.9% load images, 98.5% load web fonts (79% good LCP), and 91.6% fire fetch() requests (79% good LCP).

Read the network resource type mix study →
Subresource HTTP compression 9,282 sites
91.1% / 97.7% Brotli / Gzip subresources on React

91.1% of React & Next.js sites serve Brotli-compressed subresources (79% good LCP, 1.5s median).

Across 9,282 React sites, 91.1% serve Brotli-compressed bundles (79% good LCP), 97.7% use Gzip (79% good LCP), and 41.3% include Zstandard-compressed scripts (74% good LCP).

Read the subresource HTTP compression study →
Subresource CDN distribution 9,282 sites
85% / 82% good LCP (Fastly / CloudFront on React)

74.6% of React & Next.js sites load subresources from CloudFront (82% good LCP) and 68.1% from Fastly (85%).

Across 9,282 React sites, 74.6% load subresources from Amazon CloudFront (82% good LCP, 1.4s median), 68.1% from Fastly (85% good LCP, 1.3s median), and 36.0% from Cloudflare (74% good LCP).

Read the subresource CDN distribution study →
Total image payload 9,282 sites
86% vs 67% good LCP (< 350 KB vs > 3 MB)

React apps exceeding 3 MB of images pass LCP 19 points less often than apps under 350 KB.

Across React sites, 38% transfer under 350 KB of images (86% good LCP, 1.3s median) compared with 14% transferring over 3 MB (67% good LCP, 1.9s median).

Explore React image payload data →
Total CSS payload 6,014 sites
88% vs 58% good LCP (< 40 KB vs > 160 KB)

React sites under 40 KB of external CSS pass LCP 30 points more often than sites over 160 KB.

Across React sites, 55% ship under 40 KB of external CSS (88% good LCP, 1.3s median) and 22% ship over 160 KB (58% good LCP, 2.2s median).

Explore React CSS payload data →
Unused CSS bytes 9,279 sites
93% vs 65% good LCP (< 140 KB vs > 600 KB unused)

React sites with over 600 KB of unused CSS pass LCP 28 points less often than sites under 140 KB.

Across React sites, 28% have under 140 KB of unused CSS (93% good LCP, 1.2s median) and 22% have over 600 KB of unused styles (65% good LCP, 2.0s median).

Explore React unused CSS data →
Web font file count 9,282 sites
83% vs 71% good LCP (1-3 fonts vs 7+ fonts)

React sites loading 7+ font files pass LCP 12 points less often than sites with 1 to 3 fonts.

Across React sites, 27% load 1 to 3 font files (83% good LCP), 42% load 4 to 6 font files, and 30% load 7 or more font files (71% good LCP, 1.7s median).

Explore React font count data →
Audio and video payload 9,282 sites
81% sites with no initial media streams

81% of React apps load no audio or video streams on initial render.

Across React sites, 81% load no audio or video requests during initial navigation (78% LCP pass rate, 1.6s median) and 12% load under 500 KB (81%).

Explore React media payload data →
Connection and preload hints 9,282 sites
88% vs 65% good LCP (preload vs dns-prefetch)

63% of React sites emit preload hints (88% good LCP vs 65% on dns-prefetch only).

Across React sites, 63% emit preload hints (88% good LCP, 1.3s median) compared with 9% emitting dns-prefetch only (65% good LCP, 2.1s median).

Explore React resource hints data →
Cookie count 9,282 sites
89% vs 65% good LCP (3-5 cookies vs 6+ cookies)

React sites with 6+ cookies pass LCP 24 points less often than sites with 3 to 5 cookies.

Across React sites, 43% set 3 to 5 cookies (89% good LCP, 1.3s median) and 20% set 6 or more cookies (65% good LCP, 2.0s median).

Explore React cookie count data →
Synthetic paint milestones 9,273 sites
90% vs 62% good field LCP (< 300ms vs > 1.5s lab)

React sites painting under 300ms in the lab pass field LCP 28 points more often than sites over 1,500ms.

Across React sites, 46% paint their hero element in under 300ms in the lab (90% field LCP pass rate, 1.2s median) compared with 26% taking over 1,500ms (62% pass rate, 2.1s median).

Explore React lab paint data →
Document lifecycle milestones 9,282 sites
90% vs 58% good LCP (< 350ms vs > 1.5s DOMComplete)

React sites reaching DOMComplete under 350ms pass field LCP 32 points more often than sites over 1,500ms.

Across React sites, 48% reach DOMComplete in under 350ms (90% field LCP pass rate, 1.2s median) and 18% take over 1,500ms (58% pass rate, 2.2s median).

Explore React document lifecycle data →
LCP sub-part breakdown 6,559 sites
88% vs 71% good LCP (load delay vs TTFB dominant)

TTFB is the largest LCP sub-part on 57% of React sites (71% good LCP vs 88% when load delay leads, 17 points apart).

Across React sites, TTFB is the largest LCP sub-part on 57% (71% LCP pass rate, 1.8s median) and load delay is the largest sub-part on 38% (88% pass rate, 1.3s median).

Explore React LCP sub-part data →
LCP image byte weight 6,193 sites
87% vs 69% good LCP (< 40 KB vs > 300 KB hero)

React hero images over 300 KB pass LCP 18 points less often than hero images under 40 KB.

Across React sites, 49% serve an LCP image under 40 KB (87% LCP pass rate, 1.4s median), 29% serve 40 to 100 KB (79%), and 9% exceed 300 KB (69% pass rate, 1.9s median).

Explore React hero image size data →
Total page weight 9,282 sites
93% vs 66% good LCP (< 1.2 MB vs > 5 MB page)

React sites exceeding 5 MB of total transfer pass LCP 27 points less often than sites under 1.2 MB.

Across React sites, 14% transfer under 1.2 MB (93% LCP pass rate, 1.0s median), 42% transfer 1.2 to 2.5 MB (89%), and 20% exceed 5 MB (66% pass rate, 1.9s median).

Explore React total page weight data →

framework standings

All frameworks →

210,902 crawled sites (69,745 with desktop Chrome field data), representing millions of real page loads, October 2026 edition. How we measured.