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.pathswere applied even when a referenced project owned the file. - allowJs behavior: whether a
.js,.jsx,.mjs, or.cjsfile is included is now decided by each referenced project's ownallowJssetting, not the root's. This means iftsconfig.app.jsonsetsallowJs: truewith path aliases, those aliases will now correctly resolve for.jsfiles even when the root tsconfig does not setallowJs.
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.globnow supports acaseSensitiveoption- A
SOURCEMAP_BROKENwarning is now emitted for therenderChunkandtransformhooks when sourcemaps may be invalid - Improved error messaging: missing tsconfig files now report
TSCONFIG_ERRORinstead ofUNHANDLEABLE_ERROR - Code-splitting now supports
group-localincludeDependenciesRecursively - 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."


