---
title: "undici Breaking Changes on npm | Since.dev"
description: "What each undici release removed, renamed or changed: 113 breaking changes in 29 versions on npm, each with its source."
canonical_url: https://since.dev/packages/npm/undici
last_updated: 2026-10-15
---

# undici breaking changes

Every breaking API change we have recorded in undici on npm: 113 breaking changes in 29 versions. Below are its newest 6 versions, removals and renames first, each with its source.

Newest change October 15, 2026

## 8.12.2

1 breaking change, first published October 15, 2026.

- **Behavior changed**  

Responses from a cross-origin redirect are now checked against their origin before caching, and redirect-hop cache-control policy is preserved. Code that relied on those responses being cached under the original URL may see cache misses. [github.com](https://github.com/nodejs/undici/releases/tag/v8.12.2)

## 8.12.0

8 breaking changes, first published October 14, 2026.

- **Behavior changed**  

Error response bodies handled by interceptors are now capped in size, so code expecting larger error bodies will receive truncated content. [github.com](https://github.com/nodejs/undici/releases/tag/v8.12.0)
- **Behavior changed**  

Zstd-compressed responses with a window size above 8 MB are no longer accepted, so such payloads will fail to decode. [github.com](https://github.com/nodejs/undici/releases/tag/v8.12.0)
- **Behavior changed**  

Request bodies of FormData types that were previously accepted are now rejected, so callers must send a supported body type. [github.com](https://github.com/nodejs/undici/releases/tag/v8.12.0)
- **Behavior changed**  

Responses with compress or x-compress content encoding are no longer inflated, so code relying on decoded bodies for those encodings receives the raw data. [github.com](https://github.com/nodejs/undici/releases/tag/v8.12.0)
- **Behavior changed**  

Code running where WebAssembly is missing will now get an error instead of the previous fallback behavior. [github.com](https://github.com/nodejs/undici/releases/tag/v8.12.0)
- **Signature changed** `errors.ResponseError.constructor`  

Was constructor (message: string, code: number, options: {headers?: IncomingHttpHeaders | string\[\] | null, body?: null | Record<string, any> | string}); now constructor (message: string, code: number, options: {headers?... [npmjs.com](https://www.npmjs.com/package/undici/v/8.12.0)
- **Signature changed** `interceptors.ResponseErrorInterceptorOpts`  

Was type ResponseErrorInterceptorOpts = {throwOnError: boolean}; now type ResponseErrorInterceptorOpts = {throwOnError?: boolean maxSize?: number}. [npmjs.com](https://www.npmjs.com/package/undici/v/8.12.0)
- **Signature changed** `interceptors.ResponseErrorInterceptorOpts.throwOnError`  

Was throwOnError: boolean; now throwOnError?: boolean. [npmjs.com](https://www.npmjs.com/package/undici/v/8.12.0)

## 7.29.1

4 breaking changes, first published September 4, 2026.

- **Behavior changed**  

Cache reads and writes are restricted to safe methods such as GET; responses to POST or DELETE are no longer stored or replayed. Invalidation by successful unsafe requests still applies. [github.com](https://github.com/nodejs/undici/releases/tag/v7.29.1)
- **Behavior changed**  

Responses containing Set-Cookie are now excluded from shared caches, including existing entries and revalidation paths. Code that relied on caching such responses will now get fresh responses. [github.com](https://github.com/nodejs/undici/releases/tag/v7.29.1)
- **Default changed**  

Every decompression stage is capped at 64 MiB unless configured otherwise via maxSize. Larger decoded responses will now fail, so users with large compressed responses must set maxSize. [github.com](https://github.com/nodejs/undici/releases/tag/v7.29.1)
- **Signature changed** `interceptors.DecompressInterceptorOpts`  

Was type DecompressInterceptorOpts = {skipErrorResponses?: boolean skipStatusCodes?: number\[\]}; now type DecompressInterceptorOpts = {skipErrorResponses?: boolean skipStatusCodes?: number\[\] maxSize?: number}. [npmjs.com](https://www.npmjs.com/package/undici/v/7.29.1)

## 7.29.0

2 breaking changes, first published July 24, 2026.

- **Behavior changed**  

Partial responses whose Content-Length does not match Content-Range are now rejected instead of being resumed. Code that relied on such responses will see errors. [github.com](https://github.com/nodejs/undici/releases/tag/v7.29.0)
- **Behavior changed** `setCookie`  

Values passed to setCookie() that were previously accepted may now be rejected. Check that domain, path and unparsed values are well-formed. [github.com](https://github.com/nodejs/undici/releases/tag/v7.29.0)

## 6.29.1

1 breaking change, first published October 15, 2026.

- **Behavior changed** `EventSource`  

EventSource now limits retained parser state, so unusually large or long-running event streams may be cut off or fail where they previously worked. Check that your server's events stay within these limits. [github.com](https://github.com/nodejs/undici/releases/tag/v6.29.1)

## 6.28.1

1 breaking change, first published September 4, 2026.

- **Behavior changed**  

The retry interceptor checks Content-Range against the original response framing before resuming, so resumed responses with inconsistent framing are no longer passed through. Code relying on such responses may now see a failure. [github.com](https://github.com/nodejs/undici/releases/tag/v6.28.1)

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
