npm / @rolldown/browser
@rolldown/browser
What changed in @rolldown/browser 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-19.
1 breaking4 new APIs and options2 performance2 behavior and defaults48 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@rolldown/browser 157 changes
Breaking changes 1
Rejects non-ESM output formats in dev mode.
New APIs and options 4
Adds the output.charset option to configure output character encoding.
Adds an option for experimental dev-mode hot updates.
Ships imported bindings for HMR partial accept.
Adds experimental support for inlining common chunks containing import() and deduplicating shared code in lazy chunks.
Performance 2
Deduplicates shared code along known loading paths, reducing duplicate code in inline common chunks.
In dev, ships only rows with dynamic edges in registerGraph.
Behavior and default changes 2
Routes independent ESM re-exports per consumer during code splitting.
Passes the watch exclusion setting to notify as its ignore filter.
Fixes and other changes 48
Reports ASSIGN_TO_IMPORT when code writes to re-exported namespace members.
Makes repeated close() calls a no-op.
Prints a CommonJS module's top-level this as a wrapper parameter named by Rolldown.
Watches lazily compiled files even when a build starts first.
Keeps files loaded by the HMR stage watched when the same task rebuilds.
Handles output.charset set to 'ascii' when output.minify is false.
Keeps internal bindings out of entry exports.
Avoids assigning fixed names to bindings that would capture them.
Keeps an external require() local in a CJS module off the top-level names.
Avoids renaming entry top-level bindings onto their nested bindings.
Keeps generated top-level names off inner bindings.
Shims deep namespace reads through default imports.
Shims missing static namespace members.
Preserves sourcemap boundaries when tracing has no mapping.
Accounts for init imports during code splitting.
Avoids eager loading through mixed re-exports.
Preserves initialization of wrapped ESM re-exports during tree-shaking.
Tree-shakes expression statements that coerce known constants.
Uses computed access for arbitrary import names.
Fails on chunk syntax errors and escapes export names once.
Escapes dependency paths in CJS output.
Avoids cycles caused by redundant re-export initialization.
Escapes export names in defineProperty calls.
Devtools now honors the configured session ID.
Treats re-exports of the same external binding as one export.
Honors externalLiveBindings for imported exports.
Imported function calls in HMR patches keep
thisundefined, matching the expected call behavior.Prevents a late payload from replacing newer module code.
Reloads the page when an HMR update fails after merging its edit.
Ships newly imported modules that the client has not received.
Escapes namespace properties in IIFE output.
Avoids moving initialization calls in front of unwrapped JSON modules.
Ships dependencies of a module when a patch shipped that module but never ran.
Sanitizes preserveModules chunk names after resolving the relative path.
Each renderChunk call receives its own meta object.
Generates valid bindings for shimmed exports.
Reads string-named imports correctly in HMR patches and lazy chunks.
Makes the dev module factory async to support top-level await.
Escapes namespace properties and dependency paths in UMD output.
Keeps the
withclause on bare external imports.Re-derives chunk execution orders after the runtime leaves its host chunk.
Makes entries-aware chunk merging deterministic.
Aligns dependency handling with Vite.
Avoids restarting the macOS watcher for unchanged paths.
Gates member-read initialization paths on the reading statement.
Retains initialization paths through re-exported namespaces.
Clears the resolver cache when a file is created or deleted.
Names the resolved specifier in unresolved import diagnostics.