Rolldown

@rolldown.rs

https://rolldown.rs/ Fast Rust-based bundler for JavaScript, designed to power @vite.dev, developed by voidzero.dev

VoidZero is joining Cloudflare. Our mission stays the same: to make JavaScript developers more productive than ever before. Vite, Vitest, Rolldown, Oxc, and Vite+ remain MIT-licensed. Evan and the VoidZero team will continue leading them.

VoidZero + Cloudflare

Rolldown v1.0.0-rc.16 is out 🎉 - Support cross-module const enum inlining - Fix empty module namespace in `manualChunks` - Fix wildcard re-exports with transitive top-level await - More bug fixes and improvements github.com/rolldown/rol...

Release v1.0.0-rc.16 · rolldown/rolldown

[1.0.0-rc.16] - 2026-04-16 🚀 Features const enum cross-module inlining support (#8796) by @Dunqing implement module tagging system for code splitting (#9045) by @hyf0 🐛 Bug Fixes rolldown_plugin...

github.com

SvelteKit 2 now fully supports Vite 8 SvelteKit 3 will require it - giving additional optimizations and functionality. E.g. SvelteKit 3 will use @rolldown.rs hook filters to spend more compilation time in rust and less in JavaScript. And SvelteKit 3 adapters use only rolldown without esbuild

Rolldown can panic sometimes... but we make sure you never have to! It's rare, but when it happens, you won't be staring at a cryptic stack trace. @rolldown.rs straight up tells you it is not your code. And a link to report it so we can fix it fast. Good error messages => good DX

Bild

The State of JS 2025 results are out! 🏆 Most Adopted Tech → Vitest 🏆 Highest Satisfaction → Vite (98%) & Vitest (97%) 🏆 Highest Interest → Vitest (83%) & Rolldown (80%) But that's not all! A thread 🧵

Bild

🚀 Lazy Barrel Optimization in Rolldown Barrel files, files that re-export from other modules, are common in modern JavaScript projects but a nightmare for your build time. Rolldown now has Lazy Barrel Optimization to fix this. Here's how it works 🧵

Rolldown - Lazy Barrel Optimization

In the next version of Rolldown, bundling will be ~10% faster 🎉 This was achieved by optimizing the semantic scoping process Internal plugins like define and inject now flag when they haven't changed the AST, allowing to skip redundant scope recreation github.com/rolldown/rol...

fix(rolldown): sync scoping properly in pre_process_ecma_ast by Boshen · Pull Request #6537 · rolldown/rolldown

We need to recreate scoping after each transformation step because none of the steps syncs scoping at present, which is a huge waste that we should fix later in the future. But in the interim, defi...

github.com

Rolldown drops CJS support! From the latest version of @rolldown.rs (1.0.0-beta.36) on, Rolldown will only be released in the ESM format. The required Node version has also been bumped to align with @vite.dev (20.19+ and 22.12+). Node 18 has been dropped due to being EOL since April.

tsup is not actively maintained anymore 👀 With >9M NPM monthly downloads and >10k GitHub stars, tsup is undeniably a popular choice for bundling. Unfortunately, it is not under active maintenance anymore. Thanks to @egoist.dev & contributors for all the work on tsup 🙏🏻

A screenshot from the tsup repository showing a text above the heading: "Warning: This project is not actively maintained anymore. Please consider using tsdown instead. Read more in the migration guide".

Remember how @gitlab.com got 2.6x faster builds and ~100x less memory consumption when using @rolldown.rs? Now, with all the native plugins enabled, they are down to 22s. That is ~7x faster than Vite, ~half the time compared to using native resolver before and 43x faster than their webpack build 🔥

Alexander Lichter@thealexlichter.com · last yr.

ICYMI: GitLab saw their memory consumption reduced by 100x by using the @rolldown.rs powered @vite.dev version (in addition to a 2.6x speedup) 🤯

What's new in ViteLand? Our July 2025 recap is out. 🎉 Announcing 1st in-person @viteconf.org in Amsterdam 📈 @vite.dev surpassing webpack's downloads ⏩ Major performance boosts for @rolldown.rs 🔥 Type-aware linting & custom rules for Oxlint 👀 and more Read the post: voidzero.dev/posts/whats-...

What’s New in ViteLand: July 2025 Recap

July 2025 brings exciting updates in the Vite ecosystem, including the release of Vite 7, Rolldown's new features, and the upcoming ViteConf in Amsterdam. Discover the latest news in Vite, Vitest, Oxc...

voidzero.dev

Did you know that @rolldown.rs supports converting your top-level variables to var? It seems weird at first, but is actually helpful - and your output is still ESM and modern code! The transform can improve perf due to avoiding "temporal dead zone" checks of VMs that can cause slowdowns up to 1000%

Three code tabs: The source "index.ts" that includes just "const a = 1; console.log(a)". The config of rolldown showing that "output.topLevelVar" is set to true, and eventually the transformed code that shows "var a = 1" instead of the expected "const a = 1"

🚨 Speaker Alert 🚨 We're incredibly proud to bring together an exceptional group of speakers who are pushing the boundaries of web development with @vite.dev Over the next few days, we'll be highlighting the incredible speakers who will be on our stage on Oct 9-10! Stay tuned 🚀 viteconf.amsterdam

Did you know that Rolldown-Vite supports tsconfig path resolution out of the box? Use the path resolutions defined in your tsconfig by setting `resolve.tsconfigPaths`. The only requirement? You must use native plugins, either only the resolver or all No extra plugin needed 🙌

Picture of VS Code with an open minimal Vite project. The Vite config only sets `experimental.enableNativePlugin` to "resolver" with a comment saying "// or true, either is necessary", and "resolve.tsconfigPaths" to true.

The tsconfig.json has `compilerOptions.paths` set to `{ "app/*": ["./src/app/*"]`. Eventually, the path resolution is used automatically (wtih autocomplete too!) in src/main.ts when using `import { App } from "app/my-app.ts`, instead of `import { App } from "./src/app/my-app.ts"`!