# What changed in cockatiel

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

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

## cockatiel 4

### Breaking changes

- Policy errors are no longer cast via as Error; callback and result types now use unknown for thrown values. (4.0.0) — [release notes](https://github.com/connor4312/cockatiel/blob/HEAD/changelog.md)
- cockatiel is now built as an ES module, which changes how it can be consumed. (4.0.0) — [release notes](https://github.com/connor4312/cockatiel/blob/HEAD/changelog.md)
- The minimum supported Node version is now 22. (4.0.0) — [release notes](https://github.com/connor4312/cockatiel/blob/HEAD/changelog.md)

### New APIs and options

- Adds the halfOpenSampling option to the circuit breaker. (4.0.0) — [release notes](https://github.com/connor4312/cockatiel/blob/HEAD/changelog.md)

### Behavior and default changes

- The abort signal is now propagated into the circuit breaker’s half-open state. (4.0.0) — [release notes](https://github.com/connor4312/cockatiel/blob/HEAD/changelog.md)

### Fixes and other changes

- Fixes queue starvation when queued executions are aborted. (4.0.0) — [release notes](https://github.com/connor4312/cockatiel/blob/HEAD/changelog.md)
- Getters and setters now deep-copy state via structuredClone. (4.0.0) — [release notes](https://github.com/connor4312/cockatiel/blob/HEAD/changelog.md)
- Derived signals now propagate the abort reason. (4.0.0) — [release notes](https://github.com/connor4312/cockatiel/blob/HEAD/changelog.md)
- Corrects the type predicates for errors. (4.0.0) — [release notes](https://github.com/connor4312/cockatiel/blob/HEAD/changelog.md)
- Getters and setters now deep-copy state via structuredClone. (4.0.0) — [release notes](https://github.com/connor4312/cockatiel/blob/HEAD/changelog.md)
