Frameworks performance

How JavaScript frameworks score across LCP, INP and CLS.

Field data PhoneDesktopAll Scope All sites Q2 2026 edition · All devices field outcomes
Metric LCP INP CLS FCP TTFB
1

At a glance the headline numbers for Frameworks performance

How JavaScript frameworks score across LCP, INP and CLS.

93.8%
Best: Gatsby
good FCP
73.1%
Most used: jQuery
good FCP
70.7%
Worst: Vue
good FCP

Gatsby passes FCP most often of any framework. 93.8% of its sites pass. Vue passes least at 70.7%. jQuery (the most-used framework) sits at 73.1%. The gap is 23 percentage points.

The State of Web Vitals · Q2 2026 · 189,915 sites · all devices field datacorewebvitals.io/state-of-cwv
2

The ranking sorted by FCP at p75, fastest first

# Framework FCP p75 Passing Sites
1 Gatsby 1.4s 93.8%
197
2 htmx 1.5s 84.4%
268
3 React 1.5s 81.4%
8,475
4 Next.js 1.5s 84.0%
1,622
5 Alpine.js 1.6s 82.5%
2,409
6 Svelte 1.6s 81.5%
416
7 Nuxt 1.9s 72.9%
1,162
8 jQuery 1.9s 73.1%
129,438
9 Vue 1.9s 70.7%
10,724
10 Angular 2.0s 70.1%
3,035
The State of Web Vitals · Q2 2026 · 189,915 sites · all devices field datacorewebvitals.io/state-of-cwv
3

Passing FCP per framework which group passes the FCP most often

FrameworkSitesPassing FCPp75
Gatsby 0.1% 197 94% 1.4s
htmx 0.1% 268 84% 1.5s
Next.js 0.9% 1,622 84% 1.5s
Alpine.js 1.3% 2,409 83% 1.6s
Remix 0% 49 82% 1.6s
Svelte 0.2% 416 82% 1.6s
React 4.6% 8,475 81% 1.5s
jQuery 69.9% 129,438 73% 1.9s
Nuxt 0.6% 1,162 73% 1.9s
Vue 5.8% 10,724 71% 1.9s
Angular 1.6% 3,035 70% 2.0s
Good Needs Improvement Poor Sorted best-passing first · median colored by its own rating · pass = good FCP (1.8s at p75) · one value per site

94% of Gatsby sites pass FCP. Angular trails 24 points behind, leaving 30% of its sites failing. computed

The State of Web Vitals · Q2 2026 · 189,915 sites · all devices field datacorewebvitals.io/state-of-cwv
4

All five vitals at once the whole category without toggling - cell is the pass rate, small number the p75

LCP
INP
CLS
FCP
TTFB
jQuery 69.9%
812.2s
97104ms
880.04
731.9s
511.4s
Vue 5.8%
762.4s
95127ms
830.06
711.9s
521.4s
React 4.6%
852.0s
95103ms
920.01
811.5s
661.1s
Angular 1.6%
662.9s
88161ms
560.24
702.0s
76771ms
Alpine.js 1.3%
891.9s
97115ms
900.03
831.6s
571.1s
Next.js 0.9%
852.1s
67236ms
660.17
841.5s
69884ms
Nuxt 0.6%
732.6s
89155ms
690.14
731.9s
631.0s
Svelte 0.2%
832.1s
93137ms
850.05
821.6s
71886ms
htmx 0.1%
911.9s
99108ms
880.03
841.5s
581.1s
Gatsby 0.1%
722.5s
82180ms
640.20
941.4s
78749ms
Remix 0%
842.2s
89147ms
710.11
821.6s
561.1s
60%95%+ passing Cell: pass rate, small number = p75 · faded rows: under 100 sites

One row per framework, one column per vital - the cell is the share of sites passing, the small number the p75. No toggling needed to see where the category actually differs.

Gatsby leads on FCP: 94% of its sites pass. Angular trails at 70%. computed

The State of Web Vitals · Q2 2026 · 189,915 sites · all devices field datacorewebvitals.io/state-of-cwv
5

Why this matters for the Core Web Vitals, and where to start fixing it

A JavaScript framework shapes how much code runs in the browser to put your page on the screen. Some render on the server and ship light; others send a large bundle and rebuild the page on the client, which lands on the main thread and shows up in INP. The framework is not destiny, but its defaults and how you use them decide how much JavaScript the visitor has to pay for.

Start by looking at what ships to the browser and when it runs. Render on the server where you can, split the bundle so each page only loads what it needs, and defer the work that is not required for the first interaction. Framework JavaScript runs on the main thread, so the less of it the browser has to execute, the better INP gets.

How does your framework affect Core Web Vitals?

Among the JavaScript frameworks, Gatsby reaches a good FCP on 93.8% of sites; Angular on 70.1%.

Related signals CDN (7) → CMS (11) → Chrome field data from 189,915 sites, representing millions of real page loads · How we measured