Frameworks performance

How JavaScript frameworks score across LCP, INP and CLS.

Field data PhoneDesktopAll Scope All sites October 2026 edition · Phone 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.

77.3%
Best: Angular
good TTFB
60.4%
Typical framework
good TTFB
51.9%
Worst: jQuery
good TTFB

Angular passes TTFB most often of any framework. 77.3% of its sites pass. jQuery (the most-used framework) passes least at 51.9%. The gap is 25 percentage points.

The State of Web Vitals · October 2026 · 212,308 crawled sites · phone field datacorewebvitals.io/state-of-cwv
2

The ranking sorted by TTFB at p75, fastest first

# Framework TTFB p75 Passing Sites
1 Angular 745ms 77.3%
3,396
2 Gatsby 767ms 76.9%
218
3 Next.js 917ms 67.0%
1,840
4 Svelte 933ms 68.7%
471
5 React 1.0s 68.3%
9,658
6 Nuxt 1.0s 60.4%
1,311
7 htmx 1.1s 56.8%
305
8 Alpine.js 1.2s 55.5%
2,689
9 Remix 1.2s 50.0%
53
10 jQuery 1.3s 51.9%
144,465
11 Vue 1.3s 52.6%
12,199
The State of Web Vitals · October 2026 · 212,308 crawled sites · phone field datacorewebvitals.io/state-of-cwv
3

Passing TTFB per framework which group passes the TTFB most often

FrameworkSitesPassing TTFBp75
Angular 1.6% 3,396 77% 745ms
Gatsby 0.1% 218 77% 767ms
Svelte 0.2% 471 69% 933ms
React 4.7% 9,658 68% 1.0s
Next.js 0.9% 1,840 67% 917ms
Nuxt 0.6% 1,311 60% 1.0s
htmx 0.1% 305 57% 1.1s
Alpine.js 1.3% 2,689 56% 1.2s
Vue 5.9% 12,199 53% 1.3s
jQuery 69.6% 144,465 52% 1.3s
Remix 0% 53 50% 1.2s
Good Needs Improvement Poor Sorted best-passing first · median colored by its own rating · pass = good TTFB (800ms at p75) · one value per site

77% of Angular sites pass TTFB. JQuery trails 25 points behind, leaving 48% of its sites failing. computed

The State of Web Vitals · October 2026 · 212,308 crawled sites · phone 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.6%
802.3s
95121ms
900.02
721.9s
521.3s
Vue 5.9%
762.5s
92144ms
850.04
692.0s
531.3s
React 4.7%
842.1s
93120ms
920.01
811.6s
681.0s
Angular 1.6%
652.9s
79191ms
580.26
692.0s
77745ms
Alpine.js 1.3%
892.0s
94136ms
920.01
801.7s
561.2s
Next.js 0.9%
832.2s
60268ms
660.17
831.6s
67917ms
Nuxt 0.6%
692.7s
84176ms
720.12
682.0s
601.0s
Svelte 0.2%
842.1s
89153ms
860.05
811.6s
69933ms
htmx 0.1%
902.0s
97130ms
930.01
841.6s
571.1s
Gatsby 0.1%
622.9s
69213ms
670.19
891.5s
77767ms
Remix 0%
782.2s
78191ms
750.10
731.8s
501.2s
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.

Angular leads on TTFB: 77% of its sites pass. jQuery trails at 52%. computed

The State of Web Vitals · October 2026 · 212,308 crawled sites · phone 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, Angular reaches a good TTFB on 77.3% of sites; Vue on 52.6%.

Related signals CDN (7) → CMS (12) → 212,308 crawled sites with Chrome field data, representing millions of real page loads · How we measured