mrkeyoor.com_
Tue 01 Sept 17:41 UTC
Dev Toolsevaluationupdated 26 Aug 2026

rolldown review

Rolldown is a Rust bundler for JavaScript and TypeScript, built to become Vite's production bundling engine. It keeps much of Rollup's API and plugin model while handling TypeScript, JSX, CommonJS, module resolution, code splitting, and minification itself.

+15stars / 7d
Verdict

Our Rolldown run installed 1,103 packages in 72 seconds, then passed its 4-second build and 12-second test step, so trying the source is easier than its 83,812-file checkout suggests. Vite teams and slow Rollup builds should evaluate it, with production bundle execution and chunk graphs in the acceptance test. Keep the existing bundler if directive preservation or module initialization order cannot be tested end to end.

We ran it

Lab card: what happened when we ran rolldownScreenshot of rolldown (rolldown.rs)
Install✓ · 72s1103 packages · 983 MB
Build✓ · 4s
Tests✓ · 12sran, no count parsed
Repo83812 files~3,421,125 lines of source · 128 MB · 26 CI workflows

Answers from our run

Does rolldown build from source?

Dependencies installed in 72 seconds (1103 packages), and the build succeeded in 4 seconds. We cloned commit 12b5cd0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do rolldown's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use rolldown?

Teams that require byte-for-byte or behavior-for-behavior Rollup output: the docs describe the APIs as largely compatible, and issue #10787 shows an initialization-order regression in code-split output.

What are the alternatives to rolldown?

Rollup, esbuild, webpack. Our Rolldown run installed 1,103 packages in 72 seconds, then passed its 4-second build and 12-second test step, so trying the source is easier than its 83,812-file checkout suggests.

Setup4/572-second install; native bindings make the usual path direct
Docs5/5Clear API, platform, feature, and troubleshooting guidance
Community5/513,911 stars, a same-day push, and active issue handling
Maturity4/5v1.2.6 is current, with output-correctness bugs still open

Discussed on

  1. hnRolldown: Rollup compatible bundler written in Rust186 points
  2. hnRolldown-Vite: a Rust-Rewrite of Rollup23 points
  3. hnVoidZero Announces Rolldown 1.09 points
  4. hnRolldown-Vite4 points
  5. hnRolldown: Fast Rust Bundler for JavaScript with Rollup-Compatible API3 points

Who it’s for

Vite teams that want to evaluate the bundler Vite is adopting and can compare production output before switching.
Rollup users whose build time is expensive enough to justify a migration test.
Tool authors who want Rollup-style plugins plus built-in TypeScript, JSX, CommonJS, resolution, and minification.
Large JavaScript monorepos with CI capacity for fixture builds and browser-level regression tests.

Who it’s NOT for

Teams that require byte-for-byte or behavior-for-behavior Rollup output: the docs describe the APIs as largely compatible, and issue #10787 shows an initialization-order regression in code-split output.
React library authors who depend on preserving every use client directive: open issue #7809 reports that the directive can disappear from hook files.
Applications using aggressive custom chunk groups without browser smoke tests: issue #10752 reports a production bundle that loads every asset but never mounts the app.
Projects on an unsupported native target that cannot accept the WASM fallback or maintain a source build: the platform table splits binaries into supported, experimental, and other tiers.

Setup reality

Our sandbox install succeeded in 72 seconds, adding 1,103 packages and using 983 MB on disk. The build succeeded in 4 seconds, and the available tests succeeded in 12 seconds. We ran commit 12b5cd0 in an unprivileged Node 22 Debian container with 3 CPUs and 8 GB of RAM.

Using the published package needs no account, credential, or external service. Mainstream Linux, macOS, and Windows systems receive native bindings. A project still needs an input, output settings, and any Rollup or Vite plugins its build depends on.

Contributing from source is a different proposition: the checkout was 128 MB with 83,812 files, about 3,421,125 source lines, 26 CI workflows, and pnpm workspaces. Less common platforms may use the WASM package or require a source build, and the troubleshooting guide documents optional-dependency and cross-platform symlink failures.

Rolldown combines Rollup APIs with built-in transforms

Rolldown is meant to collapse two parts of the Vite production pipeline into one Rust engine. Its JavaScript API and plugin hooks follow Rollup, while TypeScript, JSX, syntax lowering, Node-style resolution, CommonJS interop, code splitting, and Oxc minification live inside the bundler. That is useful for applications carrying several standard Rollup plugins just to resolve packages, translate CommonJS, or process ordinary source files.

The compatibility promise has limits. Rolldown's introduction says its APIs are largely compatible with Rollup, especially the plugin interface. Its feature scope is closer to esbuild, and some defaults differ. Browser builds do not receive Node built-in polyfills automatically. The troubleshooting guide says exported function this values and Temporal Dead Zone errors may differ in bundled code. In a 3-CPU migration runner, a successful command should start the review, not end it.

The source tree has 83,812 files and 26 CI workflows

commit 12b5cd0 was a very large checkout: 83,812 files, roughly 3,421,125 source lines, and 128 MB before dependencies. The repository uses pnpm workspaces and has 26 CI workflow files. Our scanner found no Dockerfile and no top-level tests directory, although the test command we were given did run successfully. This is a serious compiler monorepo, with Rust internals, Node bindings, documentation, fixtures, compatibility work, and release machinery in one tree.

That scale matters mostly to contributors. Users can add the published rolldown package, run the CLI against an entry file, or call its JavaScript API. Configuration files may be JavaScript, CommonJS, ESM, or TypeScript. The docs recommend using Rolldown through Vite for applications and point library authors to tsdown. Cloning 128 MB of source is unnecessary when the goal is simply to bundle an app.

What happened when we ran it

Our sandbox installed the commit in 72 seconds. Pnpm added 1,103 packages, and the resulting dependency tree occupied 983 MB. The installation completed without an error in the supplied log. That disk figure is the main setup cost we measured, especially for ephemeral CI workers that repeatedly construct the workspace instead of restoring a package-store cache.

The build succeeded in 4 seconds, followed by a successful 12-second test step. We ran both in a fresh unprivileged container based on Node 22 Bookworm with 3 CPUs and 8 GB of RAM. Those results establish that the repository could install, compile, and run its available checks at the measured commit. They do not establish application bundle speed, output size, or Rollup parity, since our run contained no representative customer project or browser workload.

The clean result is still meaningful for a tree of about 3.4 million source lines. No test count was present in the lab block, so the finding is limited to the command outcome and its duration. We also did not receive vulnerability-audit results. Buyers should resist filling either gap with assumptions, particularly when the installed workspace already consumes 983 MB before any application dependencies are added.

Native packages cover common systems, with WASM for gaps

Rolldown distributes prebuilt bindings for mainstream Linux, macOS, and Windows targets. Its platform table separately labels Windows Arm, Linux s390x, Linux ppc64le, musl, Armv7, FreeBSD, Android, and WASM targets. When no native binding is available, Rolldown can fall back to its WASM build. Building from source remains an option, but it brings the 83,812-file compiler workspace into the setup.

The troubleshooting guide names two binding problems worth putting in CI notes. An npm optional-dependency bug can leave the platform package missing, and the documented repair removes node_modules plus the lockfile before reinstalling. A configuration reached through a Windows or WSL symlink can resolve dependencies for the wrong platform. Pnpm's symlink layout rules out one suggested Node flag, so shared cross-platform workspaces need a deliberate file layout.

Version 1.2.6 is active, while output bugs remain open

GitHub showed 13,911 stars, 399 combined issues and pull requests, and a last push on August 26, 2026. Release v1.2.6 shipped the same day with property-name mangling, tsconfig support in transforms, development-engine work, and several fixes. A stale-project warning would be wrong here. The issue queue and release notes show maintainers working on code splitting, bindings, file watching, transforms, and compiler performance now.

Active maintenance does not make each upgrade routine. Open issue #10787 reproduces changed module initialization order beginning in v1.1.5. Issue #10752 reports an advancedChunks configuration whose assets return HTTP 200 while the application never mounts. Issue #10675 reports more initial chunks after v1.1.5 with similar transferred JavaScript size. These reports describe specific graphs, yet all three affect runtime behavior or loading rather than a cosmetic diagnostic.

Directive preservation is another concrete migration check. Issue #7809 reports use client disappearing from hook files, a problem for libraries that rely on React's client boundary marker. For a Vite application or Rollup library, the sensible trial pins one Rolldown version, builds the real graph, opens critical routes in a browser, exercises lazy imports, and compares emitted directives and chunk loading with the current tool. Our 12-second repository test cannot substitute for that application evidence.

Rolldown earns a trial when builds are already costly

The package is easy to try, the docs name platform and semantic caveats, and our measured source run passed every commanded stage. Rolldown also has a direct route into Vite, which reduces the amount of custom wiring needed for an application evaluation. Teams already comfortable with Rollup configuration can reuse much of that knowledge instead of learning an unrelated build model.

Adoption should be tied to a problem you can measure in your own project. If production bundling is slow, run both engines against the same commit and compare route startup, server output, source maps, directives, and chunk requests. If the current build is fast enough and poorly covered, migration adds risk without a clear payoff. The 4-second repository build is encouraging evidence about Rolldown itself; the open output issues are evidence that your generated program still needs its own test.

Alternatives

ProjectWhat it isPick it when
RollupThe established bundler whose configuration and plugin model Rolldown follows.pick this instead when known Rollup behavior matters more than replacing the build engine.
esbuild gh↗A compact Go bundler and transformer with a deliberately smaller plugin surface.pick this instead when a straightforward standalone build tool matters more than Rollup plugin compatibility or detailed chunk control.
webpack gh↗A long-running application bundler with a large loader and plugin ecosystem.pick this instead when your working build depends deeply on webpack loaders, plugins, or module federation.

What people are saying

  1. [github-trending] rolldown/rolldown

Sources

  1. Rolldown repository and README
  2. Rolldown getting started guide
  3. Rolldown notable features
  4. Rolldown troubleshooting guide
  5. Rolldown v1.2.6 release
  6. Advanced chunks runtime hang issue #10752
  7. Directive preservation issue #7809
  8. Initial chunk count regression issue #10675

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →