Explore 9,570 React websites
Pivot to any metric, technology, or signal in the dataset. Charts pick themselves. Prose writes itself.
What moves Core Web Vitals on React & Next.js
Field data findings across React & Next.js sites from our metric deep dives.
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, 89% with default loading pass LCP compared with 89% with loading="lazy".
React sites with an HTML <img> hero pass LCP 22 percentage points more often than sites with CSS background heroes.
Across React sites, 84.1% include the LCP image in initial HTML (88% good LCP, 1.3s median) compared with 13.7% that reference the hero image in CSS (66% good LCP, 2.0s median).
React sites with all fonts on swap pass LCP 23 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 94% (1.2s median) compared with 71% (1.9s median) on mixed-rule sites.
68.3% of React sites serve HTML over HTTP/3 (92% good LCP vs 65% on HTTP/2).
Across React sites, 68.3% serve main HTML over HTTP/3 (92% good LCP, 1.2s median) compared with 23.9% on HTTP/2 (65% good LCP, 2.1s median).
React sites using scheduler.yield() pass INP 6 points more often than sites using requestIdleCallback().
Across React sites, 62.9% call scheduler.yield() (97% good INP, 74ms median) compared with 22.9% calling requestIdleCallback() (91% good INP, 96ms median).
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 (94% good LCP, 1.2s median), 13.5% serve WebP, and 25% serve JPEG or PNG.
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.
35.3% of React & Next.js sites set fetchpriority="high" on the LCP element (91% vs 82% good LCP).
Next.js <Image> supports the fetchPriority="high" and priority props. Across React sites, 35.3% set fetchpriority="high" on the LCP element (91% good LCP, 1.3s median) compared with 60.9% with no hint (82% good LCP, 1.5s median, 9 percentage points apart).
React & Next.js sites with an <img> LCP element pass LCP 23 percentage points more often than sites with CSS background-image LCP.
Across React sites, 60.3% paint LCP from an <img> tag (89% good LCP, 1.3s median), 23.0% paint from text blocks (87% good LCP), and 14.6% paint from CSS background-image styles (66% good LCP, 2.0s median).
72.1% of React & Next.js sites load LCP media from external image origins (92% 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 (92% good LCP, 1.3s median) and 27.9% load it from the application origin (65% good LCP, 2.1s median).
React & Next.js sites with responsive srcset pass LCP at 90% vs 83% without responsive markup.
Next.js <Image> generates a responsive srcset when the sizes prop is set. Across React sites, 26.9% use srcset on the LCP image (90% good LCP, 1.3s median) and 64.8% have no responsive candidates (83% good LCP, 7 points apart).
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 (79% CWV pass rate), 5.7% emit prerender_until_script (91% CWV pass rate), and 16.8% emit no inline speculation rules tag.
React & Next.js sites on Brotli (70.6%) pass LCP 25 percentage points more often than sites on gzip (17.9%).
Across React sites, 70.6% serve Brotli-compressed HTML (91% good LCP, 1.3s median) compared with 17.9% serving gzip-compressed HTML (66% good LCP, 2.0s median).
React sites serving HTML from Fastly (37.1%) pass LCP at 95% vs 77% on direct origins.
Across React sites, 37.1% serve main HTML from Fastly edge nodes (95% good LCP, 1.2s median) compared with 46.9% serving HTML from direct origins (77% good LCP, 1.6s median, 18 points apart).
React & Next.js sites record a 76% all-three CWV pass rate across 7,993 sites.
Across 7,993 audited React & Next.js sites, 76% pass all three Core Web Vitals (LCP, INP, and CLS) simultaneously.
React & Next.js sites without CSS @import pass LCP 11 percentage points more often than sites with @import.
Across React sites, 96.0% ship stylesheets without runtime @import rules (85% good LCP, 1.4s median) compared with 4.0% that include a runtime CSS @import (74% good LCP, 1.8s median).
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 (84% good LCP, 1.4s median) and 57.6% include at least one uncompressed text response (85% good LCP, 1.4s median).
Next.js generates ETag headers by default (97.1% of React sites, 15 points higher LCP pass rate than sites without ETag).
Next.js enables generateEtags: true by default for pages. Across React sites, 97.1% serve ETag headers (85% good LCP, 1.4s median) compared with 2.9% that omit ETag headers (70% good LCP, 1.9s median).
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 (85% good LCP, 1.4s median).
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".
React sites using <picture> (29.4%) pass LCP at 90%, 6 points above sites with fixed images.
Next.js <Image> generates responsive srcset candidate URLs. Across React sites, 84.9% use srcset on <img> (86% good LCP) and 29.4% use <picture> (90% good LCP).
React sites with HTML width/height (88.4%) pass CLS 9 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 (93% good CLS) and 5.1% use CSS aspect-ratio (84% good CLS).
79.8% of React sites use fetchpriority="high" (87% good LCP vs 84% with auto priority).
Next.js <Image> emits fetchpriority="high" when priority or fetchPriority="high" is configured. Across 9,216 React sites, 79.8% use fetchpriority="high" (87% good LCP) compared with 84% on sites with default priority.
Iframe-using React sites with lazy iframes (5.7%) pass LCP at 68% vs 84% with default iframes (16 points apart).
Across React sites that render iframes, 97.2% include default iframes (84% good LCP) and 5.7% include iframes with loading="lazy" (68% good LCP).
Iframe-using React sites with sized iframes (62.5%) pass CLS 3 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 (92% good CLS) compared with 70.4% with unsized iframes (89% good CLS).
Hint-using React sites include scroll-driven CSS on 77.3% and will-change on 71.3% (97% good INP).
Across 8,797 hint-using React sites, 77.3% include scroll-driven animation rules (97% good INP), 71.3% use will-change, and 53.5% use aspect-ratio.
Among shifting React sites, unsized_media sites pass field CLS at 72% and displaced sites at 80%.
Across 3,771 React sites that record a lab layout shift, 76.9% record box growth (82% good CLS), 35.4% record sibling displacement (80% good CLS), and 2.4% record unsized media shifts (72% good CLS).
React sites reach 98.8% HTTP/2 and 92.1% HTTP/3 subresource adoption (85% good LCP).
Across 9,282 React sites, 98.8% serve subresources over HTTP/2 and 92.1% serve subresources over HTTP/3 (85% good LCP).
70.8% of React & Next.js sites serve Cache-Control: immutable assets (91% good LCP).
Across React sites, 70.8% emit Cache-Control: immutable headers on static chunks (91% good LCP) compared with 80% on short-TTL sites.
27.7% of React sites also load jQuery (53% CWV pass vs 76% across all React sites).
Across 9,282 React sites, 27.7% load jQuery alongside React and pass all three Core Web Vitals at 53% (23 points below the 76% React cohort pass rate).
React sites with analytics use GA4 on 96.6% (95% good INP) and Matomo on 5.2% (96% good INP).
Across 4,068 analytics-using React sites, 96.6% load Google Analytics 4 (95% good INP), 71.0% include UA tags, and 5.2% run Matomo Analytics (96% good INP).
Ad-supported React sites pass all three CWV at 64% with AdSense and 39% with GPT.
Across 894 React sites running display ads, 93.5% load Google AdSense (64% passing all three CWV) and 8.9% load Google Publisher Tag (39%).
On the 597 WordPress + React sites using caching plugins, LiteSpeed Cache (26.1%) passes all three CWV at 71% and WP Rocket (34.7%) at 65%.
Across 597 React sites with a detected WordPress optimization plugin, 34.7% use WP Rocket (65% passing all three CWV), 26.1% use LiteSpeed Cache (71%), and 20.8% use Autoptimize (51%).
React sites with RUM (64.0%) pass all three CWV at 87% vs 66% on sites with tag managers (39.4%).
Across 9,280 React sites, 89.8% use a CDN (77% passing all three CWV), 64.0% include Real User Monitoring (87% CWV pass), and 39.4% load tag managers (66% CWV pass).
React & Next.js apps with 1,500+ DOM nodes (19.5%) pass field INP at 93% vs 96% at 800 to 1,499 nodes.
Across 9,282 React sites, 36.0% render 400 to 799 nodes (96% good INP), 36.1% render 800 to 1,499 nodes (96% good INP), and 19.5% exceed 1,500 nodes (93% good INP).
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 (95% good INP) and 40.3% have 32+ levels (97% good INP).
67.8% of React & Next.js sites ship over 75 KB of HTML (90% good LCP).
Across React sites, 67.8% transfer over 75 KB of initial HTML (90% good LCP) and 16.8% transfer 30 to 75 KB (64% good LCP).
94.7% of React & Next.js sites have zero HTML font preload tags (86% good LCP vs 62% with 1 to 2 preloads).
Across 9,282 React sites, 94.7% have 0 explicit <link rel="preload" as="font"> tags in the DOM (86% good LCP) and 3.1% have 1 to 2 font preload links (62% good LCP).
React & Next.js sites with 4+ iframes (8.1%) pass field CLS at 85% vs 93% with 0 iframes.
Across 9,282 React sites, 44.5% use 0 iframes (93% good CLS), 25.7% use 1 iframe (94%), and 8.1% embed 4 or more iframes (85% good CLS).
React & Next.js sites over 600ms lab TBT (13.1%) pass field INP at 93% vs 97% at 0ms TBT.
Across React sites, 31.6% record 0ms lab TBT (97% good INP), 14.3% sit at 201 to 600ms TBT (94% good INP), and 13.1% exceed 600ms TBT (93% good INP).
React & Next.js sites with multi-shift lab CLS (18.6%) pass field CLS at 81% vs 89% for a single shift.
Across 3,771 React sites with lab layout shifts, 58.8% have one isolated shift (89% good field CLS), 22.6% sit at 65% to 94% (75%), and 18.6% have multiple shifts (81% good CLS).
58.3% of React & Next.js sites record 0 lab layout shifts (97% good CLS vs 71% at 3 to 5 shifts).
Across 9,282 React sites, 58.3% record 0 lab shifts (97% good CLS), 26.0% record 1 to 2 shifts (92%), 9.2% record 3 to 5 shifts (71% good CLS), and 6.4% record 6+ shifts (75% good CLS).
Shifting React & Next.js sites with a largest shift over 0.25 (15.3%) pass field CLS at 65% vs 94% under 0.01 (29 points apart).
Across 3,867 shifting React sites, 36.3% have a largest shift under 0.01 (94% good CLS) and 15.3% exceed 0.25 (65% good CLS).
React & Next.js sites connecting to 15+ domains (16.6%) pass all three CWV at 67% vs 82% at 8 to 14 domains.
Across 9,282 React sites, 61.3% connect to 8 to 14 domains (82% passing all three CWV) and 16.6% connect to 15 or more domains (67%, 15 percentage points apart).
React & Next.js sites with over 50% third-party requests (14.7%) pass field INP at 92% vs 96% at 25% to 50%.
Across 9,282 React sites, 57.5% sit in the 25% to 50% third-party request tier (96% good INP) and 14.7% have over 50% external requests (92% good INP, 90ms median).
React & Next.js sites caching under 20% of resources (9.3%) pass LCP at 62% vs 88% at 80%+ (26 points apart).
Across React sites, 58.3% cache 80%+ of assets (88% good LCP), 29.0% cache 50% to 79% (88%), and 9.3% cache under 20% (62% good LCP).
React & Next.js sites with 9+ third-party providers (7.7%) pass all three CWV at 53% vs 86% at 0 to 1 providers (33 points apart).
Across 9,282 React sites, 43.2% load 0 to 1 external providers (86% passing all three CWV), 23.0% load 2 to 4 (74%), 26.0% load 5 to 8 (68%), and 7.7% load 9+ providers (53%).
React & Next.js sites serving AVIF (63.5%) pass LCP at 93% vs 77% 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 (93% good LCP, 1.2s median), 54.4% serve PNGs (77% good LCP, 1.6s median), and 44.2% serve JPEGs (75% good LCP).
93.9% of React & Next.js sites serve images from external image origins (86% good LCP vs 67% 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 (86% good LCP, 1.4s median) and 32.3% serve images from the primary origin (67% good LCP, 2.0s median).
React & Next.js sites with synchronous blocking scripts (30.0%) pass LCP at 66% vs 86% with defer.
Across React sites, 89.2% load scripts with defer (86% good LCP), 96.8% use async (85% good LCP), and 30.0% include synchronous blocking scripts in <head> (66% good LCP, 2.0s median, 20 points apart).
94.8% of React & Next.js sites load cross-origin scripts (96% good INP, 80ms median).
Across 9,282 React sites, 100.0% run first-party bundles (95% good INP) and 94.8% also execute cross-origin scripts (96% good INP, 80ms median).
99.6% of React & Next.js sites declare scripts in HTML and 95.1% also load script-initiated chunks (95% good INP).
Across 9,282 React sites, 99.6% use parser-discovered <script> tags (95% good INP), 95.1% load script-initiated chunks (95% good INP), and 71.8% use other initiators (95% good INP).
React & Next.js sites with <body> stylesheets (14.1%) pass LCP 27 points less often than sites with inline CSS (58% vs 85%).
Across 9,281 React sites, 99.3% use inline <style> blocks (85% good LCP, 1.4s median), 56.0% load blocking <head> CSS (77%), and 14.1% include <link rel="stylesheet"> tags inside <body> (58% good LCP, 2.3s median).
React & Next.js sites loading third-party stylesheets (44.8%) pass LCP 7 points less often than sites on first-party CSS (78% vs 85%).
Across 9,281 React sites, 99.9% serve first-party CSS (85% good LCP, 1.4s median) and 44.8% load external third-party stylesheets (78% good LCP, 1.6s median).
99.3% of React & Next.js sites use inline styles (85% good LCP), while 37.4% load external <link> CSS (69%).
Across 9,281 React sites, 99.3% emit inline <style> tags (85% good LCP, 1.4s median), 36.2% load CSS from JS chunks (80% good LCP), and 37.4% load parser <link rel="stylesheet"> tags (69% good LCP, 2.0s median).
React & Next.js sites loading TTF fonts (7.3%) pass LCP 26 points less often than sites on WOFF2 (59% vs 85%).
Across 9,147 font-using React sites, 97.1% serve WOFF2 (85% good LCP, 1.4s median), 13.8% serve WOFF (63% good LCP), and 7.3% serve TTF (59% good LCP, 2.3s median).
React & Next.js sites loading external Google Fonts (18.9%) pass LCP at 65% vs 90% on dedicated CDNs.
Across 9,147 font-using React sites, 77.3% serve fonts from external CDNs (90% good LCP, 1.3s median) and 18.9% load Google Fonts at runtime (65% good LCP, 2.0s median, 25 percentage points apart).
85.6% of media-using React & Next.js sites stream from external CDNs (91% good LCP vs 62% self-hosted).
Across 1,803 React sites with <video> or <audio> tags, 85.6% serve media from external CDNs (91% good LCP, 1.3s median) and 15.9% serve media from their own origin (62% good LCP, 2.2s median, 29 points apart).
62.9% of React & Next.js sites call scheduler.yield() (97% good INP, 74ms median).
Across 9,276 React sites, 62.9% call scheduler.yield() (97% good INP, 74ms median) and 63.4% call setInterval() (94% good INP, 85ms median).
60.0% of LoAF React & Next.js sites record long frames in event listeners (95% good INP).
Across 5,701 React sites recording Long Animation Frames, 60.0% record long frames in DOM event listeners (95% good INP, 79ms median), 44.3% during script evaluation (94% good INP), and 18.6% in timer callbacks (96%).
91.6% of React & Next.js sites execute fetch() requests during load (86% good LCP, 1.4s median).
Across 9,282 React sites, 100.0% load JS bundles, 99.9% load images, 98.5% load web fonts (85% good LCP), and 91.6% fire fetch() requests (86% good LCP).
91.1% of React & Next.js sites serve Brotli-compressed subresources (86% good LCP, 1.4s median).
Across 9,282 React sites, 91.1% serve Brotli-compressed bundles (86% good LCP), 97.7% use Gzip (85% good LCP), and 41.3% include Zstandard-compressed scripts (77% good LCP).
74.6% of React & Next.js sites load subresources from CloudFront (90% good LCP) and 68.1% from Fastly (92%).
Across 9,282 React sites, 74.6% load subresources from Amazon CloudFront (90% good LCP, 1.3s median), 68.1% from Fastly (92% good LCP, 1.2s median), and 36.0% from Cloudflare (77% good LCP).
React apps exceeding 3 MB of images pass LCP 26 points less often than apps under 350 KB.
Across React sites, 38% transfer under 350 KB of images (92% good LCP, 1.2s median) compared with 14% transferring over 3 MB (66% good LCP, 2.0s median).
89% of React sites ship over 550 KB of JavaScript bundles.
Across React sites, 45% transfer 550 KB to 1 MB of JavaScript (97% INP pass rate, 73ms median) and 44% exceed 1 MB (94% pass rate, 87ms median).
React sites under 40 KB of external CSS pass LCP 37 points more often than sites over 160 KB.
Across React sites, 55% ship under 40 KB of external CSS (91% good LCP, 1.3s median) and 22% ship over 160 KB (54% good LCP, 2.4s median).
React sites with over 600 KB of unused CSS pass LCP 31 points less often than sites under 140 KB.
Across React sites, 28% have under 140 KB of unused CSS (95% good LCP, 1.1s median) and 22% have over 600 KB of unused styles (64% good LCP, 2.1s median).
React sites loading 7+ font files pass LCP 9 points less often than sites with 1 to 3 fonts.
Across React sites, 27% load 1 to 3 font files (88% good LCP), 42% load 4 to 6 font files, and 30% load 7 or more font files (79% good LCP, 1.6s median).
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 (84% LCP pass rate, 1.4s median) and 12% load under 500 KB (85%).
63% of React sites emit preload hints (92% good LCP vs 57% on dns-prefetch only).
Across React sites, 63% emit preload hints (92% good LCP, 1.2s median) compared with 9% emitting dns-prefetch only (57% good LCP, 2.3s median).
React sites with 6+ cookies pass LCP 28 points less often than sites with 3 to 5 cookies.
Across React sites, 43% set 3 to 5 cookies (92% good LCP, 1.2s median) and 20% set 6 or more cookies (64% good LCP, 2.1s median).
63% of React sites record under 130ms of Long Animation Frame work.
Across React sites, 36% record under 80ms of LoAF work (95% INP pass rate, 77ms median) and 27% record 80 to 130ms (96%), compared with 92% (94ms median) on the 17% exceeding 250ms.
React sites painting under 300ms in the lab pass field LCP 25 points more often than sites over 1,500ms.
Across React sites, 46% paint their hero element in under 300ms in the lab (95% field LCP pass rate, 1.1s median) compared with 26% taking over 1,500ms (70% pass rate, 1.8s median).
React sites reaching DOMComplete under 350ms pass field LCP 38 points more often than sites over 1,500ms.
Across React sites, 48% reach DOMComplete in under 350ms (94% field LCP pass rate, 1.2s median) and 18% take over 1,500ms (56% pass rate, 2.3s median).
69% of React sites spend over 450ms in scripting CPU.
Across React sites, 39% spend 450 to 1,200ms in scripting CPU (95% INP pass rate, 79ms median) and 30% exceed 1,200ms (93%, 91ms median), compared with 96% (72ms median) at 150 to 450ms.
TTFB is the largest LCP sub-part on 57% of React sites (79% good LCP vs 93% when load delay leads, 14 points apart).
Across React sites, TTFB is the largest LCP sub-part on 57% (79% LCP pass rate, 1.6s median) and load delay is the largest sub-part on 38% (93% pass rate, 1.2s median).
React hero images over 300 KB pass LCP 27 points less often than hero images under 40 KB.
Across React sites, 49% serve an LCP image under 40 KB (89% LCP pass rate, 1.3s median), 29% serve 40 to 100 KB (89%), and 9% exceed 300 KB (62% pass rate, 2.2s median).
React sites exceeding 5 MB of total transfer pass LCP 28 points less often than sites under 1.2 MB.
Across React sites, 14% transfer under 1.2 MB (96% LCP pass rate, 1.0s median), 42% transfer 1.2 to 2.5 MB (92%), and 20% exceed 5 MB (68% pass rate, 1.9s median).
Hot questions this edition
Preload, fetchpriority — do the hints help?
LCP by priority hint on the element
Which CMS is fastest?
WordPress, Shopify, Wix, Squarespace ranked
What blocks the main thread?
Top scripts in long animation frames
Are AVIF sites faster?
JPEG, WebP, AVIF, JXL ranked by LCP
Where do the LCP milliseconds go?
TTFB, load delay, load time, render delay
How big is the JavaScript tax on INP?
Script count and weight vs INP
How much shipped JavaScript even runs?
Used vs unused script bytes
Which CDNs hit the lowest TTFB?
Cloudflare, Akamai, Fastly, CloudFront
INP cost of analytics scripts
GA4, Plausible, Fathom, Matomo
DOM size and CLS
How DOM growth correlates with shifts
Or browse the data
120 signals across 13 sections. Use the tree on the left or the search box.
- Headline metrics 5 signals LCP, INP, CLS…
- Tech stack 3 signals CDN (7), CMS (12), Frameworks (11)…
- Third parties 27 signals JS libraries (26), Analytics (20), CMS (17)…
- Main thread 1 signals Top INP blockers (25)…
- LCP Image 8 signals LCP discovery, LCP element type, LCP image format…
- LCP Timing 1 signals LCP phase breakdown…
- Page resources 36 signals Bytes by resource type, Compression mix, Cookies per site…
- INP 6 signals Blocking frame breakdown, CSS hints, INP phase breakdown…
- CLS 5 signals Largest single shift, Layout shift count, Shift concentration…
- CDN & Delivery 12 signals Cache strategy mix, Cacheable responses, Connection hints…
- Synthetic (lab) 4 signals Document lifecycle (lab), Lab paint timeline, Main-thread CPU (lab)…
- Speculation rules 2 signals Speculation eagerness, Speculation posture…
- Tech stack 10 signals Ad networks on page, Analytics on page, CMS…
210,902 crawled sites with Chrome field data, representing millions of real page loads, October 2026 edition. How we measured.