# What changed in listr2

> 20 changes in listr2 9 to 11 from its official release notes, upgrade guides and advisories: 5 breaking, 2 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/listr2/

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

## listr2 11

### Breaking changes

- collectErrors no longer accepts 'minimal' or 'full'; use true for the previous 'minimal' behavior. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)
- Listr.errors is now ListrError[] or null; with the default collectErrors setting, it is null instead of an empty array. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)
- ListrError.ctx is removed, and collected errors no longer contain cloned context. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)
- On interruption, tasks without a rollback are marked CANCELLED instead of FAILED; the process exits after in-flight rollbacks settle. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)

### New APIs and options

- A separate TITLE_RESET event is emitted when a title is reset. (11.3.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.3.0)
- Adds the info figure for developers to use. (11.1.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.1.0)

### Performance

- The renderer uses partial updates to render the task list. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)

### Behavior and default changes

- Retries stop when a task returns task.fail. (11.4.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.4.0)
- Setting a task's title to undefined removes the title. (11.3.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.3.0)
- The library replaces eventemitter3 with Node's built-in EventEmitter. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)
- Setting a task's streamed output to null resets it. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)

### Fixes and other changes

- The test renderer now serializes the cancelled state. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)
- cleanseAnsi now preserves OSC-8 hyperlinks. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)
- Finalized tasks no longer leak output listeners. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)
- The renderer derives wrap width from the configured output stream. (11.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4011.0.0)

## listr2 10

### Breaking changes

- Node.js 20 support was dropped because it is reaching end of life. (10.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4010.0.0)

### Tooling

- Replaces colorette with util.styleText for styling output. (10.2.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4010.2.0)

### Fixes and other changes

- Fixes a problem with statically passed values. (10.1.2) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4010.1.2)
- Suppresses specific readline close errors during cancellation cleanup on Node.js 22 and 24, while still allowing prompts to be cancelled and cleaned up. (10.0.0) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%4010.0.0)

## listr2 9

### Fixes and other changes

- Enabled checks are wrapped in a try block. (9.0.5) — [release notes](https://github.com/listr2/listr2/releases/tag/listr2%409.0.5)
