Background by @joshuaworonieckiThe JavaScript Ecosystem: What to watch in 2026

The JavaScript Ecosystem: What to watch in 2026

Posted on Dec 22, 2025 by Maddy Miller

In Programming with tags JavaScript, React, Retrospective, TypeScript, Web

907 words, 3 minutes to read

Last year I wrote an article about what I was going to keep an eye on in 2025 in the JS ecosystem, as well as what technologies I’d decided to move away from. It was fairly fun and introspective to write, plus I’ve had a fair few people encourage me to do it again, so here’s the 2026 edition 🎉.

2025 has mostly been what I was expecting. I’ve gotten significantly more into Vite, and haven’t used Webpack outside of a few complex legacy projects that aren’t yet feasible to migrate. I’ve also continued to find Knip helpful, especially as the project matures and improves detection accuracy. The React Compiler has also been useful, but as it’s moreso something that operates in the background, it’s not been top of mind as a large part of 2025 for me. The biggest impact to my actual day to day workflow that’s come from it would likely be the improvements to the react hooks eslint plugin. Overall, the ecosystem feels like it’s in a much better spot now than a year ago.

What I’m watching in 2026

Rolldown

For those unaware, Rolldown is a JS bundler written in Rust, created with the intent to replace both Rollup and ESBuild within Vite. Not only is it fast, it also promises to consolidate the development and production workflows of Vite, by replacing two underlying tools with one. This would solve one of the largest issues that I’ve encountered with using Vite, the difficulties around custom plugins supporting both dev server and production build environments. Vite 8, the version which will replace ESBuild and Rollup with Rolldown, is currently in beta with an expected release during 2026.

tsdown

Elsewhere in the Rolldown ecosystem, there’s tsdown. tsdown is one of my favourite projects that has popped up in recent years. It’s similar to tsup, in that it can bundle TypeScript/JavaScript libraries for publishing, however it does it in a significantly faster way with much better type definition generation. In my experience with some more complicated libraries, I’ve seen improvements that took build times from minutes to milliseconds. The out of the box support for rolldown-plugin-dts also seems to not only be better than tsup, but also vastly faster than vite-plugin-dts. It in my testing outputs type definitions that would need the resource intensive rollupTypes option enabled in the Vite plugin.

It has become my go-to program for bundling libraries, with Vite being my go-to program for creating actual web apps.

Consolidation

What I’m most excited about however, is what this will allow for ecosystem compatibility and configuration sharing. Once Vite runs on Rolldown, and Vitest uses Vite 8, it’ll be possible to share both configurations and plugins between library builds, application builds, and tests. Maybe your monorepo uses a plugin to add support for specific file formats, that are required in apps, libraries, and test runs. It’d be possible to just write a single Rolldown plugin and add a base configuration that each of these can extend. If all are powered by Rolldown, it’d create a near unprecedented (for the JS ecosystem) level of configuration sharing.

ES Modules

I honestly believe that 2026 is the year of full ES Module (ESM) adoption. While I’ve been a big fan of it for a while, I believe we’re finally at a point where dropping Common JS (CJS) from libraries and only outputting ESM is widely feasible. NodeJS now allows importing ESM code from CJS code, backported all the way back to Node 20. The author of the change goes into detail on why it took until now to support this, but overall this is a massive boon to ESM adoption. Every non-EOL version of Node currently supports loading ESM from CJS code, so outside of packages that must support legacy systems or tooling, there’s no longer much of a reason to bundle CJS in the first place.

What I’m leaving behind in 2026

tsup

While tsup was my go-to library bundler for the longest time, I see no reason to use it over tsdown at this point. The project isn’t actively maintained, and tsdown is able to heavily surpass it from a performance perspective. I don’t feel I will ever use tsup in a new project again, and have been slowly migrating any existing projects to tsdown.

Common JS

As mentioned in my ES Modules section above, I believe we’re at a point where dropping CJS is finally widely feasible. There are numerous benefits to only publishing ESM, and the perceived need to dual-publish packages is holding back proper ESM adoption. I don’t intend to publish anymore CJS packages, and will migrate any packages that I haven’t yet to purely ESM. I very much hope 2026 is a year that moves beyond problematic dual ESM/CJS packages.

Conclusion

Overall, 2025 has felt like a year of consolidation, with Rolldown finally seeing the light of day, and an ESM-only future finally becoming feasible. I do feel that I’ve been paying slightly less attention to the wider community this year, mostly just due to having a fairly busy year. I’m fairly excited for the direction that the ecosystem is moving in however, and I feel that it’ll lead to much better stability and performance from a tooling perspective. I’d definitely be keen to see other people’s perspectives on this though, especially those who work closer with other parts of the JS ecosystem than I do. If you write about this, throw me a webmention to this article and it’ll be listed below! 😊

About the Author
Maddy Miller

Hi, I'm Maddy Miller, a Senior Software Engineer at Microsoft. I write articles and develop Minecraft mods including WorldEdit, WorldGuard, and CraftBook. More about me, and contact info.

My opinions are my own and do not represent those of my employer.