Web Frameworks Comparison
|
This content was generated with the assistance of AI and should be verified against the official documentation of each framework before being relied on. See the bibliographies of the Backend Frameworks Comparison and the Web Frameworks Comparison for the data sources and the date of each figure. |
This page compares 42 web frameworks: client-side UI frameworks and libraries, meta-frameworks, server-driven and server-rendered view layers, and CSS frameworks. It covers every framework documented on this site plus others that matter because they are popular, because they are growing, or for historical context. Every number carries a source and a date, and anything that could not be sourced is shown as n/a instead of being estimated. The data snapshot date is 2026-10-27: all sources were read on that day, and each caption names the edition or measurement date of its data.
The raw data (CSV files), the chart and table generators and the scoring rubric are kept in the repository under scripts/framework-charts/; npm run charts:frameworks regenerates every figure and table on this page.
Full-stack frameworks are compared once, on the Backend Frameworks Comparison (routing, ORM, throughput); this page compares their view layers.
Content-management systems such as WordPress are not frameworks and are compared on the CMS Comparison.
Language-level metrics are on the Programming Languages Comparative.
Jump to the Summary and recommendations if you only need the conclusions.
Scope and inclusion criteria
A framework is included when at least one of these holds:
-
It has its own section or page on this site: React, Angular, Vue.js, jQuery, Next.js, Vaadin (Flow and Hilla), JSF, Thymeleaf, JSP, GWT, Blazor, Razor Pages, Django templates, Laravel Blade, Livewire and Inertia, htmx (in the Thymeleaf and axum sections), and the CSS frameworks Bootstrap, Tailwind CSS and Sass (a preprocessor, for context).
-
It appears in the framework lists of State of JS 2025, the Stack Overflow Developer Survey 2025 or the JetBrains survey 2023, or ranks in npm downloads or HTTP Archive detections: Svelte, SolidJS, Preact, Lit, Qwik and Alpine.js; Nuxt, SvelteKit, Remix (now React Router 7), Astro and Angular SSR; Phoenix LiveView and Hotwire; Bulma, Foundation, Material UI and shadcn/ui.
-
It matters for history: ASP.NET Web Forms, GWT, jQuery, AngularJS (1.x), Backbone.js, Ember.js and Knockout.
CSS frameworks have their own metrics (popularity, usage on websites, stylesheet size, ease of use) and their own radar; they are never mixed with the JavaScript framework radars. Frameworks without a section on this site get fewer metrics where data is scarce: the feature matrix and the site-coverage columns are only assessed for the documented ones. Every framework name links to its section on this site, or to its official website when the site has no section.
| Framework | Group | Language | First release | Status | Licence | Governance | On this site |
|---|---|---|---|---|---|---|---|
dotnet |
C# |
2002 |
legacy |
n/a |
Microsoft |
yes |
|
client |
JavaScript/TypeScript |
2012-01-14 |
active |
MIT |
React Foundation (Linux Foundation) |
yes |
|
client |
TypeScript |
2016-09-15 |
active |
MIT |
yes |
||
client |
JavaScript/TypeScript |
2013-12-07 |
active |
MIT |
Evan You and community |
yes |
|
client |
JavaScript |
2011-03-19 |
legacy |
MIT |
OpenJS Foundation |
yes |
|
client |
JavaScript/TypeScript |
2016-11-17 |
active |
MIT |
Svelte contributors |
no |
|
client |
JavaScript/TypeScript |
2018-04-25 |
active |
MIT |
n/a |
no |
|
client |
JavaScript |
2015-09-11 |
active |
MIT |
n/a |
no |
|
client |
JavaScript/TypeScript |
2021-09-21 |
active |
BSD-3-Clause |
OpenJS Foundation |
no |
|
client |
TypeScript |
2021-06-01 |
active |
MIT |
n/a |
no |
|
client |
JavaScript (hypermedia) |
2020-05-02 |
active |
0BSD |
n/a |
yes |
|
client |
JavaScript |
2019-12-18 |
active |
MIT |
n/a |
no |
|
meta |
JavaScript/TypeScript |
2016-10-25 |
active |
MIT |
n/a |
yes |
|
meta |
JavaScript/TypeScript |
2016-10-26 |
active |
MIT |
n/a |
no |
|
meta |
JavaScript/TypeScript |
2020-10-14 |
active |
MIT |
n/a |
no |
|
meta |
JavaScript/TypeScript |
2021-11-17 |
active |
MIT |
n/a |
no |
|
meta |
JavaScript/TypeScript |
2021-03-12 |
active |
MIT |
n/a |
no |
|
meta |
TypeScript |
2023-11-08 |
active |
MIT |
yes |
||
server-java |
Java |
2018-06-25 |
active |
Apache-2.0 |
n/a |
yes |
|
server-java |
Java |
2011-12-21 |
active |
n/a |
Eclipse Foundation |
yes |
|
server-java |
Java |
2011-07-17 |
active |
Apache-2.0 |
n/a |
yes |
|
server-java |
Java |
2008-09-10 |
legacy |
n/a |
Eclipse Foundation |
yes |
|
server-java |
Java |
2007-09-17 |
legacy |
n/a |
n/a |
yes |
|
server-other |
C# |
2019 |
active |
n/a |
Microsoft |
yes |
|
server-other |
C# |
2017-08-11 |
active |
n/a |
Microsoft |
yes |
|
server-other |
Python |
n/a |
active |
n/a |
Django Software Foundation |
yes |
|
server-other |
PHP |
n/a |
active |
n/a |
n/a |
yes |
|
server-other |
PHP |
2019-04-15 |
active |
MIT |
n/a |
yes |
|
server-other |
PHP/JavaScript |
2023-01-14 |
active |
MIT |
n/a |
yes |
|
server-other |
Elixir |
2019-08-25 |
active |
MIT |
n/a |
no |
|
server-other |
Ruby/JavaScript |
2021-09-24 |
active |
MIT |
n/a |
no |
|
css |
CSS |
2011-08-28 |
active |
MIT |
n/a |
yes |
|
css |
CSS |
2017-10-06 |
active |
MIT |
n/a |
yes |
|
css |
CSS preprocessor |
2017-06-06 |
active |
MIT |
the Sass team |
yes |
|
css |
CSS |
2016-01-27 |
active |
MIT |
n/a |
no |
|
css |
CSS |
2015-04-30 |
legacy |
MIT |
n/a |
no |
|
css |
React components |
2021-09-16 |
active |
MIT |
n/a |
no |
|
css |
React components |
2024-07-09 |
active |
MIT |
n/a |
no |
|
historical |
JavaScript |
2012-03-28 |
historical |
MIT |
no |
||
historical |
JavaScript |
2011-07-01 |
historical |
MIT |
n/a |
no |
|
historical |
JavaScript |
2017-01-24 |
active |
MIT |
n/a |
no |
|
historical |
JavaScript |
2012-05-09 |
historical |
MIT |
n/a |
no |
How metrics, scales and scores were assigned
Metrics. A value is recorded only when it was read in the source named for it; otherwise it is n/a and charts draw a gap or an "n/a" label, never a zero.
Derived values use the publisher’s own formula (State of JS ratios from the published answer counts, js-framework-benchmark factors from its raw results), documented in scripts/framework-charts/data/NOTES.md.
| Metric | What it measures | Source | Edition or date |
|---|---|---|---|
Survey usage, admired, desired |
Share of respondents who used a framework; share of its users who want to keep using it; share of all respondents who want to use it |
2019 to 2025 (2026 has no frameworks question) |
|
State of JS usage, retention, interest |
Usage, positive sentiment among users (retention) and among non-users (interest) |
2016 to 2025 |
|
Share within a language |
Share of JavaScript or C# developers who use the framework |
2023 |
|
npm downloads |
Monthly downloads and the 12 months to 2026-06 |
2015-01 to 2026-09 |
|
Usage on live websites |
Origins detected by HTTP Archive; share of the top 10 million websites |
September 2026 crawl; 2026-10-27 |
|
Job demand |
Share of Hacker News "Who is hiring?" postings that mention the framework |
Hacker News through Algolia |
2015-01 to 2026-10 |
Runtime performance |
Weighted geometric mean of the CPU benchmarks, memory and first paint, relative to the fastest keyed implementation |
Chrome 156.0.8078.48 results |
|
Bundle size |
Compressed size of the same minimal benchmark application, min+gzip size of the runtime package, stylesheet size of CSS frameworks |
2026-10-27 |
|
Core Web Vitals |
Share of origins with good LCP, CLS and INP |
September 2026 crawl |
|
Ecosystem, support and security |
Release history, support cycles and LTS, advisories and OpenSSF Scorecard |
registries, endoflife.date, OSV.dev, OpenSSF Scorecard |
2026-10-27 |
Radar scores (0 to 10, higher is better). Each radar axis is either computed © or editorial (E), relative to the frameworks on this page; CSS frameworks are scored among themselves.
-
Popularity ©: survey usage relative to the most used framework, registry downloads (npm for most frameworks; a framework on several registries is scored in the one with the most frameworks on this page, so Inertia is ranked on npm), GitHub stars and HTTP Archive origins, the last three on a log scale.
-
Growth ©: change in survey usage (2023 to 2025), in npm downloads year over year and in State of JS usage, each scaled between the slowest and fastest grower.
-
Talent pool and jobs ©: professional survey usage and Hacker News job-posting share, relative to the best framework.
-
Ease of use, Ecosystem and maturity, Productivity (E): written rubric, with a basis per framework in the radar tables.
-
Runtime performance ©: js-framework-benchmark CPU factor
f,10 × (1 − log2(f) / 3); 8 times slower than the fastest scores 0. -
Bundle size ©: compressed size of the benchmark application relative to the smallest, on a log scale; 100 times larger scores 0.
-
Performance ©: mean of runtime performance, bundle size and the Core Web Vitals mobile pass rate relative to the best.
The full formulas, the rubric and the method of every dataset are in scripts/framework-charts/data/NOTES.md.
Overview and timeline
jQuery (on npm since 2011), Backbone.js, Knockout and AngularJS (on npm since 2011 and 2012) shaped the early single-page applications; React’s first npm release by the project dates from 2012 and Angular 2 and later (@angular/core) from 2016.
The component and compiler generation followed: Vue.js (2013), Svelte (2016), SolidJS (2018), Qwik and Astro (2021). Meta-frameworks arrived with Next.js and Nuxt (2016).
AngularJS reached its end of life on 2021-12-31 (endoflife.date).
frameworks.csv, read 2026-10-27.Popularity
In the Stack Overflow survey 2025, React is used by 44.7% of respondents, jQuery by 23.4%, Next.js by 20.8%, Angular by 18.2% and Vue.js by 17.6%. Svelte (62.4%) and Astro (62.2%) are the most admired of the front-end frameworks, React has 52.1% and AngularJS 21.9%. Among JavaScript developers (JetBrains 2023), 57% use React, 32% Vue.js, 27% Next.js and 20% Angular.
On npm, React had 4,023 million downloads in the 12 months to 2026-06, Tailwind CSS 2,685 million and Next.js 1,240 million; npm counts include CI and are only compared with other npm packages.
Usage on live websites tells a different story, because old sites stay online: HTTP Archive detects jQuery on 5,581,844 origins in its September 2026 mobile crawl, Bootstrap on 2,235,330 and React on 1,312,185, and W3Techs finds jQuery on 64.4% of the top 10 million websites against 6% for React.
| Framework | SO usage 2025 | SO admired | SO desired | State of JS usage 2025 | State of JS retention | JetBrains 2023 (own language) | GitHub stars | HTTP Archive origins | W3Techs sites |
|---|---|---|---|---|---|---|---|---|---|
44.7% |
52.1% |
30.7% |
85.1% |
72.4% |
57.0% |
252k |
1,312k |
6.0% |
|
18.2% |
44.7% |
12.6% |
48.4% |
48.1% |
20.0% |
101k |
119k |
0.2% |
|
17.6% |
50.9% |
15.3% |
53.0% |
84.5% |
32.0% |
55k |
619k |
0.6% |
|
23.4% |
31.4% |
9.0% |
n/a |
n/a |
n/a |
60k |
5,582k |
64.4% |
|
7.2% |
62.4% |
11.1% |
27.5% |
87.0% |
7.0% |
88k |
95k |
0.1% |
|
n/a |
n/a |
n/a |
10.5% |
90.0% |
n/a |
36k |
0k |
n/a |
|
n/a |
n/a |
n/a |
15.3% |
81.7% |
1.0% |
39k |
386k |
n/a |
|
n/a |
n/a |
n/a |
10.4% |
67.7% |
1.0% |
22k |
456k |
n/a |
|
n/a |
n/a |
n/a |
3.5% |
64.8% |
n/a |
22k |
1k |
n/a |
|
n/a |
n/a |
n/a |
9.0% |
69.3% |
n/a |
50k |
25k |
0.1% |
|
n/a |
n/a |
n/a |
9.3% |
77.7% |
n/a |
32k |
108k |
n/a |
|
20.8% |
45.5% |
14.9% |
59.1% |
55.3% |
27.0% |
143k |
405k |
3.7% |
|
4.0% |
46.4% |
4.0% |
23.8% |
80.4% |
5.0% |
61k |
95k |
0.8% |
|
n/a |
n/a |
n/a |
17.7% |
88.7% |
n/a |
21k |
10k |
n/a |
|
n/a |
n/a |
n/a |
14.2% |
68.1% |
2.0% |
57k |
5k |
n/a |
|
4.5% |
62.2% |
5.9% |
27.6% |
94.0% |
3.0% |
63k |
49k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
1.0% |
1k |
0k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
3.0% |
0k |
4k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
3k |
n/a |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
2k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
2k |
4k |
n/a |
|
7.0% |
51.9% |
7.1% |
n/a |
n/a |
n/a |
n/a |
3k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
22.0% |
n/a |
n/a |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
24k |
22k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
8k |
17k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
7k |
1k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
7k |
20k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
175k |
2,235k |
13.1% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
98k |
691k |
0.3% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
4k |
1k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
50k |
2k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
30k |
n/a |
0.4% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
99k |
65k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
126k |
116k |
n/a |
|
7.2% |
21.9% |
4.0% |
n/a |
n/a |
n/a |
58k |
81k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
28k |
104k |
0.7% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
23k |
5k |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
11k |
18k |
0.1% |
| Framework | Registry | Package | Period | Downloads | Primary | Source |
|---|---|---|---|---|---|---|
npm |
react |
12 months to 2026-06 |
4022.9M |
yes |
||
npm |
tailwindcss |
12 months to 2026-06 |
2685.5M |
yes |
||
npm |
react-router |
12 months to 2026-06 |
1511.2M |
no |
||
npm |
next |
12 months to 2026-06 |
1240.1M |
yes |
||
npm |
sass |
12 months to 2026-06 |
1138.8M |
yes |
||
npm |
jquery |
12 months to 2026-06 |
895.0M |
yes |
||
npm |
preact |
12 months to 2026-06 |
634.7M |
yes |
||
npm |
vue |
12 months to 2026-06 |
467.1M |
yes |
||
npm |
@mui/material |
12 months to 2026-06 |
364.6M |
yes |
||
npm |
bootstrap |
12 months to 2026-06 |
276.1M |
yes |
||
npm |
@angular/core |
12 months to 2026-06 |
236.7M |
yes |
||
npm |
lit |
12 months to 2026-06 |
217.2M |
yes |
||
npm |
svelte |
12 months to 2026-06 |
152.9M |
yes |
||
npm |
shadcn |
12 months to 2026-06 |
90.3M |
yes |
||
npm |
solid-js |
12 months to 2026-06 |
74.3M |
yes |
||
npm |
astro |
12 months to 2026-06 |
73.8M |
yes |
||
npm |
@material-ui/core |
12 months to 2026-06 |
64.1M |
no |
||
npm |
nuxt |
12 months to 2026-06 |
60.5M |
yes |
||
npm |
@sveltejs/kit |
12 months to 2026-06 |
57.0M |
yes |
||
npm |
node-sass |
12 months to 2026-06 |
56.8M |
no |
||
npm |
backbone |
12 months to 2026-06 |
43.1M |
yes |
||
npm |
@hotwired/turbo |
12 months to 2026-06 |
31.7M |
yes |
||
npm |
@remix-run/react |
12 months to 2026-06 |
28.6M |
yes |
||
npm |
angular |
12 months to 2026-06 |
25.8M |
yes |
||
npm |
@inertiajs/core |
12 months to 2026-06 |
25.7M |
yes |
||
npm |
alpinejs |
12 months to 2026-06 |
20.2M |
yes |
||
npm |
@angular/ssr |
12 months to 2026-06 |
17.7M |
yes |
||
npm |
bulma |
12 months to 2026-06 |
13.1M |
yes |
||
npm |
ember-source |
12 months to 2026-06 |
12.2M |
yes |
||
npm |
knockout |
12 months to 2026-06 |
6.0M |
yes |
||
npm |
htmx.org |
12 months to 2026-06 |
5.9M |
yes |
||
npm |
foundation-sites |
12 months to 2026-06 |
5.2M |
yes |
||
npm |
@nguniversal/express-engine |
12 months to 2026-06 |
2.6M |
no |
||
npm |
@builder.io/qwik |
12 months to 2026-06 |
1.3M |
yes |
||
Packagist |
livewire/livewire |
last 30 days |
9.6M |
yes |
||
Packagist |
inertiajs/inertia-laravel |
last 30 days |
8.5M |
yes |
||
NuGet |
Microsoft.AspNetCore.Components.WebAssembly |
total |
82.6M |
yes |
||
Hex |
phoenix_live_view |
last 90 days |
4.5M |
yes |
||
RubyGems |
turbo-rails |
total |
91.2M |
yes |
Growth trends
React’s survey share rose from 40.58% (2023) to 44.7% (2025) and Next.js’s from 16.67% to 20.8%, while jQuery went from 48.7% in 2019 to 23.4%. In State of JS, Next.js usage grew from 36.7% (2020) to 59.1% (2025) and Svelte from 14.5% to 27.5%, while Angular fell from 55.8% to 48.4%. On npm, downloads of SolidJS (3.9 times), Tailwind CSS (3.8 times), Inertia (3.8 times) and Astro (3.7 times) grew fastest between the 12 months to 2025-06 and the 12 months to 2026-06. GitHub stars over time are not shown yet, for the reasons given on the backend page: only the current stars appear under Popularity. On live websites, Next.js went from 4,178 origins (January 2020) to 404,724 (September 2026), Astro from 466 (January 2023) to 49,450 and htmx from 1,235 to 25,156, while jQuery fell from its 2023 peak of 7,783,523 origins.
Talent pool and job market
Ease of finding developers. React is used by 46.9% of professional respondents in the 2025 survey, jQuery by 24.1%, Next.js by 21.5% and Angular by 19.8%, so React developers are the easiest to hire.
Job opportunities. React appears in 21.82% of the 2025 Hacker News "Who is hiring?" postings, Next.js in 5.58%, Vue.js in 2.48% and Tailwind CSS in 1.88%; Angular was mentioned in 11.77% of the postings in 2015 and 0.55% in 2025. These threads lean towards start-ups and remote work. No source publishes salaries by framework; language-level salaries are on the Programming Languages Comparative.
| Framework | SO 2025 all respondents | SO 2025 professionals | HN hiring 2025 | HN hiring 2020 | HN hiring 2015 | Salary |
|---|---|---|---|---|---|---|
44.7% |
46.9% |
21.8% |
30.0% |
9.2% |
n/a |
|
18.2% |
19.8% |
0.6% |
3.4% |
11.8% |
n/a |
|
17.6% |
18.4% |
2.5% |
4.0% |
0.0% |
n/a |
|
23.4% |
24.1% |
0.1% |
0.4% |
3.6% |
n/a |
|
7.2% |
6.9% |
0.6% |
0.2% |
0.0% |
n/a |
|
n/a |
n/a |
0.4% |
0.0% |
0.0% |
n/a |
|
20.8% |
21.5% |
5.6% |
1.0% |
0.0% |
n/a |
|
4.0% |
4.1% |
0.1% |
0.2% |
0.0% |
n/a |
|
4.5% |
4.3% |
n/a |
n/a |
n/a |
n/a |
|
7.0% |
7.6% |
0.1% |
0.1% |
0.0% |
n/a |
|
n/a |
n/a |
1.9% |
0.1% |
0.0% |
n/a |
|
7.2% |
7.5% |
n/a |
n/a |
n/a |
n/a |
|
n/a |
n/a |
0.0% |
0.0% |
1.9% |
n/a |
|
n/a |
n/a |
0.1% |
0.7% |
2.3% |
n/a |
Ease of use and learning curve
Ease of use is an editorial score (rubric above, basis per framework in the radar tables). Libraries close to HTML (Vue.js, Svelte, Alpine.js, htmx, Thymeleaf) are quickest to start; React is small but needs a router and a framework choice; Angular asks for TypeScript, dependency injection, RxJS and signals before the first page, and Next.js’s App Router and caching rules take time to master. State of JS retention supports the picture: Astro (94%), SolidJS (90%), SvelteKit (88.7%) and Svelte (87%) keep their users best, Angular (48.1%) and Next.js (55.3%) least. For tools and editors see IDEs and tools; for UI component libraries in the Java world see Vaadin UI component libraries.
Ecosystem and maturity
Angular publishes a dated support window per major (version 22 to 2028-06-30) and shipped ten majors in five years; React and Vue.js have no announced end-of-life date for their current major on endoflife.date, and Vue.js shipped no new major in five years. Next.js had 88 releases in 12 months and Astro 113, while Bootstrap, Bulma and Foundation had none.
| Framework | First release | Latest version | Latest release | Majors in 5 years | Releases in 12 months | Current cycle | Cycle end of life | LTS | Extension ecosystem |
|---|---|---|---|---|---|---|---|---|---|
2002 |
n/a |
n/a |
n/a |
n/a |
4.8.1 |
not announced |
no |
n/a |
|
2012-01-14 |
19.3.1 |
2026-10-14 |
2 |
29 |
19 |
not announced |
no |
n/a |
|
2016-09-15 |
22.2.3 |
2026-10-14 |
10 |
101 |
22 |
2028-06-30 |
no |
n/a |
|
2013-12-07 |
3.5.44 |
2026-10-13 |
0 |
22 |
3.5 |
not announced |
no |
n/a |
|
2011-03-19 |
4.0.0 |
2026-01-18 |
1 |
1 |
4 |
not announced |
no |
n/a |
|
2016-11-17 |
5.57.3 |
2026-10-26 |
2 |
98 |
5 |
not announced |
no |
n/a |
|
2018-04-25 |
1.9.17 |
2026-10-07 |
0 |
7 |
n/a |
n/a |
n/a |
n/a |
|
2015-09-11 |
11.0.2 |
2026-10-23 |
1 |
19 |
n/a |
n/a |
n/a |
n/a |
|
2021-09-21 |
3.3.3 |
2026-05-14 |
1 |
2 |
n/a |
n/a |
n/a |
n/a |
|
2021-06-01 |
1.20.3 |
2026-10-25 |
1 |
9 |
n/a |
n/a |
n/a |
n/a |
|
2020-05-02 |
2.0.11 |
2026-09-22 |
2 |
4 |
n/a |
n/a |
n/a |
n/a |
|
2019-12-18 |
3.17.5 |
2026-10-20 |
0 |
21 |
n/a |
n/a |
n/a |
n/a |
|
2016-10-25 |
16.4.3 |
2026-10-23 |
4 |
88 |
16 |
not announced |
yes |
n/a |
|
2016-10-26 |
4.6.3 |
2026-10-27 |
2 |
31 |
4 |
not announced |
no |
n/a |
|
2020-10-14 |
3.1.0 |
2026-10-14 |
3 |
59 |
n/a |
n/a |
n/a |
n/a |
|
2021-11-17 |
2.17.5 |
2026-06-01 |
2 |
4 |
n/a |
n/a |
n/a |
n/a |
|
2021-03-12 |
7.4.2 |
2026-10-21 |
7 |
113 |
n/a |
n/a |
n/a |
n/a |
|
2023-11-08 |
22.2.4 |
2026-10-22 |
6 |
110 |
22 |
2028-06-30 |
no |
n/a |
|
2018-06-25 |
25.3.4 |
2026-10-26 |
4 |
n/a |
n/a |
n/a |
n/a |
n/a |
|
2011-12-21 |
4.1.19 |
2026-10-23 |
1 |
n/a |
n/a |
n/a |
n/a |
n/a |
|
2011-07-17 |
3.1.5.RELEASE |
2026-04-21 |
0 |
n/a |
n/a |
n/a |
n/a |
n/a |
|
2008-09-10 |
4.0.0 |
2024-05-09 |
1 |
n/a |
n/a |
n/a |
n/a |
n/a |
|
2007-09-17 |
2.13.1 |
2026-06-17 |
0 |
n/a |
n/a |
n/a |
n/a |
n/a |
|
2019 |
10.0.14 |
2026-10-25 |
5 |
n/a |
10 |
2028-11-14 |
yes |
n/a |
|
2017-08-11 |
n/a |
n/a |
n/a |
n/a |
10 |
2028-11-14 |
yes |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
6.1 |
2027-12-31 |
yes |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
13 |
2028-03-17 |
yes |
n/a |
|
2019-04-15 |
4.4.8 |
2026-10-21 |
2 |
57 |
4 |
not announced |
no |
2,700 packagist dependents |
|
2023-01-14 |
3.9.1 |
2026-10-09 |
3 |
55 |
n/a |
n/a |
n/a |
900 packagist dependents |
|
2019-08-25 |
1.2.13 |
2026-10-20 |
1 |
32 |
n/a |
n/a |
n/a |
n/a |
|
2021-09-24 |
8.0.23 |
2026-01-29 |
1 |
5 |
n/a |
n/a |
n/a |
n/a |
|
2011-08-28 |
5.3.8 |
2025-08-26 |
0 |
0 |
5 |
not announced |
yes |
n/a |
|
2017-10-06 |
4.3.3 |
2026-07-16 |
2 |
12 |
4.3 |
not announced |
no |
n/a |
|
2017-06-06 |
1.106.1 |
2026-10-21 |
0 |
31 |
n/a |
n/a |
n/a |
n/a |
|
2016-01-27 |
1.0.4 |
2025-04-19 |
1 |
0 |
n/a |
n/a |
n/a |
n/a |
|
2015-04-30 |
6.9.0 |
2024-09-27 |
0 |
0 |
n/a |
n/a |
n/a |
n/a |
|
2021-09-16 |
9.5.0 |
2026-10-09 |
3 |
17 |
n/a |
n/a |
n/a |
n/a |
|
2024-07-09 |
4.22.2 |
2026-10-27 |
4 |
64 |
n/a |
n/a |
n/a |
n/a |
|
2012-03-28 |
1.8.3 |
2022-04-07 |
0 |
0 |
1.8 |
2021-12-31 |
yes |
n/a |
|
2011-07-01 |
1.6.1 |
2025-04-01 |
0 |
0 |
n/a |
n/a |
n/a |
n/a |
|
2017-01-24 |
7.4.0 |
2026-10-26 |
4 |
19 |
7.3 |
not announced |
yes |
n/a |
|
2012-05-09 |
3.5.3 |
2026-03-25 |
0 |
2 |
n/a |
n/a |
n/a |
n/a |
Productivity
The feature matrix covers the frameworks documented on this site; each "yes" or "partial" links to the page that documents the feature. Angular, Vue.js and Next.js include routing, state, forms, TypeScript, scaffolding and hot reload; React and jQuery leave most of these to libraries, and the server-rendered view layers inherit them from their framework.
| Framework | Rendering model | Router | State | Forms | TypeScript | CLI | Hot reload | Testing |
|---|---|---|---|---|---|---|---|---|
no |
no |
|||||||
no |
no |
no |
no |
no |
no |
|||
no |
no |
no |
no |
|||||
no |
no |
no |
no |
no |
||||
no |
||||||||
no |
||||||||
no |
no |
|||||||
no |
no |
no |
||||||
no |
no |
no |
||||||
no |
no |
|||||||
no |
Performance
Runtime performance. In js-framework-benchmark (Chrome 156, keyed implementations), the weighted geometric mean of the CPU benchmarks is 1.14 times the fastest for SolidJS, 1.19 for Svelte, 1.28 for Lit, 1.30 for Vue.js, 1.53 for Angular and 1.56 for React; vanilla JavaScript is 1.02. Blazor WebAssembly (4.88), Qwik (3.31) and Alpine.js (2.98) are the slowest of the frameworks shown; jQuery, htmx and Backbone have no keyed implementation.
Bundle size. The same minimal benchmark application weighs 4.5 kB (brotli) with SolidJS, 5.9 kB with Preact, 9.7 kB with Svelte, 23.3 kB with Vue.js, 44.7 kB with Angular and 51.4 kB with React, against 1,377 kB for Blazor WebAssembly.
Core Web Vitals. The share of origins with good LCP, CLS and INP on mobile depends as much on how sites are built and hosted as on the framework: 79.12% for SolidJS, 71.08% for Astro, 54.69% for jQuery, 43.93% for React, 35.66% for Next.js and 16.52% for Angular in the September 2026 crawl.
SSR throughput of the meta-frameworks would need a house measurement, which was not made for this page; it is n/a.
| Framework | CPU factor | Memory factor | Benchmark app (kB, brotli) | Runtime (kB, min+gzip) | First paint (ms) | CWV good, mobile | CWV good, desktop |
|---|---|---|---|---|---|---|---|
vanilla JavaScript (baseline) |
1.02 |
1.06 |
2.5 |
n/a |
40.7 |
n/a |
n/a |
1.56 |
2.62 |
51.4 |
n/a |
228.1 |
43.9% |
54.7% |
|
1.53 |
3.05 |
44.7 |
137.8 |
166.2 |
16.5% |
27.2% |
|
1.30 |
1.92 |
23.3 |
46.3 |
95.8 |
36.2% |
50.9% |
|
1.19 |
1.48 |
9.7 |
10.5 |
65.5 |
53.6% |
65.7% |
|
1.14 |
1.28 |
4.5 |
8.2 |
53.5 |
79.1% |
80.3% |
|
1.62 |
1.43 |
5.9 |
4.9 |
56.7 |
55.6% |
60.8% |
|
1.28 |
1.45 |
7.3 |
5.9 |
53.8 |
48.0% |
53.0% |
|
3.31 |
4.67 |
30.5 |
30.0 |
97.9 |
62.1% |
92.5% |
|
2.98 |
3.36 |
14.7 |
18.6 |
73.2 |
61.2% |
66.8% |
|
2.04 |
8.92 |
38.4 |
n/a |
161.4 |
38.5% |
51.7% |
|
2.23 |
2.87 |
22.4 |
24.0 |
93.8 |
51.4% |
53.5% |
|
4.88 |
4.70 |
1377.0 |
n/a |
70.2 |
26.4% |
35.7% |
|
n/a |
n/a |
n/a |
27.0 |
n/a |
54.7% |
59.5% |
|
n/a |
n/a |
n/a |
17.8 |
n/a |
51.2% |
33.6% |
|
n/a |
n/a |
n/a |
15.2 |
n/a |
41.9% |
47.0% |
|
n/a |
n/a |
n/a |
62.2 |
n/a |
37.9% |
39.0% |
|
n/a |
n/a |
n/a |
24.5 |
n/a |
66.7% |
78.0% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
35.7% |
57.0% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
32.3% |
53.4% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
56.9% |
59.7% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
52.2% |
64.3% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
28.8% |
42.1% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
37.8% |
50.4% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
71.1% |
84.6% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
53.0% |
64.3% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
60.5% |
68.3% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
61.4% |
72.2% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
31.9% |
57.9% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
80.5% |
78.5% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
48.3% |
63.1% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
56.0% |
60.7% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
23.1% |
41.9% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
50.2% |
79.0% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
43.3% |
63.6% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
56.0% |
66.1% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
62.2% |
51.9% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
71.1% |
82.1% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
44.0% |
53.4% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
29.3% |
63.3% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
52.4% |
83.6% |
|
n/a |
n/a |
n/a |
n/a |
n/a |
33.3% |
20.6% |
CSS frameworks
Tailwind CSS is the most downloaded CSS framework on npm (2,685 million in 12 months, 3.8 times the year before), while Bootstrap is detected on far more live origins (2,235,330 against 690,631) and on 13.1% of the top 10 million websites. The distributed Bootstrap stylesheet is 30.1 kB min+gzip, Bulma’s 63.7 kB and Foundation’s 17.2 kB; Tailwind CSS generates its stylesheet per project from the classes used, so its size is n/a. Sass is a preprocessor used by Bootstrap and Foundation, listed for context.
Other metrics
Accessibility. The site documents accessibility features for the frameworks marked in the table; general guidance is in Web accessibility.
Security track record. Next.js (77 advisories in OSV), Astro (29), Nuxt (25), Remix and React Router (21) and Vaadin (20) have the most; Angular has 17 and React 11. Server-side features (rendering, routing, server actions) add attack surface that pure client libraries do not have.
Deployment targets (containers, serverless, edge, static export) and real-time support are listed where the site’s section documents them; real-time stacks are compared in the WebRTC and WebSockets decision guide.
| Framework | Advisories 2021-2025 | Advisories (all) | Scorecard | Security policy | Deployment targets documented | Real-time | Accessibility | AI tooling |
|---|---|---|---|---|---|---|---|---|
n/a |
n/a |
n/a |
n/a |
n/a |
yes |
n/a |
n/a |
|
4 |
11 |
7 |
yes |
edge, static export |
n/a |
yes |
n/a |
|
2 |
17 |
8.3 |
yes |
static export |
yes |
yes |
n/a |
|
1 |
1 |
6.3 |
yes |
n/a |
n/a |
yes |
n/a |
|
0 |
8 |
8.7 |
yes |
n/a |
yes |
n/a |
n/a |
|
3 |
14 |
7.6 |
yes |
n/a |
n/a |
n/a |
n/a |
|
1 |
1 |
5.8 |
yes |
n/a |
n/a |
n/a |
n/a |
|
0 |
2 |
5.7 |
no |
n/a |
n/a |
n/a |
n/a |
|
0 |
0 |
8.1 |
yes |
n/a |
n/a |
n/a |
n/a |
|
3 |
5 |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
|
0 |
0 |
5 |
yes |
n/a |
yes |
n/a |
n/a |
|
0 |
0 |
5.7 |
yes |
n/a |
n/a |
n/a |
n/a |
|
29 |
77 |
6.2 |
yes |
containers, serverless, edge, static export |
yes |
yes |
yes |
|
5 |
25 |
7 |
yes |
n/a |
n/a |
n/a |
n/a |
|
7 |
19 |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
|
5 |
21 |
5.3 |
yes |
n/a |
n/a |
n/a |
n/a |
|
14 |
29 |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
|
2 |
7 |
n/a |
n/a |
static export |
yes |
yes |
n/a |
|
13 |
20 |
6.9 |
yes |
containers |
yes |
yes |
n/a |
|
0 |
3 |
n/a |
n/a |
containers |
yes |
yes |
n/a |
|
1 |
4 |
4.2 |
yes |
containers |
yes |
yes |
n/a |
|
n/a |
n/a |
n/a |
n/a |
containers |
yes |
yes |
n/a |
|
0 |
0 |
5.9 |
no |
containers |
yes |
yes |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
yes |
n/a |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
yes |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
|
4 |
6 |
4.8 |
no |
n/a |
n/a |
n/a |
n/a |
|
0 |
0 |
5.7 |
yes |
n/a |
n/a |
n/a |
n/a |
|
0 |
2 |
5.1 |
yes |
n/a |
n/a |
n/a |
n/a |
|
1 |
1 |
4.3 |
no |
n/a |
n/a |
n/a |
n/a |
|
2 |
9 |
7.3 |
yes |
n/a |
n/a |
yes |
n/a |
|
0 |
0 |
6.7 |
no |
n/a |
n/a |
yes |
n/a |
|
0 |
0 |
6.3 |
no |
n/a |
n/a |
n/a |
n/a |
|
0 |
0 |
2.8 |
no |
n/a |
n/a |
n/a |
n/a |
|
0 |
1 |
3.6 |
partial |
n/a |
n/a |
n/a |
n/a |
|
0 |
0 |
8.2 |
yes |
n/a |
n/a |
n/a |
n/a |
|
0 |
0 |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
|
9 |
15 |
3.3 |
yes |
n/a |
n/a |
n/a |
n/a |
|
0 |
1 |
4.7 |
yes |
n/a |
n/a |
n/a |
n/a |
|
0 |
0 |
6.9 |
no |
n/a |
n/a |
n/a |
n/a |
|
0 |
1 |
2.2 |
no |
n/a |
n/a |
n/a |
n/a |
Comparison table
One table with every framework and every metric. Scores are 0 to 10 (higher is better), (E) marks the editorial axes, and n/a means the data does not exist or could not be sourced.
| Framework | Popularity | Growth | Talent/jobs | Ease of use (E) | Ecosystem (E) | Productivity (E) | Runtime perf. | Bundle size | Performance | Rendering | LTS | Advisories |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
no |
n/a |
|
9.8 |
3.8 |
10.0 |
6.0 |
9.0 |
6.0 |
7.9 |
4.7 |
6.1 |
client-side, server components through frameworks |
no |
11 |
|
7.4 |
1.5 |
2.2 |
4.0 |
9.0 |
9.0 |
8.0 |
5.0 |
5.0 |
client-side, optional SSR and prerendering |
no |
17 |
|
7.6 |
2.4 |
2.5 |
8.0 |
8.0 |
8.0 |
8.7 |
6.4 |
6.6 |
client-side, SSR through Nuxt |
no |
1 |
|
8.4 |
1.5 |
2.6 |
n/a |
n/a |
n/a |
n/a |
n/a |
6.9 |
DOM scripting on server-rendered pages |
no |
8 |
|
6.7 |
2.9 |
0.9 |
8.0 |
7.0 |
6.0 |
9.2 |
8.3 |
8.1 |
n/a |
no |
14 |
|
6.5 |
7.2 |
n/a |
6.0 |
5.0 |
5.0 |
9.4 |
10.0 |
9.8 |
n/a |
n/a |
1 |
|
8.6 |
5.0 |
n/a |
8.0 |
7.0 |
5.0 |
7.7 |
9.4 |
8.0 |
n/a |
n/a |
2 |
|
8.4 |
5.0 |
n/a |
n/a |
n/a |
n/a |
8.8 |
8.9 |
7.9 |
n/a |
n/a |
0 |
|
6.4 |
1.0 |
n/a |
n/a |
n/a |
n/a |
4.2 |
5.8 |
6.0 |
n/a |
n/a |
5 |
|
7.4 |
6.0 |
0.2 |
n/a |
n/a |
n/a |
n/a |
n/a |
6.5 |
n/a |
n/a |
0 |
|
7.8 |
3.8 |
n/a |
n/a |
n/a |
n/a |
4.7 |
7.4 |
6.6 |
n/a |
n/a |
0 |
|
8.0 |
5.4 |
3.6 |
5.0 |
8.0 |
9.0 |
n/a |
n/a |
4.5 |
SSR, SSG, ISR and React Server Components |
yes |
77 |
|
6.3 |
2.1 |
0.5 |
7.0 |
7.0 |
8.0 |
n/a |
n/a |
3.6 |
n/a |
no |
25 |
|
7.3 |
4.3 |
n/a |
7.0 |
6.0 |
7.0 |
n/a |
n/a |
6.1 |
n/a |
n/a |
19 |
|
7.3 |
3.6 |
n/a |
6.0 |
5.0 |
7.0 |
n/a |
n/a |
4.1 |
n/a |
n/a |
21 |
|
6.3 |
8.4 |
0.9 |
8.0 |
6.0 |
7.0 |
n/a |
n/a |
9.0 |
n/a |
n/a |
29 |
|
7.5 |
4.2 |
n/a |
5.0 |
8.0 |
7.0 |
n/a |
n/a |
n/a |
n/a |
no |
7 |
|
4.5 |
n/a |
n/a |
7.0 |
7.0 |
7.0 |
n/a |
n/a |
3.7 |
server-driven components (Flow) or React views (Hilla) |
n/a |
20 |
|
4.7 |
n/a |
n/a |
4.0 |
5.0 |
4.0 |
n/a |
n/a |
6.3 |
server-side component tree |
n/a |
3 |
|
6.4 |
n/a |
n/a |
8.0 |
6.0 |
4.0 |
n/a |
n/a |
n/a |
server-side templates |
n/a |
4 |
|
5.0 |
n/a |
n/a |
6.0 |
3.0 |
2.0 |
n/a |
n/a |
5.5 |
n/a |
n/a |
n/a |
|
5.7 |
n/a |
n/a |
3.0 |
3.0 |
4.0 |
n/a |
n/a |
2.9 |
Java compiled to JavaScript (client-side) |
n/a |
0 |
|
3.4 |
10.0 |
0.8 |
6.0 |
8.0 |
7.0 |
2.4 |
0.0 |
1.9 |
static SSR, interactive server (SignalR) or WebAssembly |
yes |
n/a |
|
n/a |
n/a |
n/a |
8.0 |
8.0 |
7.0 |
n/a |
n/a |
n/a |
server-side page model |
yes |
n/a |
|
n/a |
n/a |
n/a |
8.0 |
9.0 |
6.0 |
n/a |
n/a |
n/a |
server-side templates |
yes |
n/a |
|
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
server-side templates |
yes |
n/a |
|
8.2 |
0.0 |
n/a |
8.0 |
6.0 |
8.0 |
n/a |
n/a |
7.8 |
server-rendered components updated over AJAX |
no |
6 |
|
7.1 |
9.9 |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
4.0 |
server routing with React, Vue or Svelte pages |
n/a |
0 |
|
5.7 |
n/a |
n/a |
6.0 |
6.0 |
8.0 |
n/a |
n/a |
9.0 |
n/a |
n/a |
2 |
|
7.1 |
3.0 |
n/a |
8.0 |
6.0 |
6.0 |
n/a |
n/a |
8.4 |
n/a |
n/a |
1 |
|
9.5 |
0.0 |
n/a |
9.0 |
7.0 |
7.0 |
n/a |
8.8 |
n/a |
n/a |
yes |
9 |
|
9.8 |
10.0 |
n/a |
6.0 |
8.0 |
8.0 |
n/a |
n/a |
n/a |
n/a |
no |
0 |
|
6.9 |
1.6 |
n/a |
n/a |
n/a |
n/a |
n/a |
n/a |
7.1 |
n/a |
n/a |
0 |
|
8.3 |
1.1 |
n/a |
8.0 |
5.0 |
6.0 |
n/a |
7.2 |
n/a |
n/a |
n/a |
0 |
|
7.8 |
0.2 |
n/a |
6.0 |
3.0 |
5.0 |
n/a |
10.0 |
n/a |
n/a |
n/a |
1 |
|
9.3 |
2.3 |
n/a |
6.0 |
8.0 |
8.0 |
n/a |
n/a |
n/a |
n/a |
n/a |
0 |
|
9.1 |
n/a |
n/a |
7.0 |
5.0 |
7.0 |
n/a |
n/a |
n/a |
n/a |
n/a |
0 |
|
6.4 |
0.0 |
1.6 |
n/a |
n/a |
n/a |
n/a |
n/a |
4.8 |
n/a |
yes |
15 |
|
7.9 |
1.4 |
0.0 |
n/a |
n/a |
n/a |
n/a |
n/a |
5.3 |
n/a |
n/a |
1 |
|
7.0 |
0.3 |
0.0 |
n/a |
n/a |
n/a |
6.6 |
5.3 |
5.6 |
n/a |
yes |
0 |
|
6.9 |
0.5 |
n/a |
n/a |
n/a |
n/a |
6.1 |
6.5 |
6.4 |
n/a |
n/a |
1 |
Radar comparisons
Each radar compares at most six frameworks; computed axes are marked © and editorial axes (E), and gaps in an outline mean n/a.
scripts/framework-charts.| Framework | Popularity © | Growth © | Talent pool / jobs © | Ease of use (E) | Ecosystem and maturity (E) | Productivity (E) | Runtime performance © | Bundle size © | Performance © |
|---|---|---|---|---|---|---|---|---|---|
9.8 |
3.8 |
10.0 |
6.0 |
9.0 |
6.0 |
7.9 |
4.7 |
6.1 |
|
7.4 |
1.5 |
2.2 |
4.0 |
9.0 |
9.0 |
8.0 |
5.0 |
5.0 |
|
7.6 |
2.4 |
2.5 |
8.0 |
8.0 |
8.0 |
8.7 |
6.4 |
6.6 |
|
6.7 |
2.9 |
0.9 |
8.0 |
7.0 |
6.0 |
9.2 |
8.3 |
8.1 |
|
6.5 |
7.2 |
n/a |
6.0 |
5.0 |
5.0 |
9.4 |
10.0 |
9.8 |
|
8.6 |
5.0 |
n/a |
8.0 |
7.0 |
5.0 |
7.7 |
9.4 |
8.0 |
| Framework | Popularity © | Growth © | Talent pool / jobs © | Ease of use (E) | Ecosystem and maturity (E) | Productivity (E) | Runtime performance © | Bundle size © | Performance © |
|---|---|---|---|---|---|---|---|---|---|
8.0 |
5.4 |
3.6 |
5.0 |
8.0 |
9.0 |
n/a |
n/a |
4.5 |
|
6.3 |
2.1 |
0.5 |
7.0 |
7.0 |
8.0 |
n/a |
n/a |
3.6 |
|
7.3 |
4.3 |
n/a |
7.0 |
6.0 |
7.0 |
n/a |
n/a |
6.1 |
|
6.3 |
8.4 |
0.9 |
8.0 |
6.0 |
7.0 |
n/a |
n/a |
9.0 |
|
7.3 |
3.6 |
n/a |
6.0 |
5.0 |
7.0 |
n/a |
n/a |
4.1 |
|
7.5 |
4.2 |
n/a |
5.0 |
8.0 |
7.0 |
n/a |
n/a |
n/a |
| Framework | Popularity © | Growth © | Talent pool / jobs © | Ease of use (E) | Ecosystem and maturity (E) | Productivity (E) | Runtime performance © | Bundle size © | Performance © |
|---|---|---|---|---|---|---|---|---|---|
4.5 |
n/a |
n/a |
7.0 |
7.0 |
7.0 |
n/a |
n/a |
3.7 |
|
4.7 |
n/a |
n/a |
4.0 |
5.0 |
4.0 |
n/a |
n/a |
6.3 |
|
6.4 |
n/a |
n/a |
8.0 |
6.0 |
4.0 |
n/a |
n/a |
n/a |
|
5.7 |
n/a |
n/a |
3.0 |
3.0 |
4.0 |
n/a |
n/a |
2.9 |
|
5.0 |
n/a |
n/a |
6.0 |
3.0 |
2.0 |
n/a |
n/a |
5.5 |
| Framework | Popularity © | Growth © | Talent pool / jobs © | Ease of use (E) | Ecosystem and maturity (E) | Productivity (E) | Runtime performance © | Bundle size © | Performance © |
|---|---|---|---|---|---|---|---|---|---|
3.4 |
10.0 |
0.8 |
6.0 |
8.0 |
7.0 |
2.4 |
0.0 |
1.9 |
|
n/a |
n/a |
n/a |
8.0 |
8.0 |
7.0 |
n/a |
n/a |
n/a |
|
8.2 |
0.0 |
n/a |
8.0 |
6.0 |
8.0 |
n/a |
n/a |
7.8 |
|
n/a |
n/a |
n/a |
8.0 |
9.0 |
6.0 |
n/a |
n/a |
n/a |
|
5.7 |
n/a |
n/a |
6.0 |
6.0 |
8.0 |
n/a |
n/a |
9.0 |
|
7.1 |
3.0 |
n/a |
8.0 |
6.0 |
6.0 |
n/a |
n/a |
8.4 |
| Framework | Popularity © | Growth © | Usage on websites © | Ease of use (E) | Ecosystem and maturity (E) | Bundle size © |
|---|---|---|---|---|---|---|
9.5 |
0.0 |
10.0 |
9.0 |
7.0 |
8.8 |
|
9.8 |
10.0 |
4.7 |
6.0 |
8.0 |
n/a |
|
8.3 |
1.1 |
5.3 |
8.0 |
5.0 |
7.2 |
|
7.8 |
0.2 |
0.3 |
6.0 |
3.0 |
10.0 |
|
9.3 |
2.3 |
7.6 |
6.0 |
8.0 |
n/a |
|
9.1 |
n/a |
8.0 |
7.0 |
5.0 |
n/a |
| Framework | Axis | Score | Basis |
|---|---|---|---|
Ease of use |
6 |
Small core but JSX, hooks and choosing a router and framework add concepts; SO 2025 admired 52.1%, State of JS retention 72.4% |
|
Ecosystem and maturity |
9 |
First npm release by the project 2012, React Foundation (Linux Foundation), highest npm downloads on the page |
|
Productivity |
6 |
Web feature matrix 2.5/7: rendering only; routing, data and forms come from frameworks such as Next.js |
|
Ease of use |
4 |
TypeScript, DI, RxJS and signals before the first page; State of JS retention 48.1% |
|
Ecosystem and maturity |
9 |
First release 2016, Google, support dates per major (endoflife.date: 22 to 2028-06-30), ten majors in five years |
|
Productivity |
9 |
Web feature matrix 7/7 (router, signals, forms, TypeScript, CLI, HMR, testing) |
|
Ease of use |
8 |
Single-file components and gentle docs; State of JS retention 84.5%, SO 2025 admired 50.9% |
|
Ecosystem and maturity |
8 |
First release 2013, community (Evan You), no major version in five years |
|
Productivity |
8 |
Web feature matrix 6.5/7 (router, Pinia, TypeScript, create-vue, Vite HMR, test utils) |
|
Ease of use |
8 |
Compiler-based components close to HTML; runes added in Svelte 5; SO 2025 admired 62.4%, State of JS retention 87% |
|
Ecosystem and maturity |
7 |
First release 2016, Svelte contributors, two majors in five years |
|
Productivity |
6 |
Not documented on the site; built-in stores and transitions; routing through SvelteKit |
|
Ease of use |
6 |
JSX with fine-grained signals; different mental model from React; State of JS retention 90% |
|
Ecosystem and maturity |
5 |
First release 2018, no major version in five years, small ecosystem |
|
Productivity |
5 |
Not documented on the site; signals and stores built in; routing via Solid Router |
|
Ease of use |
8 |
React API in a small package; State of JS retention 81.7% |
|
Ecosystem and maturity |
7 |
First release 2015, one major in five years, React compatibility layer |
|
Productivity |
5 |
Not documented on the site; core rendering, signals; routing and tooling external |
|
Ease of use |
5 |
App Router, server components and caching rules are hard to master; State of JS retention 55.3% |
|
Ecosystem and maturity |
8 |
First release 2016, LTS flag on endoflife.date, four majors in five years |
|
Productivity |
9 |
Web feature matrix 6/7 (file routing, server actions, TypeScript, create-next-app, HMR) |
|
Ease of use |
7 |
Conventions and auto-imports keep Vue apps small; State of JS retention 80.4% |
|
Ecosystem and maturity |
7 |
First release 2016, two majors in five years, module ecosystem |
|
Productivity |
8 |
Not documented on the site; file routing, data fetching, server routes and modules |
|
Ease of use |
7 |
File routing and load functions; State of JS retention 88.7% |
|
Ecosystem and maturity |
6 |
First release 2020, three majors in five years, adapters for many hosts |
|
Productivity |
7 |
Not documented on the site; routing, form actions, SSR and adapters |
|
Ease of use |
8 |
HTML-first components and islands; State of JS retention 94%, SO 2025 admired 62.2% |
|
Ecosystem and maturity |
6 |
First release 2021, seven majors in five years, 113 releases in 12 months |
|
Productivity |
7 |
Not documented on the site; content collections, islands for any UI framework, integrations |
|
Ease of use |
6 |
Loaders and actions on web standards; now merged into React Router 7; State of JS retention 68.1% |
|
Ecosystem and maturity |
5 |
First release 2021, merged into React Router 7, 4 releases of @remix-run/react in 12 months |
|
Productivity |
7 |
Not documented on the site; nested routing, data loading and forms |
|
Ease of use |
5 |
Requires Angular plus hydration and server concepts |
|
Ecosystem and maturity |
8 |
@angular/ssr since 2023 (17.0.0), same support dates as Angular |
|
Productivity |
7 |
SSR, hydration and prerendering through the Angular CLI |
|
Ease of use |
7 |
Java-only UI development for Flow; Hilla adds React views |
|
Ecosystem and maturity |
7 |
Vaadin 10+ on Maven Central since 2018, four majors in five years |
|
Productivity |
7 |
Web feature matrix 5/7 (router, Binder forms, start.vaadin.com, live reload) |
|
Ease of use |
4 |
Component lifecycle and state saving are complex |
|
Ecosystem and maturity |
5 |
Jakarta Faces, Eclipse Foundation, one major in five years |
|
Productivity |
4 |
Web feature matrix 2.5/7 (server component tree, validators) |
|
Ease of use |
8 |
Natural templates that stay valid HTML |
|
Ecosystem and maturity |
6 |
First release 2011, no major in five years, tied to Spring MVC |
|
Productivity |
4 |
Web feature matrix 1/7: templating only; forms through Spring MVC |
|
Ease of use |
3 |
Java-to-JavaScript compilation and tooling from another era |
|
Ecosystem and maturity |
3 |
On Maven Central since 2007, no major in five years, legacy status |
|
Productivity |
4 |
Web feature matrix 3.5/7 (places, editors, super dev mode, GWTTestCase) |
|
Ease of use |
6 |
Simple scriptlets and JSTL, but mixing logic in pages |
|
Ecosystem and maturity |
3 |
Jakarta Pages, Eclipse Foundation, legacy as a view layer |
|
Productivity |
2 |
Templating only (scriptlets, EL and JSTL); no component model or routing |
|
Ease of use |
6 |
C# components across render modes; several modes to understand; SO 2025 admired 51.9% |
|
Ecosystem and maturity |
8 |
Since 2019 (site page web/aspnet/evolution.adoc), Microsoft, follows .NET LTS (endoflife.date) |
|
Productivity |
7 |
Web feature matrix 5/7 (router, EditForm, CLI templates, hot reload) |
|
Ease of use |
8 |
Page-focused model with page handlers |
|
Ecosystem and maturity |
8 |
First release 2017, Microsoft, follows .NET LTS (endoflife.date) |
|
Productivity |
7 |
Web feature matrix 5/7 (page routing, forms with tag helpers, CLI, hot reload, test host) |
|
Ease of use |
8 |
Interactive components without writing JavaScript |
|
Ecosystem and maturity |
6 |
First release 2019, two majors in five years, 57 releases in 12 months |
|
Productivity |
8 |
Web feature matrix 4.5/7 (Blade components, validation, artisan, testing) |
|
Ease of use |
8 |
Simple template language with inheritance |
|
Ecosystem and maturity |
9 |
Part of Django (Django Software Foundation), LTS releases (endoflife.date) |
|
Productivity |
6 |
Web feature matrix 4/7 (forms, CLI, test client) |
|
Ease of use |
6 |
Server-rendered interactivity over WebSockets; requires Elixir |
|
Ecosystem and maturity |
6 |
First release 2019, one major in five years, 32 releases in 12 months |
|
Productivity |
8 |
Not documented on the site; live components, forms and uploads with generators |
|
Ease of use |
8 |
HTML over the wire with Turbo frames and streams |
|
Ecosystem and maturity |
6 |
First Turbo release 2021, 5 releases in 12 months |
|
Productivity |
6 |
Not documented on the site; Turbo and Stimulus; server framework provides the rest |
|
Ease of use |
9 |
Ready-made classes and components |
|
Ecosystem and maturity |
7 |
First release 2011, no release in the last 12 months, LTS flag on endoflife.date |
|
Productivity |
7 |
Components, grid and utilities out of the box |
|
Ease of use |
6 |
Utility classes require learning a vocabulary |
|
Ecosystem and maturity |
8 |
First release 2017, two majors in five years, 12 releases in 12 months |
|
Productivity |
8 |
Utilities and design tokens; components from Tailwind UI or shadcn/ui |
|
Ease of use |
8 |
Class names read like English; no JavaScript |
|
Ecosystem and maturity |
5 |
First release 2016, one major in five years, no release in 12 months |
|
Productivity |
6 |
Ready-made components and a Flexbox grid; no JavaScript behaviour, so interactivity is up to the app |
|
Ease of use |
6 |
Sass-based, more configuration than Bootstrap |
|
Ecosystem and maturity |
3 |
On npm since 2015, no release since 2024-09-27 (6.9.0); GitHub repository not found on deps.dev |
|
Productivity |
5 |
Ready-made components and a responsive grid; JavaScript plugins included |
|
Ease of use |
6 |
React components following Material Design; theming API to learn |
|
Ecosystem and maturity |
8 |
@mui/material since 2021, three majors in five years |
|
Productivity |
8 |
Large React component set following Material Design, with theming |
|
Ease of use |
7 |
Copy components into the project; requires Tailwind and Radix |
|
Ecosystem and maturity |
5 |
shadcn CLI since 2024, 64 releases in 12 months |
|
Productivity |
7 |
Accessible components copied into the project, which you own and edit |
Summary and recommendations
These recommendations are an editorial judgement built on the data above; each cites the metric it relies on. The snapshot date is 2026-10-27, and surveys, downloads and Core Web Vitals change every month, so re-check the numbers before a decision that will last years.
Mainstream choices.
-
React with Next.js has the largest talent pool (44.7% survey usage, 21.82% of 2025 hiring postings) and the most downloads; mind Next.js’s lower retention (55.3%) and its advisory count (77).
-
Angular is the complete toolkit for large teams (the full feature matrix and a dated support window per major), at the cost of the lowest retention here (48.1%).
-
Vue.js with Nuxt combines high retention (84.5%) with official router and state libraries and a gentle learning curve.
Trends to watch. The data support Astro (State of JS retention 94%, origins up from 466 to 49,450 since January 2023), Svelte (62.4% admired, State of JS usage 14.5% to 27.5% since 2020), SolidJS (the best benchmark and Core Web Vitals results) and htmx (origins up from 1,235 to 25,156 since January 2023), plus Tailwind CSS for styling.
Avoid for new projects, keep for legacy maintenance.
-
AngularJS reached its end of life on 2021-12-31 and its admired score is 21.9%; migrate to Angular or another framework.
-
GWT has had no major release in five years and one of the lowest Core Web Vitals pass rates here (23.06% on mobile); JSP as a view layer mixes logic into pages and has no component model. Thymeleaf or Vaadin fit new Java UIs better.
-
jQuery for new single-page applications: it still runs on 64.4% of websites (W3Techs) but its survey usage fell from 48.7% (2019) to 23.4% (2025); keep it for existing pages.
-
ASP.NET Web Forms runs on .NET Framework (current cycle 4.8.1 on endoflife.date), not on modern .NET; see the Backend Frameworks Comparison.
Recommendation by purpose.
| Purpose | Framework | Fit | Basis |
|---|---|---|---|
Content and marketing sites |
best |
islands ship little JavaScript; State of JS retention 94% |
|
Content and marketing sites |
good |
SSG and ISR; largest meta-framework by usage |
|
Content and marketing sites |
good |
static generation for Vue teams |
|
SPAs and dashboards |
best |
largest talent pool (SO 2025 usage 44.7%) |
|
SPAs and dashboards |
best |
complete toolkit for large teams |
|
SPAs and dashboards |
good |
gentle learning curve, official router and store |
|
SPAs and dashboards |
good |
small bundles, high retention |
|
SEO-sensitive apps |
best |
SSR, SSG and streaming |
|
SEO-sensitive apps |
good |
SSR for Vue |
|
SEO-sensitive apps |
good |
SSR by default |
|
SEO-sensitive apps |
good |
static HTML first |
|
Enterprise internal tools in Java |
best |
Java-only UI with commercial support |
|
Enterprise internal tools in Java |
good |
server-rendered pages with Spring Boot |
|
Enterprise internal tools in Java |
acceptable |
existing Jakarta EE estates |
|
Progressive enhancement and hypermedia |
best |
HTML attributes over any back end; growth on State of JS |
|
Progressive enhancement and hypermedia |
good |
Turbo with Rails or any server |
|
Progressive enhancement and hypermedia |
good |
Laravel components without JavaScript |
|
Progressive enhancement and hypermedia |
good |
small sprinkles of behaviour |
|
Design systems |
best |
most downloaded CSS framework, design tokens |
|
Design systems |
good |
owned, accessible components on Tailwind |
|
Design systems |
good |
mature React component library |
|
Design systems |
acceptable |
still the most used on websites (W3Techs) but slow release cadence |
|
Legacy maintenance |
acceptable |
used by 64.4% of websites (W3Techs) but not for new SPAs |
|
Legacy maintenance |
acceptable |
end of life 2021-12-31: migrate |
|
Legacy maintenance |
acceptable |
legacy Java front ends only |
Hiring perspective. React, jQuery, Next.js, Angular and Vue.js have the largest pools (professional survey usage); React and Next.js lead job postings. Svelte, SolidJS, Astro and htmx are niche but growing: easy to motivate developers for, harder to staff quickly.
For most teams the right choice is the one their back end and their developers already support; the metrics above matter most for performance-sensitive public sites and for hiring.
Bibliography
Every number on this page comes from one of the sources below, with its publisher, edition and retrieval date. Captions and tables link to these entries.
The registry of sources is sources.csv in scripts/framework-charts/data, with 62 entries; 36 are used on this page. Every source was opened on 2026-10-27 unless marked otherwise.
| Source | Publisher | Edition or date | Retrieved | Used for |
|---|---|---|---|---|
Stack Overflow |
2019 |
2026-10-27 |
Web frameworks usage (all and professional), loved and wanted |
|
Stack Overflow |
2020 |
2026-10-27 |
Web frameworks usage, loved and wanted |
|
Stack Overflow |
2021 |
2026-10-27 |
Web frameworks usage, loved and wanted |
|
Stack Overflow |
2022 |
2026-10-27 |
Web frameworks and technologies usage, loved and wanted |
|
Stack Overflow |
2023 |
2026-10-27 |
Web frameworks and technologies usage, admired and desired |
|
Stack Overflow |
2024 |
2026-10-27 |
Web frameworks and technologies usage, admired and desired |
|
Stack Overflow |
2025 |
2026-10-27 |
Web frameworks and technologies usage, admired and desired (latest edition with a frameworks question); talent pool |
|
Devographics |
2016-2025 |
2026-10-27 |
front-end, meta-framework and back-end framework usage, retention, interest and awareness |
|
JetBrains |
2023 (with 2022 comparison) |
2026-10-27 |
web framework usage within each language community (Java, JavaScript, PHP, Python, Ruby, C#, Go, Scala) |
|
npm, Inc. |
daily ranges 2015-01-10 to 2026-09-30 |
2026-10-27 |
monthly npm downloads, 12-month totals |
|
npm, Inc. |
2026-10-27 |
2026-10-27 |
first and latest versions, publish dates, licences |
|
Python Software Foundation |
2026-10-27 |
2026-10-27 |
release history and licences |
|
Microsoft |
2026-10-27 |
2026-10-27 |
total downloads per package |
|
Microsoft |
2026-10-27 |
2026-10-27 |
version history and publish dates |
|
Packagist |
2026-10-27 |
2026-10-27 |
monthly average daily downloads, totals, dependents, version history |
|
Rust Foundation |
2026-10-27 |
2026-10-27 |
downloads (total, 90 days), version history; requests need a User-Agent header |
|
Ruby Central |
2026-10-27 |
2026-10-27 |
total downloads and version history |
|
Hex |
2026-10-27 |
2026-10-27 |
downloads and version history |
|
Sonatype |
2026-10-27 |
2026-10-27 |
maven-metadata.xml version lists and .pom Last-Modified dates; Maven Central publishes no download counts |
|
2026-10-27 |
2026-10-27 |
GitHub stars, forks, open issues and licence per repository |
||
Open Source Security Foundation |
2026-08-24 run |
2026-10-27 |
overall score, Security-Policy and Maintained checks |
|
GitHub |
n/a |
2026-10-27 |
(unverified) refused with HTTP 403 for repositories outside this site; stars over time, contributors and dependents are n/a |
|
Google / OpenSSF |
2026-10-27 |
2026-10-27 |
security advisories per package (includes GitHub Security Advisories, PYSEC, RUSTSEC, Go) |
|
endoflife.date |
2026-10-27 |
2026-10-27 |
release cycles, support and end-of-life dates, LTS |
|
Stefan Krause |
results.ts on master, Chrome 156 |
2026-10-27 |
keyed CPU and memory geometric means, memory, compressed size, first paint |
|
jsDelivr |
2026-10-27 |
2026-10-27 |
distributed CSS files of Bootstrap, Bulma and Foundation, gzipped locally |
|
Bundlephobia |
2026-10-27 |
2026-10-27 |
minified and gzipped size of each runtime package |
|
HTTP Archive |
2026-09 crawl |
2026-10-27 |
Core Web Vitals pass rates and adoption (origins) per technology |
|
W3Techs (Q-Success) |
2026-10-27 |
2026-10-27 |
share of websites using each JavaScript library |
|
W3Techs (Q-Success) |
2026-10-27 |
2026-10-27 |
share of websites using each CSS framework |
|
Hacker News (Y Combinator) |
2015-01 to 2026-10 |
2026-10-27 |
job-posting mention share per framework |
|
Algolia |
2026-10-27 |
2026-10-27 |
thread discovery and comment trees |
|
Official websites of each framework (website column of frameworks.csv) |
framework projects |
2026-10-27 |
2026-10-27 |
governance and ownership statements; concurrency-model evidence for undocumented frameworks |
Irurueta Docs |
2026-10-27 |
2026-10-27 |
feature, deployment, real-time and concurrency evidence |
|
Irurueta Docs |
2026-10-27 |
2026-10-27 |
Web Forms, MVC and Blazor release years |
|
Irurueta Docs |
2026-10-27 |
2026-10-27 |
feature-matrix "no" values and editorial radar axes; rubric in NOTES.md |
| Source | Publisher | Edition or date | Retrieved | Reason |
|---|---|---|---|---|
Python Software Foundation |
n/a |
2026-10-27 |
(unverified) not queried: requires a Google Cloud project; long-term PyPI history is therefore n/a |
|
pepy.tech |
n/a |
2026-10-27 |
(unverified) not used: the API requires a key |
|
PingCAP |
n/a |
2026-10-27 |
(unverified) repository endpoint returned HTTP 500 and the stargazer history endpoint HTTP 401 |
|
NIST |
n/a |
2026-10-27 |
(unverified) returned HTTP 403; CVE ids come from OSV aliases |
|
Internet Archive |
n/a |
2026-10-27 |
(unverified) not reachable from the authoring environment |