unstale

npm / rolldown

rolldown

What changed in rolldown 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

2 breaking4 new APIs and options1 performance3 behavior and defaults2 tooling41 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

rolldown 153 changes

Breaking changes 2

  • JSON modules with a non-object root are unwrapped.

    1.2.13release notes

  • Dev mode now rejects non-ESM output formats.

    1.2.12release notes

New APIs and options 4

  • Adds an option to configure output character encoding.

    1.2.14release notes

  • Adds the experimental.devMode.hotUpdate option.

    1.2.13release notes

  • Passes watch.exclude to notify as its ignore filter.

    1.2.13release notes

  • Experimental support for inlineCommonChunks lets Rolldown inline common chunks containing import() and deduplicate shared code in lazy chunks.

    1.2.12release notes

Performance 1

  • Deduplicates shared code along known loading paths.

    1.2.13release notes

Behavior and default changes 3

  • Routes independent ESM re-exports per consumer during code splitting.

    1.2.14release notes

  • Glob imports now follow file creation and deletion via hotUpdate.

    1.2.13release notes

  • Glob imports now watch the directory each glob reads.

    1.2.13release notes

Tooling 2

  • Development mode records a matcher per glob call.

    1.2.13release notes

  • The dev runtime now ships imported bindings for HMR partial accept.

    1.2.12release notes

Fixes and other changes 41

  • Reports ASSIGN_TO_IMPORT for writes to re-exported namespace members.

    1.2.14release notes

  • Avoids renaming bindings to fixed names that they would capture.

    1.2.14release notes

  • A repeated close() call is now a no-op.

    1.2.14release notes

  • Keeps an external require() local in a CJS module off the top-level names.

    1.2.14release notes

  • Prints a CommonJS module's top-level this as a wrapper parameter rolldown names.

    1.2.14release notes

  • Avoids renaming entry top-level bindings onto their nested bindings.

    1.2.14release notes

  • Keeps generated top-level names off inner bindings.

    1.2.14release notes

  • Keeps files loaded by the HMR stage watched when the same task rebuilds.

    1.2.14release notes

  • Watches lazily compiled files even when a build starts first.

    1.2.14release notes

  • Handles output.charset: 'ascii' when minification is disabled.

    1.2.14release notes

  • Keeps internal bindings out of entry exports.

    1.2.14release notes

  • Shims deep namespace reads through default imports.

    1.2.14release notes

  • Shims missing static namespace members.

    1.2.14release notes

  • Preserves sourcemap boundaries when tracing has no mapping.

    1.2.14release notes

  • Accounts for init imports during code splitting.

    1.2.14release notes

  • Avoids eager loading through mixed re-exports.

    1.2.14release notes

  • Tree-shakes expression statements that coerce known constants.

    1.2.14release notes

  • Preserves initialization of wrapped ESM re-exports during tree-shaking.

    1.2.14release notes

  • Uses computed access for arbitrary import names.

    1.2.13release notes

  • Chunk syntax errors now fail, and export names are escaped once.

    1.2.13release notes

  • Dependency paths are escaped in CJS and UMD output.

    1.2.13release notes

  • Avoids cycles caused by redundant re-export initialization.

    1.2.13release notes

  • Export names are escaped in defineProperty calls.

    1.2.13release notes

  • Devtools now honors devtools.sessionId.

    1.2.13release notes

  • Re-exports of the same external binding are treated as one export.

    1.2.13release notes

  • Imported exports now honor externalLiveBindings.

    1.2.13release notes

  • A late payload no longer replaces newer module code.

    1.2.13release notes

  • Newly imported modules are shipped even if the client never received them.

    1.2.13release notes

  • Reloads the page when an HMR update fails after merging its edit.

    1.2.13release notes

  • Namespace properties are escaped in IIFE and UMD output.

    1.2.13release notes

  • Code splitting no longer moves init calls in front of unwrapped JSON modules.

    1.2.13release notes

  • Ships dependencies of a module that a patch shipped but never ran.

    1.2.13release notes

  • Chunk names are sanitized after resolving the relative path.

    1.2.13release notes

  • Generates valid bindings for shimmed exports.

    1.2.13release notes

  • HMR patches and lazy chunks now read string-named imports correctly.

    1.2.13release notes

  • HMR patches and lazy chunks now keep this undefined when calling an imported function.

    1.2.13release notes

  • The dev module factory is async when top-level await is used.

    1.2.13release notes

  • Bare external imports now retain their with clause.

    1.2.13release notes

  • Dependencies for import.meta.hot.accept are now aligned with Vite.

    1.2.12release notes

  • The resolver cache is cleared when a file is created or deleted.

    1.2.12release notes

  • Unresolved import diagnostics now name the resolved specifier.

    1.2.12release notes