Rolldown 1.1.0 Lands with lazyBarrel Enabled by Default

Rolldown 1.1.0 Lands with lazyBarrel Enabled by Default

lschvn

Rolldown 1.1.0 landed on June 3rd, 2026, and despite being a minor release, it ships two behavior changes that developers should review before upgrading.

lazyBarrel Enabled by Default

The headline change is that experimental.lazyBarrel now defaults to true. When a barrel module (a file that re-exports from other modules) is recognized as side-effect-free, Rolldown skips compiling the re-exported modules that are never actually imported by the consuming code.

The practical impact is most noticeable on large component libraries such as Ant Design or @mui/icons-material. In many codebases, these libraries export hundreds of icons or components through barrel files, but any given application only uses a handful. With lazyBarrel enabled by default, Rolldown can now skip the unused exports entirely, reducing both compile time and output bundle size.

The release notes acknowledge one edge case: if a barrel is incorrectly classified as side-effect-free, the optimization could drop a module that was being relied on for its side effects. The opt-out is straightforward for now:

export default {
  experimental: { lazyBarrel: false },
}

The Rolldown team notes this opt-out flag is planned for removal in a future release. If you encounter a case where you need to disable it, the recommendation is to open an issue so the underlying detection logic can be improved instead.

tsconfig Project Reference Resolution Now Matches TypeScript

The second change involves how Rolldown resolves paths through solution-style tsconfig files (the pattern Vite scaffolds by default, where tsconfig.json only lists references and delegates the real settings to tsconfig.app.json or tsconfig.node.json).

Upgrading oxc_resolver from 11.19.1 to 11.20.0, then to 11.21.0, brings Rolldown's resolution in line with how tsc itself behaves:

  • Reference match priority: when the root tsconfig has references, a referenced project that includes a file now takes precedence over the root. Previously the root matched first, which meant the root's compilerOptions.paths were applied even when a referenced project owned the file.
  • allowJs behavior: whether a .js, .jsx, .mjs, or .cjs file is included is now decided by each referenced project's own allowJs setting, not the root's. This means if tsconfig.app.json sets allowJs: true with path aliases, those aliases will now correctly resolve for .js files even when the root tsconfig does not set allowJs.

The release acknowledges this is a behavior change for projects that relied on the previous "root wins" resolution. The recommended path forward is to align your tsconfig structure with TypeScript's expectations rather than work around Rolldown's previous behavior.

Other Changes

The full changelog also includes:

  • import.meta.glob now supports a caseSensitive option
  • A SOURCEMAP_BROKEN warning is now emitted for the renderChunk and transform hooks when sourcemaps may be invalid
  • Improved error messaging: missing tsconfig files now report TSCONFIG_ERROR instead of UNHANDLEABLE_ERROR
  • Code-splitting now supports group-local includeDependenciesRecursively
  • Multiple bug fixes in the chunk optimizer for dynamic entry handling

Rolldown 1.1.0 is available on npm now.


faq:

  • q: "What does 'lazyBarrel' mean in Rolldown?" a: "A 'barrel' is a file that re-exports from multiple other modules. lazyBarrel optimization detects when a barrel has no side effects and skips compiling the unused re-exported modules, speeding up builds for large libraries."
  • q: "My build broke after upgrading Rolldown. What should I check?" a: "First, check if you're relying on side effects from a barrel file's re-exports. You can temporarily opt out with experimental: { lazyBarrel: false }. Second, if you use TypeScript project references, verify your tsconfig structure matches TypeScript's expected layout."
  • q: "How does this affect Vite users?" a: "Rolldown is the bundler powering Vite 8 and later. These changes apply automatically when you upgrade Rolldown as a dependency or when Vite ships a new Rolldown version."

Related articles

More coverage with overlapping topics and tags.

Vite+ Alpha Launches: VoidZero's Unified Toolchain Wants to Replace Your Entire JS Dev Stack
vite

Vite+ Alpha Launches: VoidZero's Unified Toolchain Wants to Replace Your Entire JS Dev Stack

Vite+ Alpha drops today under MIT license, unifying Vite, Vitest, Oxlint, Oxfmt, and Rolldown into a single vp binary. Node.js runtime and package manager management included.
Vite 8 Stable Lands, Seven Patches Follow in Three Weeks
vite

Vite 8 Stable Lands, Seven Patches Follow in Three Weeks

Vite 8.0.0 shipped stable on March 12, and the patch releases haven't stopped β€” v8.0.7 landed April 7 with fixes across CSS, SSR, WASM, and dev server behavior. A contrast to the long beta cycle.
Astro 6 Takes Center Stage: Rust Compiler, Live Content, and a Cloudflare Future
javascript

Astro 6 Takes Center Stage: Rust Compiler, Live Content, and a Cloudflare Future

Astro 6.0 and 6.1 land within weeks of each other, bringing an experimental Rust compiler, request-time content collections, a built-in Fonts API, CSP tooling, and deeper Cloudflare integration β€” all while the framework doubles its adoption for the third year running.

Comments

Log in Log in to join the conversation.

No comments yet. Be the first to share your thoughts.