Skip to content

Releases: rolldown/rolldown

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

v1.0.0-rc.8

09 Mar 04:44
Immutable release. Only release title and notes can be modified.
4c0d397

Choose a tag to compare

[1.0.0-rc.8] - 2026-03-09

🚀 Features

  • watch: enable full functional fs watcher in wasm (#8575) by @hyf0
  • watch: expose debounce related options (#8572) by @hyf0

🐛 Bug Fixes

  • detect new URL(…, import.meta.url) with no-sub template literal (#8565) by @char
  • devtools: trace dynamic imports in devtools (#8581) by @cal-gooo
  • watch: rebuild when a previously missing file is created (#8562) by @hyf0-agent
  • watch: filter out Access events to prevent infinite rebuild loop on Linux (#8557) by @hyf0-agent

🚜 Refactor

  • watch: remove auto watch for fail imports (#8585) by @hyf0
  • fs_watcher: unify the way of constructing watcher (#8571) by @hyf0
  • cli: migrate CLI to CAC (#8551) by @h-a-n-a
  • switch asset module support from hard-code to builtin plugin (#8546) by @hyf0

📚 Documentation

⚡ Performance

  • testing: share tokio runtime across fixture tests (#8567) by @Boshen

🧪 Testing

⚙️ Miscellaneous Tasks

  • docs: update in-depth/directives for output.strict option (#8535) by @minsoo-web
  • add PNPM_HOME Dev Drive mapping to Windows CI workflows (#8589) by @Boshen
  • deps: update github-actions (#8588) by @renovate[bot]
  • move Windows cargo target dir to Dev Drive (#8586) by @Boshen
  • optimize cache keys to fix race conditions and reduce usage (#8578) by @Boshen
  • remove WASI build & test pipeline (#8580) by @Boshen
  • remove unnecessary submodule checkouts (#8577) by @Boshen
  • use Dev Drive for Windows CI jobs (#8574) by @Boshen
  • skip redundant native binding build for browser and remove standalone job (#8573) by @Boshen
  • parallelize Node tests on ubuntu, single Node 24 on macOS/windows (#8570) by @Boshen
  • docs: bump @voidzero-dev/vitepress-theme to 4.8.0 (#8558) by @crusty-voidzero
  • dedupe type-check from dev server workflow (#8554) by @Boshen

❤️ New Contributors

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

v1.0.0-rc.7

05 Mar 07:06
Immutable release. Only release title and notes can be modified.
8cd2ed7

Choose a tag to compare

[1.0.0-rc.7] - 2026-03-05

⚡ Smarter Code Generation Defaults

  • DCE-only minification and smart constant inlining are now enabled by default
  • Produces cleaner, smaller output bundles without requiring explicit configuration

💡 LLM-Friendly Bundle Analyzer Reports

  • New markdown output format for the bundle analyzer plugin with bundle summaries, module graphs, dependency chains, and optimization suggestions
  • Optimization suggestions now also recommend using the entriesAware option when common chunks contain modules only reachable from specific entries

💥 BREAKING CHANGES

🚀 Features

  • binding: add original getter to BindingMagicString (#8533) by @IWANABETHATGUY
  • native-magic-string: add offset property support (#8531) by @IWANABETHATGUY
  • add output.strict option to control "use strict" directive emission (#8489) by @Copilot
  • watch: expose watcher.compareContentsForPolling (#8526) by @hyf0
  • watch: use new watcher to support watch mode (#8475) by @hyf0
  • rust/watch: handle bulk-change (#8466) by @hyf0
  • add LLM-friendly markdown output format to bundle analyzer plugin (#8242) by @IWANABETHATGUY

🐛 Bug Fixes

🚜 Refactor

  • rust: use Oxc's SymbolFlags::ConstVariable instead of custom IsConst flag (#8543) by @Dunqing
  • rust: remove FacadeScoping, use Scoping::create_symbol for facade symbols (#8540) by @Dunqing
  • rust/watch: remove hacky reset_closed_for_watch_mode (#8530) by @hyf0
  • binding: return &str instead of String in filename() getter (#8534) by @IWANABETHATGUY
  • rust: remove old watch mode implementation (#8525) by @hyf0
  • rust/watch: simply watch logic in the binding layer (#8516) by @hyf0
  • rust/watch: tweak struct/function names (#8464) by @hyf0

📚 Documentation

⚡ Performance

  • string_wizard: reduce allocations and add ASCII fast paths (#8541) by @IWANABETHATGUY
  • use IndexBitSet to replace IndexVec<XXXIdx, bool> for module/stmt inclusion tracking (#8503) by @IWANABETHATGUY
  • plugin: use IndexBitSet to optimize skipped plugins checking (#8497) by @ShroXd
  • rust/tla: skip compute_tla if there is no module use TLA (#8487) by @ShroXd

🧪 Testing

  • node/watch: make watch tests run in concurrent and retry-able (#8512) by @hyf0
  • add test case for static flag tree-shaking (#8476) by @IWANABETHATGUY
  • migrate post-banner sourcemap-with-shebang to Rust (#8477) by @Copilot

⚙️ Miscellaneous Tasks

  • vscode: formatOnSave for markdown files using oxc formatter (#8536) by @minsoo-web
  • deps: update test262 submodule for tests (#8528) by @sapphi-red
  • remove retry workaround from output paths test fixtures (#8520) by @Copilot
  • docs: add Shuyuan Wang (h-a-n-a) and remove from acknowledgements (#8509) by @Copilot
  • consolidate top_level_var test cases using configVariants (#8508) by @IWANABETHATGUY
  • add s390x and ppc64le linux gnu targets (#8493) by @Brooooooklyn

◀️ Revert

  • fix(rolldown): increase tokio blocking threads size for watch mode (#8517) by @hyf0

❤️ New Contributors

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