The framework war ended and nobody noticed
No significant new frontend framework shipped in 2025. But the real change was never happening on the framework side anyway.
August 31, 2026 · updated September 29, 2026

No significant new frontend framework shipped in 2025.
The State of JS survey put it plainly in its own introduction: the ecosystem has settled over the past few years, and Svelte, still described as the newcomer, is now nine years old. Measured in JavaScript framework years, that's getting on.
For a decade we got the same article every year. Which framework, why this one, why not that one. That article has run out of things to say, but the trend lists keep republishing the same rankings.
Meanwhile the actual change happened somewhere else.
Where it happened
Interop is behind it. Apple, Google, Microsoft and Mozilla agree on a list each year, then close the gaps between their browsers against that list. The project has been running six years, and the 2026 list came out in February.
You can see the result. CSS features that got waved off for years with "no browser support" are usable now. Firefox 147 shipped anchor positioning in January 2026 and the feature went Baseline. The same list includes @scope, field-sizing, contrast-color() and :open.
Those names read dry, so here's what they do.
:has() is a parent selector, so you can style a card based on the input selected inside it. The Popover API hands menus, tooltips and dropdowns to the browser; managing focus, closing on outside click, stacking layers correctly are no longer your job. field-sizing: content grows a textarea to fit its content, which retires the scrollHeight listener. contrast-color() picks a readable text color by looking at the background. @scope solves style isolation inside CSS itself.
All five do the same thing. They move work you used to write JavaScript for into the browser.
What follows
Justifying a new dependency has gotten harder.
Try this: open your package.json and ask, for each line, whether the browser does this now. In 2023 that question was mostly a waste of time. In 2026 it isn't. Tooltips, dropdowns, modals, page transitions. If you're carrying a library for all four, you're probably carrying one you don't need.
Deleting a dependency isn't only about bundle size. It's one less thing to watch, update, and fix when it breaks.
The tooling moved too, quietly

The second shift happened in the build chain, and it's done.
Vite 8 went stable on March 12, 2026. It ended the split architecture that ran for five years: esbuild in development, Rollup in production, both gone. Rolldown replaced them, a single bundler written in Rust. No opt-in, it's the default. Rolldown itself hit 1.0 on May 7.
Speed gains run somewhere between 10x and 30x depending on the project. Linear's production build went from 46 seconds to 6. But the speed isn't the interesting part. Development and production now run the same engine, which kills an entire class of bug. You used to have two bundlers compiling the same code slightly differently, and sometimes a thing worked in dev and broke in production. That's over.
It costs something. The package went ESM-only, it wants Node 20.19 or 22.12, and installs grew by roughly 15 MB because Rolldown and LightningCSS ship as native binaries. Plugins that reached into Rollup or esbuild internals can break.
TypeScript is moving the same direction. The compiler is being ported to Go, and the VS Code codebase now compiles in 7.5 seconds instead of 77.8.
The common thread: JavaScript tooling is giving up on being written in JavaScript. You can read that as the ecosystem maturing. You can also read it as the bar for understanding and contributing to your own tools going up.
The Next.js thing is a symptom
The biggest movement in the survey was Next.js. Satisfaction dropped from 68% to 55%.
It still leads usage by a wide margin and it's the one that shows up in job listings, so reading this as a collapse would be wrong. But the written responses were consistent: App Router complexity, the React Server Components learning curve, and worry about Vercel lock-in.
Astro, meanwhile, came first in satisfaction among meta-frameworks, with a 39-point gap over Next.js. Solid.js took the highest satisfaction score for the fifth year running.
It's tempting to read this as the framework war reigniting, and I think that's wrong. The better reading is that the complexity budget ran out. For a decade every new layer got accepted because it solved something. Now people are asking the question from the other end: is this layer actually necessary?
The browser doing more of the work makes that question easier to ask.
One more thing
State of CSS 2026 turned up something I didn't expect.
While the rest of web development hands more of its code to AI, CSS has stayed largely handwritten. Most of the written responses give the reason directly: AI still isn't good at CSS.
Over the same period, roughly a third of all code written is estimated to be AI-generated. So the resistance isn't general AI skepticism. It's specific to CSS.
I don't know exactly why. My guess is that the right answer in CSS depends too heavily on context. A function's correctness can be tested with inputs and outputs; a layout's correctness only shows up on a screen, and that screen differs on every device. The model can't see what looks good.
I don't know how long that lasts. But right now there's an odd situation: the fastest-changing layer of the ecosystem is also the one resisting automation hardest.
What to do
Here's the practical order.
Move to Vite if you haven't. If you have, upgrade to 8, but test your plugins first; the ones reaching into Rollup or esbuild internals are the real risk. The safe route is two steps: switch to the rolldown-vite package on Vite 7, and if nothing breaks, go to 8.
Make TypeScript the default. Node.js strips types natively now, so setup isn't an excuse anymore.
Audit your dependencies. If you're carrying libraries for menus, tooltips and modals, you probably don't need them.
Put anchor positioning and the Popover API at the top of your learning list this year; together they cover nearly all overlay UI. On testing, Vitest and Playwright have settled it.
And if you're on Next.js, ask whether you actually experience the complaints above in your own project. If you do, React Router v7 is the least painful move and Astro is right for content-heavy work. If you don't, stay. The crowd's dissatisfaction isn't your problem.
Data: State of JS 2025 (November 2025, ~12,000 respondents), State of CSS 2026, Vite 8 release notes, web.dev Interop 2026
Available languages