/posts/announcing-rolldown-vite.md
Announcing Rolldown-Vite
May 30, 2025

Announcing Rolldown-Vite

Evan You

Evan You

TL;DR: Try out the Rolldown-powered Vite today by using the rolldown-vite package instead of the default vite package. It is a drop-in replacement, as Rolldown will become the default bundler for Vite in the future. Switching should reduce your build time, especially for larger projects. Reach out to discover production use cases!


Over the last year, we've been working on Rolldown, a Rust-based next-generation bundler, as part of a broader effort to modernize Vite's core. Alongside Rolldown, we've developed Oxc, a collection of high-performance JavaScript tools, that includes a parser, transformer, resolver, and minifier, as well as a linter and soon also a formatter. It acts as foundational layer for Rolldown, providing the necessary building blocks for efficient JavaScript and TypeScript processing.

Today, we're excited to announce that the Rolldown-powered Vite version has reached initial feature parity with today's Vite. This means you can try it as a drop-in replacement and experience the benefits right away as part of a technical preview.

Thanks to early adopters, we were able to test rolldown-vite with a range of projects, from basic setups to large-scale enterprise apps. The results have been impressive, with production build time reductions from 3x to 16x, and memory usage during the build process cut by up to 100x. Take a look at the real-world impact section for more details.

We encourage you to try out rolldown-vite and share your feedback to contribute to the future development of Vite's bundling infrastructure.

Using rolldown-vite

Getting started with rolldown-vite is straightforward. If you have an existing Vite project, you can replace the vite package with rolldown-vite by using an alias in your package.json:

json
{
  "dependencies": {
    "vite": "npm:rolldown-vite@latest"
  }
}

If you use VitePress, or a meta-framework that lists Vite as a peer dependency, you can use overrides to replace the vite package with rolldown-vite in your project:

json
{
  "overrides": {
    "vite": "npm:rolldown-vite@latest"
  }
}
json
{
  "pnpm": {
    "overrides": {
      "vite": "npm:rolldown-vite@latest"
    }
  }
}
json
{
  "resolutions": {
    "vite": "npm:rolldown-vite@latest"
  }
}
json
{
  "overrides": {
    "vite": "npm:rolldown-vite@latest"
  }
}

That's it! Now you can continue using Vite as you normally would, but with the added performance benefits of Rolldown. It's likely that you will see some warning messages about not-yet-supported options or deprecated APIs - we will continue to smooth those out across the ecosystem.

rolldown-vite is currently distributed as a separate package to allow for rapid iteration and to keep feedback and issues separate from the main vite package. This separation helps ensure stability for existing users while the Rolldown integration matures. Once rolldown-vite is stable, its changes will be merged into Vite and the separate package will be deprecated.

It also follows Vite's major and minor version numbers to maintain compatibility, but its patch versions are independent and may introduce breaking changes as development continues. For the latest updates and details, refer to the rolldown-vite changelog.


Ensuring Compatibility

Compatibility is a top priority for rolldown-vite. To ensure a smooth experience, we created a forked version of Vite ecosystem CI and ran it against rolldown-vite. We have got the tests passing for most frameworks and plugins, but do note some frameworks or advanced use cases may still have compatibility gaps. We also recommend checking the Rolldown migration guide for the latest compatibility notes, known issues, and migration tips. If you run into problems, please report them so we can improve support across the ecosystem.

esbuild as optional dependency

In the current stable version of Vite, esbuild is a core dependency used for tasks like transforming and minifying production builds, as well as powering parts of the development server. Many Vite plugins also rely on esbuild through utility functions provided by Vite, such as file transformations.

With rolldown-vite, esbuild is no longer required. Instead, all internal transformations and minification are handled by Oxc, leading to improved performance using a single foundational layer. This means you don't need to install esbuild as a dependency unless you're using a Vite plugin that explicitly requires it and doesn't yet support Oxc transforms.

We are actively collaborating with plugin and framework authors to ensure that Vite plugins automatically leverage Oxc transforms when using rolldown-vite, resulting in faster builds.

Plugin Authors

If you are a plugin author, no matter if it is a Vite or Rollup plugin, you can start testing your plugins with rolldown-vite right away. A lot of plugins should work out of the box, but some might need tweaking, either for compatibility or performance reasons. Consult our plugin author guide for more details.


Real-World Impact

rolldown-vite is still in development, but early adopters, ranging from side projects to large-scale enterprise apps, are already seeing remarkable results.

Some highlights:

  • GitLab reduced build time from 2.5 minutes to just 40 seconds and cut their memory usage by 100x.
  • Excalidraw's build dropped from 22.9 seconds to 1.4 seconds (16x faster).
  • PLAID Inc. saw one frontend's build time fall from 1 minute 20 seconds to 5 seconds (16x faster).
  • Appwrite builds went from over 12 minutes to just 3 minutes, with memory usage being slashed by 4x.
  • Particl achieved a nearly 10x speedup compared to Vite (and almost 29x compared to Next.js), with builds dropping from over a minute to just 6 seconds.

These results show not only much faster builds, but in some cases, orders of magnitude less memory usage. For more details or to share your own results, visit the vitejs/rolldown-vite-perf-wins repository.

Oh and fun fact - this blog post you are reading right now is built with VitePress running on top of Rolldown-Vite, and the production build takes only 1.8s on Netlify.


What Comes Next?

Vite is generally known for its unbundled native ESM dev server, which is responsible for the fast startup time and almost instant feedback. Nevertheless, we’ve seen limitations of this approach for projects at unconventional scale, especially in Enterprise setups. To address these, we are working on a full-bundle mode for the dev server. With Rolldown’s performance, this mode aims to improve dev server startup times, especially for large projects, while maintaining or even enhancing startup speed for small and medium projects.

Alongside this, we plan to "rustify" more of Vite’s internals to reduce communication overhead and unlock even greater performance gains.

Roadmap for Rolldown in Vite

We've planned three phases for the transition to Rolldown, each designed to ensure a smooth migration while gathering valuable feedback from the community:

  1. Phase One (Current): rolldown-vite is available as a separate package for early adopters. This allows us to gather feedback and make improvements based on real-world usage.
  2. Phase Two: All changes from rolldown-vite will be merged into the main Vite codebase when considered stable. They will also come with an opt-in full-bundle mode for development. rolldown-vite will be deprecated at this point.
  3. Phase Three: The full-bundle mode will become the default for Vite.

At the current time of writing, we expect each phase to last several months. Keep in mind that the exact duration will be determined by various factors, most importantly feedback from the community and real world usage, as well as stability and compatibility.


Give It a Try

We encourage you to try rolldown-vite in your projects today! Your feedback will help shape the future of Vite's bundling infrastructure. In case you encounter any issues, such as missing or broken features, unclear error messages or performance degradations, please make sure to report these in the rolldown-vite repository (not the main Vite repo). If you want to pose questions or discuss in real time, make sure to join the Rolldown Discord.

04CallToAction.vue

Interested in the future of JavaScript tooling and want to stay ahead of the curve?

We’d love to talk to you.

ContactButton.vueserved in 13ms@click=”contact”