release: v1.1.0#9637
Merged
Merged
Conversation
✅ Deploy Preview for rolldown-rs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Merging this PR will not alter performance
Comparing Footnotes
|
shulaoda
approved these changes
Jun 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Important
This is a minor release. Two changes alter default behavior compared to
1.0.3. Please read this section before upgrading. Everything else is additive (new features, fixes, deps).1.
experimental.lazyBarrelis now enabled by default (#9632)What changed.
experimental.lazyBarrelnow defaults totrue. When a barrel module is recognized as side-effect-free, Rolldown skips compiling the re-exported modules that are never actually used.Impact. For codebases with large barrel files (component libraries such as Ant Design,
@mui/icons-material, etc.) this is a meaningful build-time speedup, and for the vast majority of projects the emitted output is unchanged. In rare cases where a barrel is incorrectly treated as side-effect-free, the optimization could drop a module that was being relied on for its side effects.How to opt out (backward compatible).
2.
tsconfigproject-reference resolution now aligns with TypeScriptUpgrading
oxc_resolver(11.19.1→11.20.0in #9549, then→ 11.21.0in #9634) changes how a solution-styletsconfig.json(one that only listsreferencesand delegates the real settings totsconfig.app.json/tsconfig.node.json, as Vite scaffolds) is resolved, bringing it in line with how TypeScript (tsc) itself behaves:references, a referenced project that includes the file now takes precedence over the root, instead of the root matching it first (this is what TypeScript already does). So that project'scompilerOptions.pathsnow apply.allowJs(oxc-resolver #1198): whether a.js/.jsx/.mjs/.cjsfile is included is now decided by each referenced project's ownallowJs, not the root's (again matching TypeScript). Sotsconfig.app.jsonwithallowJs: true+pathsnow resolves aliases for.jsfiles even when the root doesn't setallowJs.For most projects this is a fix (the standard Vite
pathsaliases now resolve, closes #8468), but it is a behavior change if you relied on the previous behavior, where the root'spaths/allowJstook precedence.If you relied on the old "root wins" behavior. There is no exact toggle back, because the old behavior was the bug being fixed. The recommended path is to align your config with TypeScript: declare the
paths/allowJson the referenced project that actually owns the files.If you must keep the old precedence while still using
references: a referenced project's match wins, and the first matchingreferencesentry takes priority (the root is only a fallback when no reference claims the file). So extract the old root settings into their own config and list it first:tsconfig.base.jsonshould carry thepathsyou previously declared on the root, plusallowJs: trueif it needs to claim.jsfiles (the extension is checked against each config's ownallowJs). With noinclude, it defaults to**/*under its directory and claims every file first.Alternatively, bypass reference resolution entirely by pointing the top-level
tsconfigoption at a single config:export default { tsconfig: './tsconfig.app.json' }.[1.1.0] - 2026-06-03
🚀 Features
experimental.lazyBarrelby default (feat: enableexperimental.lazyBarrelby default #9632) by @shulaodaimport.meta.globsupportcaseSensitiveoption (feat:import.meta.globsupportcaseSensitiveoption #9594) by @bteaSOURCEMAP_BROKENwarning for renderChunk hook (feat: addSOURCEMAP_BROKENwarning for renderChunk hook #9601) by @sapphi-redSOURCEMAP_BROKENwarning for transform hook (feat: addSOURCEMAP_BROKENwarning for transform hook #9600) by @sapphi-red@__NO_SIDE_EFFECTS__hint for invalid@__PURE__before function declarations (feat: add@__NO_SIDE_EFFECTS__hint for invalid@__PURE__before function declarations #9505) by @copilotincludeDependenciesRecursively(feat(code-splitting): support group-localincludeDependenciesRecursively#9587) by @hyf0🐛 Bug Fixes
rolldownpackage (fix(browser): add missing exports and ensure consistency withrolldownpackage #9629) by @sapphi-red🚜 Refactor
ImportStatusvariants (refactor: remove never-constructedImportStatusvariants #9606) by @Boshen📚 Documentation
RolldownBuild::closemethod should be called in most cases (docs: clarify thatRolldownBuild::closemethod should be called in most cases #9619) by @sapphi-red⚡ Performance
🧪 Testing
⚙️ Miscellaneous Tasks
❤️ New Contributors