Search nomadLab

React, Vue, Svelte, Solid: The Clock Is on the Meta-Framework

None of the four publishes an end-of-life date. The layer you actually deploy does, and the two policies could not be further apart: Next.js gives a major two years of maintenance, Nuxt gives six months after the next one ships. Nuxt 3 ended three weeks ago.

Updated

Four-way framework comparisons turn into taste arguments because the things being compared are close enough that taste is what is left. Bundle sizes are all small, all four are fast enough, and the library gap is a hiring question rather than a technical one.

There is a question with an answer, though, and it is one layer down from where the comparison usually happens. You do not deploy React, you deploy Next.js. You do not deploy Vue, you deploy Nuxt. Those two projects publish support policies that are nothing alike, and one of them just expired.

A timeline from 2023 to 2028 showing published support windows. Nuxt 3 ran until 31 July 2026 and has already ended. Next.js 15 is in maintenance until 21 October 2026. Next.js 16 is supported until 21 October 2027. A vertical line marks today, 23 August 2026, just past the end of the Nuxt 3 bar. React, Vue, Svelte and Solid publish no end date at all and so have no bar. The only published end dates in this comparison today Nuxt 3 ended 31 Jul 2026 Next.js 15 ends 21 Oct 2026 Next.js 16 ends 21 Oct 2027 2023 2024 2025 2026 2027
The two Next.js dates are the end of Maintenance LTS. React, Vue, Svelte, and Solid publish no end date at all, so they have no bar here. Nuxt 3's bar is clipped at the left; it shipped in November 2022.

What the four frameworks actually promise

Very little, and they are not hiding it.

React’s versioning policy makes one commitment and no dates: “If we learn of a security vulnerability in React, we release a backported fix for all major versions that are affected by the vulnerability.” The npm publish log shows what that looks like in practice. On 21 July 2026 React shipped 19.0.8, 19.1.9, and 19.2.8 on the same day, so three minor lines of the current major are alive at once. React 18 is a different story: its last release was 18.3.1 on 26 April 2024, and nothing has shipped since.

Vue’s SECURITY.md has no support window either. The guidance is to “always using the latest versions of Vue and its official companion libraries.” Vue 2 did get a real dated end of life, 31 December 2023, and the npm record agrees: 2.7.16 published on 24 December 2023 and nothing after.

Svelte and Solid publish no policy at all, not even a SECURITY.md. What they do instead is visible in their release history, and it is more generous than the absence suggests. Svelte 5 shipped 19 October 2024, and Svelte 4 kept receiving patches until 20 May 2025, seven months into the next major. Solid has not had a breaking major since 1.0 in June 2021 and is still publishing 1.9.x, which is the most stable answer on this page and also the reason nobody has had to ask the question.

Published end dateWhat actually happens
ReactNoneSecurity backports to affected majors; 18.x silent since Apr 2024
VueNone; “use the latest”Vue 2 got a dated EOL, Vue 3.x has no successor yet
SvelteNone4.x patched for seven months past the 5.0 release
SolidNoneStill 1.x since June 2021

The layer that does publish dates

Next.js runs a two-phase model, written down and dated. The newest major is Active LTS and gets features, fixes, and security patches. When the next major ships, the previous one moves to Maintenance LTS for critical fixes and security only, and “each major version will remain in Maintenance LTS for two years following the initial release.” Version 16 shipped 21 October 2025 and is Active. Version 15 shipped 21 October 2024, so its maintenance window closes on 21 October 2026, about two months from now.

Nuxt writes a policy too, and it is a different order of magnitude. The roadmap commits to “support each major version of Nuxt for a minimum of six months after the release of the next major version.” Nuxt 3 reached end of life on 31 July 2026 and, in the project’s own words, “no longer receives bug fixes or security patches.” Nuxt 5 is expected in Q4 2026, which puts Nuxt 4’s end somewhere around the middle of 2027, and you cannot get closer than that today because the clock starts when the next major ships rather than when yours did.

The other two have no clock because they have not had a major to age out of. SvelteKit has been on 2.x since December 2023. SolidStart was on 1.x from May 2024 until 2.0 arrived on 4 August 2026, and what happens to 1.x now is the thing to watch, because there is no published answer.

What this changes today

If you run Nuxt 3, you are past end of life as of three weeks ago, and the upgrade is a real one because Nuxt 4 changed the default directory layout. If you run Next.js 15, you have until 21 October, and that upgrade is smaller. If you run React, Vue, Svelte, or Solid directly with your own build setup, nobody has promised you a date, and the practical answer is the one the release logs give: stay on the current major and you get patches, fall a major behind and you are on your own on a schedule nobody published.

None of this argues for a particular framework. It argues for knowing which of the two versions in your package.json has the date attached. The runtime under all of this has its own clock too, and those three answers differ just as much.

The parts that are still taste

Bundle size is the argument that will not die, and it deserves one paragraph. Solid and Svelte ship less framework code than React and Vue, which is real and measurable in your own build rather than in a table someone published. It also stops mattering once you add a router, a data layer, and a component library, and it was never the thing that made a page feel slow. Measure your own bundle if you care; do not adopt a framework on the strength of somebody’s hello-world number.

Library depth is a hiring and staffing question. React has more of everything, which means more answers to your problem and more decisions to make before you can start. Vue and Nuxt give you one default for most things, which is faster to start and narrower when you need something unusual. Svelte and Solid ask you to be comfortable writing the missing piece yourself sometimes. Those are honest trade-offs and none of them expire.

Open package.json, find the meta-framework line, and look up its date. That is a five-minute task that answers a question the framework comparison cannot.

Keep reading