Skip to content

Releases: rolldown/rolldown

v1.0.0-rc.18

29 Apr 13:44
Immutable release. Only release title and notes can be modified.
2c4a957

Choose a tag to compare

[1.0.0-rc.18] - 2026-04-29

💥 BREAKING CHANGES

🐛 Bug Fixes

  • rolldown_plugin_vite_import_glob: return error instead of panicking when virtual module uses a relative glob (#9241) by @shulaoda
  • binding: treat empty inlineConst object as omitted (#9247) by @IWANABETHATGUY
  • rolldown: keep enum declaration for optional-chain access (#9229) by @Dunqing
  • link_stage: restore inline let-else in exports-kind filter (#9237) by @IWANABETHATGUY
  • dev/lazy: avoid module reinitialization in lazy compilation patches (#9179) by @h-a-n-a
  • dev: visit identifier references for runtime rewrites in HMR finalizer (#9191) by @h-a-n-a
  • chunk-optimizer: pick dominator for runtime placement to avoid cycles (#9164) by @IWANABETHATGUY
  • make this.emitFile chunk path synchronous to avoid deadlock (#9031) by @lazarv
  • use sentinel id for browser: false ignored modules (#9192) by @shulaoda
  • prevent chunk optimizer from creating import cycles (#9228) by @IWANABETHATGUY

🚜 Refactor

📚 Documentation

⚙️ Miscellaneous Tasks

❤️ New Contributors

Co-authored-by: shulaoda 165626830+shulaoda@users.noreply.github.com

v1.0.0-rc.17

22 Apr 11:14
Immutable release. Only release title and notes can be modified.
d9d72c3

Choose a tag to compare

[1.0.0-rc.17] - 2026-04-22

🐛 Bug Fixes

  • link: error on missing export between TS modules (#9197) by @IWANABETHATGUY
  • rolldown_plugin_vite_import_glob: import path should not be affected by absolute base option (#9145) by @kermanx
  • this.resolve() returns null for bare relative paths without importer (#9142) by @Copilot
  • collect destructured bindings in HMR module exports (#9146) by @h-a-n-a
  • esbuild-tests: handle 0.28.0 test cases (#9149) by @sapphi-red
  • plugin/copy-module: honor external resolutions from other plugins (#9139) by @TheAlexLichter
  • allow undefined in sourcesContent type (#9136) by @jurijzahn8019
  • reduce false positives in chunk optimizer circular dependency detection (#9049) by @AlonMiz

🚜 Refactor

  • chunk-optimizer: extract runtime-module placement into rehome_runtime_module (#9163) by @IWANABETHATGUY

📚 Documentation

⚡ Performance

  • rolldown_plugin_vite_import_glob: skip self-import earlier using raw path comparison (#9193) by @shulaoda

🧪 Testing

  • lazy: add playground/lazy-compilation (#7974) by @hyf0

⚙️ Miscellaneous Tasks

❤️ New Contributors


Co-authored-by: shulaoda 165626830+shulaoda@users.noreply.github.com

v1.0.0-rc.16

16 Apr 09:05
Immutable release. Only release title and notes can be modified.
edec4fa

Choose a tag to compare

[1.0.0-rc.16] - 2026-04-16

🚀 Features

  • const enum cross-module inlining support (#8796) by @Dunqing
  • implement module tagging system for code splitting (#9045) by @hyf0

🐛 Bug Fixes

  • rolldown_plugin_vite_manifest: handle duplicate chunk names for CSS entries (#9059) by @sapphi-red
  • improve error message for invalid return values in function options (#9125) by @shulaoda
  • await async export-star init wrappers (#9101) by @thezzisu
  • never panic during diagnostic emission (#9091) by @IWANABETHATGUY
  • include array rest pattern in binding_identifiers (#9112) by @IWANABETHATGUY
  • rolldown: set worker thread count with ROLLDOWN_WORKER_THREADS (#9086) by @fpotter
  • rolldown_plugin_lazy_compilation: escape request ID in proxy modules (#9102) by @h-a-n-a
  • treat namespace member access as side-effect-free (#9099) by @IWANABETHATGUY
  • relax overly conservative side-effect leak check in chunk optimizer (#9085) by @IWANABETHATGUY
  • runtime: release cb reference after __commonJS factory initialization (#9067) by @hyf0-agent
  • @__NO_SIDE_EFFECTS__ wrapper should not remove dynamic imports (#9075) by @IWANABETHATGUY
  • rolldown_plugin_vite_import_glob: use POSIX path join/normalize for glob resolution (#9077) by @shulaoda
  • emit REQUIRE_TLA error when require() loads a module with top-level await (#9071) by @jaehafe
  • emit namespace declaration for empty modules in manual chunks (#8993) by @privatenumber
  • rolldown_plugin_vite_import_glob: keep common base on path segment boundary (#9070) by @shulaoda
  • prevent circular runtime helper imports during facade elimination (#8989) (#9057) by @IWANABETHATGUY
  • correct circular dependency check in facade elimination (#9047) by @h-a-n-a
  • docs: correct dead link in CodeSplittingGroup.tags JSDoc (#9051) by @hyf0
  • emit DUPLICATE_SHEBANG warning when banner contains shebang (#9026) by @IWANABETHATGUY

🚜 Refactor

📚 Documentation

  • document runtime module placement strategy in code-splitting design (#9062) by @IWANABETHATGUY
  • clarify options hook behavior difference with Rollup in watch mode (#9053) by @sapphi-red
  • meta/design: introduce module tags (#9017) by @hyf0

⚡ Performance

🧪 Testing

⚙️ Miscellaneous Tasks

❤️ New Contributors

Co-authored-by: shulaoda 165626830+shulaoda@users.noreply.github.com

v1.0.0-rc.15

09 Apr 02:46
Immutable release. Only release title and notes can be modified.
27cb729

Choose a tag to compare

[1.0.0-rc.15] - 2026-04-09

🐛 Bug Fixes

  • prevent stack overflow in generate_transitive_esm_init on circular dependencies (#9041) by @shulaoda

🚜 Refactor

  • agents: rename Spec-Driven Development to Context Engineering (#9036) by @hyf0

Co-authored-by: shulaoda 165626830+shulaoda@users.noreply.github.com

v1.0.0-rc.14

08 Apr 11:35
Immutable release. Only release title and notes can be modified.
b7a66e0

Choose a tag to compare

[1.0.0-rc.14] - 2026-04-08

🚀 Features

  • rust: add disable_panic_hook feature to disable the panic hook (#9023) by @sapphi-red
  • support inlineConst for CJS exports accessed through module.exports (#8976) by @h-a-n-a

🐛 Bug Fixes

  • rolldown_plugin_vite_import_glob: normalize resolved alias path to prevent double slashes (#9032) by @shulaoda
  • rolldown_plugin_vite_import_glob: follow symlinks in file scanning (#9000) by @Copilot
  • wrap CJS entry modules for IIFE/UMD when using exports/module (#8999) by @IWANABETHATGUY
  • emit separate __toESM bindings for mixed ESM/CJS external imports (#8987) by @IWANABETHATGUY
  • tree-shake dead dynamic imports to side-effect-free CJS modules (#8529) by @sapphi-red
  • skip inlining stale CJS export constants on module.exports reassignment (#8990) by @IWANABETHATGUY

🚜 Refactor

  • generator: migrate ecma formatting from npx oxfmt to vp fmt (#9022) by @shulaoda
  • generator: replace npx oxfmt with vp fmt for ecma formatting (#9021) by @shulaoda

📚 Documentation

  • contrib-guide: mention that running tests on older Node.js version will have different stat results (#8996) by @claude

⚙️ Miscellaneous Tasks

◀️ Revert

Co-authored-by: shulaoda 165626830+shulaoda@users.noreply.github.com

v1.0.0-rc.13

01 Apr 13:33
Immutable release. Only release title and notes can be modified.
1d1cd7a

Choose a tag to compare

[1.0.0-rc.13] - 2026-04-01

🚀 Features

🐛 Bug Fixes

🚜 Refactor

📚 Documentation

  • document ensure_lazy_module_initialization_order in code-splitting design doc (#8931) by @IWANABETHATGUY

🧪 Testing

⚙️ Miscellaneous Tasks

❤️ New Contributors

Co-authored-by: shulaoda 165626830+shulaoda@users.noreply.github.com

v1.0.0-rc.12

25 Mar 13:19
Immutable release. Only release title and notes can be modified.
917cc42

Choose a tag to compare

[1.0.0-rc.12] - 2026-03-25

🚀 Features

  • chunk-optimizer: skip circular dependency check when strict execution order is enabled (#8886) by @hyf0

🐛 Bug Fixes

  • emit build warnings during watch mode rebuilds (#8897) by @IWANABETHATGUY
  • lazy-barrel: load import-then-export specifiers when barrel has local exports (#8895) by @shulaoda
  • correct execution order of transferred CJS init calls (#8877) by @IWANABETHATGUY
  • mcs: entriesAware should calculate sizes without duplication (#8887) by @hyf0
  • non-deterministic chunk generation (#8882) by @sapphi-red
  • is_top_level incorrectly treats strict-mode scopes as top-level (#8878) by @Dunqing

🚜 Refactor

  • treeshake: migrate SideEffectDetector to Oxc's MayHaveSideEffects trait (#8624) by @Dunqing

🧪 Testing

  • make dev server tests deterministic by replacing fixed sleeps with event-driven polling (#8561) by @Boshen

⚙️ Miscellaneous Tasks

Co-authored-by: shulaoda 165626830+shulaoda@users.noreply.github.com

v1.0.0-rc.11

23 Mar 10:58
Immutable release. Only release title and notes can be modified.
cbc94c4

Choose a tag to compare

[1.0.0-rc.11] - 2026-03-23

🚀 Features

🐛 Bug Fixes

🚜 Refactor

  • extract canonical_ref_resolving_namespace helper (#8836) by @Boshen

📚 Documentation

  • improve external examples for cross-platform correctness (#8786) by @hyf0-agent
  • update reference to transform function in plugin API documentation (#8778) by @zOadT

⚡ Performance

  • reduce timing of dervie_entries_aware_chunk_name (#8847) by @AliceLanniste
  • bench: remove redundant sourcemap benchmark cases (#8825) by @Boshen
  • reduce intermediate allocations in collapse_sourcemaps (#8821) by @Boshen
  • enable parallel AST cloning on macOS (#8814) by @Boshen

🧪 Testing

  • watch: use polling watcher and retry for watch error test (#8772) by @sapphi-red

⚙️ Miscellaneous Tasks

❤️ New Contributors


Co-authored-by: shulaoda 165626830+shulaoda@users.noreply.github.com

v1.0.0-rc.10

18 Mar 16:09
Immutable release. Only release title and notes can be modified.
69585a6

Choose a tag to compare

[1.0.0-rc.10] - 2026-03-18

🚀 Features

🐛 Bug Fixes

  • rolldown_plugin_vite_dynamic_import_vars: align dynamic import fast check with Vite (#8760) by @shulaoda
  • renamer: handle existing bindings in nested scopes when finding unique names (#8741) by @drewolson
  • pass yarn_pnp option where needed (#8736) by @sapphi-red
  • preserve optional chaining in namespace member expr rewrite (#8712) by @Copilot
  • correct UTF-16 index handling in native MagicString (#8693) by @IWANABETHATGUY
  • mark failing doctests as ignore (#8700) by @Boshen
  • prevent may_partial_namespace from leaking through include_module (#8682) by @IWANABETHATGUY
  • ci: bump native-build cache key to invalidate stale napi-rs artifacts (#8678) by @Boshen
  • comments.annotation: false breaking tree-shaking (#8657) by @IWANABETHATGUY
  • validate filenames for NUL bytes from chunkFileNames/entryFileNames (#8644) by @IWANABETHATGUY
  • dce-only minify should not set NODE_ENV to production (#8651) by @IWANABETHATGUY

🚜 Refactor

  • rust: remove dead CrossModuleOptimizationConfig::side_effects_free_function_optimization (#8673) by @Dunqing
  • rust: simplify cross_module_optimization by removing redundant scope tracking (#8672) by @Dunqing
  • simplify string repeat in guess_indentor (#8753) by @IWANABETHATGUY
  • consolidate custom magic-string tests into one file (#8696) by @IWANABETHATGUY
  • extract CJS bailout checks from include_symbol (#8683) by @IWANABETHATGUY
  • rust: remove BindingIdentifierExt to use BindingIdentifier::symbol_id() instead (#8667) by @Dunqing
  • bench: add bench_preset helper and inline presets (#8658) by @Boshen
  • rust: filter external modules from entries instead of mapping bit positions (#8637) by @Dunqing

📚 Documentation

  • clarify watch mode behavior and its limitations (#8751) by @sapphi-red
  • add external link icon to GitHub button in Hero section (#8731) by @thisisnkc
  • guide: clarify that inject option is only conceptually similar to esbuild's one (#8743) by @sapphi-red
  • meta/design: add devtools.md (#8663) by @hyf0
  • add viteplus alpha announcement banner (#8668) by @shulaoda

⚡ Performance

  • rolldown: some minor perf optimization found by autoresearch (#8730) by @Brooooooklyn
  • replace Vec allocation with lazy iterator in find_hash_placeholders (#8703) by @Boshen
  • replace TypedDashMap with TypedMap in CustomField (#8708) by @Boshen
  • bench: remove scan benchmark binary to halve LTO link time (#8694) by @Boshen

🧪 Testing

⚙️ Miscellaneous Tasks

◀️ Revert

  • Revert "ci: Gate CI type-check job on node changes" (#8674) by @hyf0
  • "chore(deps): update dependency rust to v1.94.0 (#8648)" (#8660) by @shulaoda

❤️ New Contributors

Co-authored-by: shulaoda 165626830+shulaoda@users.noreply.github.com

v1.0.0-rc.9

11 Mar 11:48
Immutable release. Only release title and notes can be modified.
00f9fa1

Choose a tag to compare

[1.0.0-rc.9] - 2026-03-11

💥 BREAKING CHANGES

🚀 Features

🐛 Bug Fixes

  • rust: circular inter-chunk imports when external dynamic imports exist (#8596) by @Dunqing
  • update minify default docs from false to 'dce-only' (#8620) by @shulaoda

💼 Other

🚜 Refactor

📚 Documentation

  • update VitePress theme to 4.8.2 for narrow-screen layout regression (#8612) by @Copilot

⚡ Performance

  • merge 4 integration test binaries into 1 (#8610) by @Boshen

🧪 Testing

  • replace heavy filename_with_hash test with targeted hash fixtures (#8597) by @Boshen

⚙️ Miscellaneous Tasks

  • ci: remove redundant --no-run build step from cargo-test (#8623) by @Boshen
  • rust: use cargo-shear to toggle Cargo.toml [lib] test = bool (#8622) by @Boshen
  • deps: update test262 submodule for tests (#8611) by @sapphi-red
  • skip macOS CI jobs on pull requests (#8608) by @Copilot
  • add rust cache to repo validation job (#8607) by @Boshen
  • skip running empty bin test targets (#8605) by @Boshen
  • skip building examples in cargo-test to reduce build time (#8603) by @Boshen
  • switch plain workflow checkouts to taiki-e action (#8601) by @Boshen
  • skip Windows CI jobs on PRs (#8600) by @Boshen
  • remove unused asset module (#8594) by @shulaoda

◀️ Revert

Co-authored-by: shulaoda 165626830+shulaoda@users.noreply.github.com