1
The league table share of sites passing — overall, then metric by metric Sorted by the share passing all three Core Web Vitals. Each cell is the share of that platform’s sites passing that metric; the small number is the p75.
Compare htmx Alpine React jQuery Svelte Vue Remix Gatsby Nuxt Next.js Angular vs htmx Alpine React jQuery Svelte Vue Remix Gatsby Nuxt Next.js Angular Compare head-to-head →
#
Platform
Overallpass all 3
LCP% good
INP% good
CLS% good
TTFB% good
1
HT htmx 305 sites
79.8%
90.6% 1.9s
98.8% 108ms
87.2% 0.03
58.1% 1.1s
2
AL Alpine 2,689 sites
79.5%
89.4% 1.9s
96.5% 115ms
90.5% 0.03
57.0% 1.1s
3
RE React 9,658 sites
76.1%
84.6% 2.1s
95.1% 103ms
91.8% 0.01
66.5% 1.1s
4
JQ jQuery 144,465 sites
70.4%
80.7% 2.3s
96.7% 104ms
88.4% 0.04
51.3% 1.4s
5
SV Svelte 471 sites
67.6%
83.4% 2.1s
92.4% 138ms
85.5% 0.05
71.1% 885ms
6
VU Vue 12,199 sites
63.6%
76.3% 2.4s
95.1% 127ms
83.4% 0.06
52.4% 1.4s
7
RE Remix 53 sites
58.7%
84.6% 2.2s
87.0% 151ms
73.1% 0.11
56.3% 1.1s
8
GA Gatsby 218 sites
48.6%
71.4% 2.6s
81.8% 180ms
64.9% 0.19
77.7% 755ms
9
NU Nuxt 1,311 sites
48.1%
71.9% 2.6s
88.3% 158ms
69.3% 0.14
62.6% 1.0s
10
NE Next.js 1,840 sites
46.6%
85.2% 2.1s
67.6% 233ms
66.2% 0.17
69.0% 879ms
11
AN Angular 3,396 sites
37.4%
66.2% 2.9s
87.6% 162ms
56.7% 0.24
76.1% 768ms
Champions LCP htmx 90.6% INP htmx 98.8% CLS React 91.8% TTFB Gatsby 77.7%
Cell shade tracks the share of each platform’s sites passing that metric (red → green); the small number is the p75.
2
Market share vs. speed does popularity buy performance? Each bubble is a platform, sized by how many sites run it. Up = a higher share passing all three CWV.
Small & fast Popular & slow % passing all 3 CWV ↑
50%
60%
70%
75%
80%
HT htmx 79.8% AL Alpine 79.5% RE React 76.1% JQ jQuery 70.4% SV Svelte 67.6% VU Vue 63.6% RE Remix 58.7% GA Gatsby 48.6% NU Nuxt 48.1% NE Next.js 46.6% AN Angular 37.4% market share (log) →
Bubble size = number of sites. The widely-used libraries cluster low; the smaller, newer frameworks score higher.
3
The spread behind the pass-rate the split a single number hides A pass-rate is one number; this is the good / needs-work / poor split underneath it, per metric. Sorted by overall standing.
LCP INP CLS TTFB
good needs work poorp75 →
“Pass” = good on LCP and INP and CLS together. 212,308 crawled sites with Chrome field data, representing millions of real page loads, October 2026 edition. How we measured .