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 301 sites
79.8%
90.5% 1.9s
98.8% 108ms
87.3% 0.03
58.5% 1.1s
2
AL Alpine 2,671 sites
79.4%
89.4% 1.9s
96.5% 115ms
90.5% 0.03
56.9% 1.1s
3
RE React 9,570 sites
76.1%
84.6% 2.1s
95.1% 103ms
91.8% 0.01
66.5% 1.1s
4
JQ jQuery 143,509 sites
70.4%
80.7% 2.3s
96.7% 104ms
88.4% 0.04
51.3% 1.4s
5
SV Svelte 467 sites
67.3%
83.3% 2.1s
92.3% 138ms
85.4% 0.05
71.2% 885ms
6
VU Vue 12,115 sites
63.6%
76.3% 2.4s
95.1% 127ms
83.4% 0.06
52.5% 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,309 sites
48.1%
71.9% 2.6s
88.3% 157ms
69.3% 0.14
62.7% 1.0s
10
NE Next.js 1,832 sites
46.5%
85.2% 2.1s
67.5% 233ms
66.2% 0.17
69.1% 877ms
11
AN Angular 3,377 sites
37.4%
66.2% 2.8s
87.6% 162ms
56.5% 0.24
76.1% 767ms
Champions LCP htmx 90.5% 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.4% RE React 76.1% JQ jQuery 70.4% SV Svelte 67.3% VU Vue 63.6% RE Remix 58.7% GA Gatsby 48.6% NU Nuxt 48.1% NE Next.js 46.5% 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. 210,902 crawled sites with Chrome field data, representing millions of real page loads, October 2026 edition. How we measured .