# What changed in rolldown

> 53 changes in rolldown 1 from its official release notes, upgrade guides and advisories: 2 breaking, 4 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/rolldown/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## rolldown 1

### Breaking changes

- JSON modules with a non-object root are unwrapped. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Dev mode now rejects non-ESM output formats. (1.2.12) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.12)

### New APIs and options

- Adds an option to configure output character encoding. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Adds the experimental.devMode.hotUpdate option. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Passes watch.exclude to notify as its ignore filter. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Experimental support for inlineCommonChunks lets Rolldown inline common chunks containing import() and deduplicate shared code in lazy chunks. (1.2.12) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.12)

### Performance

- Deduplicates shared code along known loading paths. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)

### Behavior and default changes

- Routes independent ESM re-exports per consumer during code splitting. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Glob imports now follow file creation and deletion via hotUpdate. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Glob imports now watch the directory each glob reads. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)

### Tooling

- Development mode records a matcher per glob call. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- The dev runtime now ships imported bindings for HMR partial accept. (1.2.12) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.12)

### Fixes and other changes

- Reports ASSIGN_TO_IMPORT for writes to re-exported namespace members. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Avoids renaming bindings to fixed names that they would capture. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- A repeated `close()` call is now a no-op. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Keeps an external `require()` local in a CJS module off the top-level names. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Prints a CommonJS module's top-level `this` as a wrapper parameter rolldown names. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Avoids renaming entry top-level bindings onto their nested bindings. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Keeps generated top-level names off inner bindings. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Keeps files loaded by the HMR stage watched when the same task rebuilds. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Watches lazily compiled files even when a build starts first. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Handles `output.charset: 'ascii'` when minification is disabled. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Keeps internal bindings out of entry exports. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Shims deep namespace reads through default imports. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Shims missing static namespace members. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Preserves sourcemap boundaries when tracing has no mapping. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Accounts for init imports during code splitting. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Avoids eager loading through mixed re-exports. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Tree-shakes expression statements that coerce known constants. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Preserves initialization of wrapped ESM re-exports during tree-shaking. (1.2.14) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.14)
- Uses computed access for arbitrary import names. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Chunk syntax errors now fail, and export names are escaped once. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Dependency paths are escaped in CJS and UMD output. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Avoids cycles caused by redundant re-export initialization. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Export names are escaped in defineProperty calls. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Devtools now honors devtools.sessionId. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Re-exports of the same external binding are treated as one export. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Imported exports now honor externalLiveBindings. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- A late payload no longer replaces newer module code. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Newly imported modules are shipped even if the client never received them. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Reloads the page when an HMR update fails after merging its edit. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Namespace properties are escaped in IIFE and UMD output. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Code splitting no longer moves init calls in front of unwrapped JSON modules. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Ships dependencies of a module that a patch shipped but never ran. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Chunk names are sanitized after resolving the relative path. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Generates valid bindings for shimmed exports. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- HMR patches and lazy chunks now read string-named imports correctly. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- HMR patches and lazy chunks now keep this undefined when calling an imported function. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- The dev module factory is async when top-level await is used. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Bare external imports now retain their with clause. (1.2.13) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.13)
- Dependencies for import.meta.hot.accept are now aligned with Vite. (1.2.12) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.12)
- The resolver cache is cleared when a file is created or deleted. (1.2.12) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.12)
- Unresolved import diagnostics now name the resolved specifier. (1.2.12) — [release notes](https://github.com/rolldown/rolldown/releases/tag/v1.2.12)
