npm / listr2
listr2
What changed in listr2 9 to 11, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-17.
5 breaking2 new APIs and options1 performance4 behavior and defaults1 tooling7 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initlistr2 1115 changes
Breaking changes 4
collectErrors no longer accepts 'minimal' or 'full'; use true for the previous 'minimal' behavior.
Listr.errors is now ListrError[] or null; with the default collectErrors setting, it is null instead of an empty array.
ListrError.ctx is removed, and collected errors no longer contain cloned context.
On interruption, tasks without a rollback are marked CANCELLED instead of FAILED; the process exits after in-flight rollbacks settle.
New APIs and options 2
A separate TITLE_RESET event is emitted when a title is reset.
Adds the info figure for developers to use.
Performance 1
The renderer uses partial updates to render the task list.
Behavior and default changes 4
Retries stop when a task returns task.fail.
Setting a task's title to undefined removes the title.
The library replaces eventemitter3 with Node's built-in EventEmitter.
Setting a task's streamed output to null resets it.
Fixes and other changes 4
The test renderer now serializes the cancelled state.
cleanseAnsi now preserves OSC-8 hyperlinks.
Finalized tasks no longer leak output listeners.
The renderer derives wrap width from the configured output stream.
listr2 104 changes
Breaking changes 1
Node.js 20 support was dropped because it is reaching end of life.
Tooling 1
Replaces colorette with util.styleText for styling output.
Fixes and other changes 2
Fixes a problem with statically passed values.
Suppresses specific readline close errors during cancellation cleanup on Node.js 22 and 24, while still allowing prompts to be cancelled and cleaned up.
listr2 91 changes
Fixes and other changes 1
Enabled checks are wrapped in a try block.