# What changed in serialize-error

> 9 changes in serialize-error 13 from its official release notes, upgrade guides and advisories: 2 breaking, 1 new APIs and options. Each one cited. Sources checked 2026-10-24. HTML: https://unstale.sh/npm/serialize-error/

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

## serialize-error 13

### Breaking changes

- Node.js 20 is now required to run serialize-error. (13.0.0) — [release notes](https://github.com/sindresorhus/serialize-error/releases/tag/v13.0.0)
- Non-error values are now serialized to a NonError error. (13.0.0) — [release notes](https://github.com/sindresorhus/serialize-error/releases/tag/v13.0.0)

### New APIs and options

- Factory functions can now be used for incompatible error constructors. (13.0.0) — [release notes](https://github.com/sindresorhus/serialize-error/releases/tag/v13.0.0)

### Performance

- Circular reference detection performance is fixed. (13.0.1) — [release notes](https://github.com/sindresorhus/serialize-error/releases/tag/v13.0.1)

### Fixes and other changes

- A throwing toJSON() no longer prevents later calls for the same object. (13.0.2) — [release notes](https://github.com/sindresorhus/serialize-error/releases/tag/v13.0.2)
- Plain objects in error properties are now recursively processed. (13.0.1) — [release notes](https://github.com/sindresorhus/serialize-error/releases/tag/v13.0.1)
- NonError deserialization now round-trips correctly. (13.0.1) — [release notes](https://github.com/sindresorhus/serialize-error/releases/tag/v13.0.1)
- The function now works with minified code. (13.0.0) — [release notes](https://github.com/sindresorhus/serialize-error/releases/tag/v13.0.0)
- Deserialization now preserves complex values. (13.0.0) — [release notes](https://github.com/sindresorhus/serialize-error/releases/tag/v13.0.0)
