chore(deps): Update dependency undici@>=7.0.0 <7.28.0 to v8 #88

Merged
ullrich merged 1 commit from renovate/undici-=7.0.0-7.28.0-8.x into main 2026-08-20 13:51:12 +00:00
Collaborator

This PR contains the following updates:

Package Change Age Confidence
undici@>=7.0.0 <7.28.0 (source) [7.29.08.10.0](https://renovatebot.com/diffs/npm/undici@>=7.0.0 <7.28.0/7.29.0/8.10.0) age confidence

Release Notes

nodejs/undici (undici@>=7.0.0 <7.28.0)

v8.10.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v8.9.0...v8.10.0

v8.9.0

Compare Source

⚠️ Security fixes

High severity
  • GHSA-4cwx-7wf7-3272: malformed qualified private Cache-Control directives could cause cross-user information disclosure in shared caches or a parse-time crash. The cache parser now treats empty qualified directives conservatively and safely handles mixed qualified and unqualified directives. Fixed by 4fe5bc5f with regression coverage in 9f09b49a.
Medium severity
  • GHSA-m8rv-5g2x-5cg5: a malicious type property on a duck-typed blob-like HTTP/1.1 request body could inject CRLF sequences into the generated content-type header. Undici now coerces and validates the value before adding it to the request. Fixed by 7d3cf924.
  • GHSA-jr45-8vmc-qm54: optional whitespace around = in qualified no-cache and private directives could bypass shared-cache restrictions and disclose authenticated data across users. Cache-Control parsing now normalizes these forms and applies conservative cache decisions. Fixed by c601fff1.
  • GHSA-8xcm-r25x-g524: the retry interceptor could expose a stale Content-Length after resuming a partial response, potentially causing downstream response desynchronization, hangs, or corruption. Undici now rejects partial responses whose Content-Length is inconsistent with Content-Range. Fixed by e11a68ed, with corrected fixtures in 2b3f7493.
  • GHSA-v3r7-h72x-cjcm: unsanitized domain and unparsed values passed to setCookie() could inject cookie attributes. Undici now validates cookie domains, paths, and unparsed attributes more strictly. Fixed by 10d93fc3.

Additional hardening

Undici now validates non-string header values after coercion, including array elements, preventing crafted toString() or Symbol.toPrimitive implementations from introducing CRLF sequences. This defense-in-depth change was made in 354a151f.

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v8.8.0...v8.9.0

v8.8.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v8.7.0...v8.8.0

v8.7.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v8.6.0...v8.7.0

v8.6.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v8.5.0...v8.6.0

v8.5.0

Compare Source

⚠️ Security Release

This release line addresses 8 security advisories. Most are fixed in
v8.5.0; the SOCKS5 pool-reuse issue was fixed earlier in v8.2.0.

Action required: Upgrade to undici 8.5.0 or later.

npm install undici@^8.5.0

Summary

Advisory CVE Severity (CVSS) Fixed in Fix commit
GHSA-vxpw-j846-p89q CVE-2026-12151 High (7.5) 8.5.0 32dbf0b3
GHSA-38rv-x7px-6hhq CVE-2026-9675 High (7.5) 8.5.0 b4c287b3
GHSA-vmh5-mc38-953g CVE-2026-9697 High (7.4) 8.5.0 42d49559
GHSA-hm92-r4w5-c3mj CVE-2026-6734 High (7.5) 8.2.0 a516f870
GHSA-pr7r-676h-xcf6 CVE-2026-9678 Moderate (5.9) 8.5.0 cb105d7c
GHSA-p88m-4jfj-68fv CVE-2026-9679 Moderate (5.9) 8.5.0 5655ea43
GHSA-g8m3-5g58-fq7m CVE-2026-11525 Low (3.7) 8.5.0 5655ea43
GHSA-35p6-xmwp-9g52 CVE-2026-6733 Low (3.7) 8.5.0 6ea54ef8

High severity

WebSocket DoS via fragment count bypass — CVE-2026-12151

GHSA-vxpw-j846-p89q · CWE-400, CWE-770
Fix: 32dbf0b3 websocket: limit the number of fragments in a message (also c5ed7875 handle empty fragments and stream limits)

A malicious WebSocket server can stream a large number of small or empty
continuation frames. Undici enforced a limit on cumulative payload size but did
not limit the number of fragments per message, leading to unbounded memory
growth and denial of service.

  • Affected: applications using new WebSocket(...) or WebSocketStream
    against untrusted endpoints.
  • Workaround: none — upgrade is required.
WebSocket DoS via cumulative fragment bypass — CVE-2026-9675

GHSA-38rv-x7px-6hhq · CWE-400, CWE-770
Fix: b4c287b3 fix(websocket): enforce max payload size across fragments

Undici validated the size of individual frames but did not track cumulative size
across a fragmented message. An attacker could send many small fragments that
each pass per-frame validation but collectively exceed the configured limit,
causing memory exhaustion. This is a regression introduced in 8.1.0 (the
6.x and 7.x lines are not affected).

  • Workaround: none — upgrade is required.
TLS certificate validation bypass in SOCKS5 ProxyAgent — CVE-2026-9697

GHSA-vmh5-mc38-953g · CWE-295
Fix: 42d49559 fix: honor requestTls when proxy is SOCKS5

The ProxyAgent silently discarded the requestTls option when configured with
a SOCKS5 proxy. TLS connections through the SOCKS5 tunnel ignored user-configured
parameters such as ca, cert, key, rejectUnauthorized, and servername,
falling back to the default Mozilla CA bundle. Applications relying on
certificate pinning to an internal CA were exposed to man-in-the-middle attacks.

  • Affected: ProxyAgent / Socks5ProxyAgent over SOCKS5 that rely on
    requestTls.
  • Workaround: route traffic through an HTTP-proxy ProxyAgent, where
    requestTls functions correctly.
Cross-origin request routing via SOCKS5 proxy pool reuse — CVE-2026-6734

GHSA-hm92-r4w5-c3mj · CWE-346 · Fixed in 8.2.0
Fix: a516f870 fix(socks5-proxy-agent): use per-origin pools to prevent cross-origin routing (#​5041)

Socks5ProxyAgent reused a single connection pool across different origins
without verifying the pool's origin matched the requested origin. This could
route credentials and request data to unintended destinations, cause responses
from the wrong origin to be trusted, and enable HTTPS→HTTP downgrade.

  • Affected: applications using Socks5ProxyAgent across multiple origins
    (introduced via #​4385).
  • Workaround: use a separate agent instance per origin.

Moderate severity

Cross-user information disclosure via shared cache whitespace bypass — CVE-2026-9678

GHSA-pr7r-676h-xcf6 · CWE-524
Fix: cb105d7c fix(cache): trim qualified field names

The cache interceptor mishandled responses with whitespace-padded
Cache-Control directives such as private=" authorization". In shared-cache
mode this could cause authenticated data to be cached and served to other users.

  • Affected: apps using the cache interceptor in shared mode that forward
    Authorization upstream and receive non-canonical qualified directives.
  • Workaround: disable shared-cache mode for authenticated traffic, avoid
    caching authenticated responses, or add Vary: Authorization upstream.

GHSA-p88m-4jfj-68fv · CWE-93
Fix: 5655ea43 fix(cookies): preserve values and parse SameSite strictly

parseSetCookie applied percent-decoding to cookie values, turning encoded
sequences like %0D%0A and %00 into literal bytes, contrary to RFC 6265 §5.4
and browser behavior. Applications forwarding parsed Set-Cookie values into
response headers were exposed to header injection, enabling session fixation,
open redirects, and cache poisoning. Introduced in 7.0.0 via
#​3789.

  • Workaround: sanitize values before forwarding — strip or reject CR, LF,
    NUL, ;, and =.

Low severity

GHSA-g8m3-5g58-fq7m · CWE-183
Fix: 5655ea43 fix(cookies): preserve values and parse SameSite strictly

The cookie parser accepted SameSite values containing Strict, Lax, or
None as substrings rather than requiring exact matches per RFC 6265. Values
like SameSite=NoneOfYourBusiness parsed as None, and SameSite=StrictLax
parsed as Lax, silently weakening cookie security policies for apps that
forward parsed attributes.

HTTP response queue poisoning via keep-alive socket reuse — CVE-2026-6733

GHSA-35p6-xmwp-9g52 · CWE-367 (TOCTOU race condition)
Fix: 6ea54ef8 fix: guard idle socket validation to skip fresh sockets, hardened by c9fbe9d2 keep idle validation on native timers (#​5397) and ac5394b8 keep idle validation on global timers (#​5407)

An attacker controlling an upstream HTTP/1.1 server could inject unsolicited
responses onto idle keep-alive sockets. On socket reuse, the injected response
was associated with a new request, delivering responses to the wrong requests.

  • Requirements: attacker-controlled/compromised upstream and active
    keep-alive reuse.
  • Workaround: disable keep-alive reuse with keepAliveTimeout: 0 on the
    Client or Pool.

Also in v8.5.0 (non-security)

v8.5.0 shipped the security fixes above alongside the following changes. These
are not security fixes
— they are listed for completeness of the release. (The
two queue-poisoning hardening PRs, #​5397
and #​5407, are covered under
CVE-2026-6733 above and are not repeated here.)

  • HTTP/2: #5408 don't rewind kPendingIdx past in-flight requests · #5391 allow h2 POST request multiplexing · #5406 reap idle HTTP/2 sessions · #5410 preserve h2 queue on out-of-order completion
  • Features: #5416 add bodyMixin.textStream() · #5418 align EventSource with spec
  • Docs / CI / tests: #5413 document request header validation · #5383 absorb h2 stream timeout resets (test) · #5420 remove stale repro + lint · #5426 extend Windows CI timeout · #5427 detect available python in WPT runner

Full changelog: v8.4.1...v8.5.0.


Credits

Per-advisory credits (as recorded in each GHSA):

v8.4.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v8.4.0...v8.4.1

v8.4.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v8.3.0...v8.4.0

v8.3.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v8.2.0...v8.3.0

v8.2.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v8.1.0...v8.2.0

v8.1.0

Compare Source

What's Changed

Full Changelog: https://github.com/nodejs/undici/compare/v8.0.3...v8.1.0

v8.0.3

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v8.0.2...v8.0.3

v8.0.2

Compare Source

What's Changed

Full Changelog: https://github.com/nodejs/undici/compare/v8.0.1...v8.0.2

v8.0.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/nodejs/undici/compare/v7.24.7...v8.0.1

v8.0.0

Compare Source

What's Changed

Full Changelog: https://github.com/nodejs/undici/compare/v7.24.7...v8.0.0


Configuration

📅 Schedule: (in timezone Europe/Copenhagen)

  • Branch creation
    • "before 6am on monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [undici@>=7.0.0 <7.28.0](https://undici.nodejs.org) ([source](https://github.com/nodejs/undici)) | [`7.29.0` → `8.10.0`](https://renovatebot.com/diffs/npm/undici@>=7.0.0 <7.28.0/7.29.0/8.10.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/undici/8.10.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/undici/7.29.0/8.10.0?slim=true) | --- ### Release Notes <details> <summary>nodejs/undici (undici@>=7.0.0 <7.28.0)</summary> ### [`v8.10.0`](https://github.com/nodejs/undici/releases/tag/v8.10.0) [Compare Source](https://github.com/nodejs/undici/compare/v8.9.0...v8.10.0) #### What's Changed - feat: namespace h2 options by [@&#8203;metcoder95](https://github.com/metcoder95) in [#&#8203;5498](https://github.com/nodejs/undici/pull/5498) - test: update WPT expectations by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5587](https://github.com/nodejs/undici/pull/5587) - test: add cache/dedupe + dns re-dispatch integration tests by [@&#8203;GiHoon1123](https://github.com/GiHoon1123) in [#&#8203;5535](https://github.com/nodejs/undici/pull/5535) - fix(websocket): support process.unref by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5578](https://github.com/nodejs/undici/pull/5578) - fix(h2): ensure every request settles by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5603](https://github.com/nodejs/undici/pull/5603) - fix(readable): consume a body whose end has already been emitted by [@&#8203;marko1olo](https://github.com/marko1olo) in [#&#8203;5617](https://github.com/nodejs/undici/pull/5617) - fix(retry): skip the content-length checkpoint for HEAD and for a 206 without content-range by [@&#8203;marko1olo](https://github.com/marko1olo) in [#&#8203;5610](https://github.com/nodejs/undici/pull/5610) - fix: revert idle socket validation to setTimeout(0) to prevent stall on idle event loop by [@&#8203;marceli1404](https://github.com/marceli1404) in [#&#8203;5606](https://github.com/nodejs/undici/pull/5606) - fix(env-http-proxy-agent): match bare IPv6 addresses in no\_proxy by [@&#8203;marko1olo](https://github.com/marko1olo) in [#&#8203;5623](https://github.com/nodejs/undici/pull/5623) - test: handle aggregate balanced pool errors by [@&#8203;marko1olo](https://github.com/marko1olo) in [#&#8203;5377](https://github.com/nodejs/undici/pull/5377) - fix(readable): keep body bytes that arrive after setEncoding() by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5620](https://github.com/nodejs/undici/pull/5620) - fix(socks5): evict unused origin pools by [@&#8203;Kkartik14](https://github.com/Kkartik14) in [#&#8203;5595](https://github.com/nodejs/undici/pull/5595) - fix: skip deduplication for upgrade requests by [@&#8203;Ram-blip](https://github.com/Ram-blip) in [#&#8203;5593](https://github.com/nodejs/undici/pull/5593) - fix(retry): forward informational responses by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5625](https://github.com/nodejs/undici/pull/5625) - fix(mock): non-string path matchers under ignoreTrailingSlash, and DataView reply bodies by [@&#8203;marko1olo](https://github.com/marko1olo) in [#&#8203;5619](https://github.com/nodejs/undici/pull/5619) - fix(interceptors): cache() and deduplicate() silently inert on Client/Pool without opts.origin by [@&#8203;marko1olo](https://github.com/marko1olo) in [#&#8203;5628](https://github.com/nodejs/undici/pull/5628) - build(deps): bump ossf/scorecard-action from 2.4.3 to 2.4.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5633](https://github.com/nodejs/undici/pull/5633) - build(deps): bump github/codeql-action/init from 4.36.2 to 4.37.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5634](https://github.com/nodejs/undici/pull/5634) - build(deps): bump actions/setup-node from 6.4.0 to 7.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5636](https://github.com/nodejs/undici/pull/5636) - fix(mock): emit request body lifecycle hooks by [@&#8203;marko1olo](https://github.com/marko1olo) in [#&#8203;5367](https://github.com/nodejs/undici/pull/5367) - fix(h2): detach upgrade close handler after GOAWAY by [@&#8203;pacocartones](https://github.com/pacocartones) in [#&#8203;5641](https://github.com/nodejs/undici/pull/5641) - fix: retry refused HTTP/2 streams by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5598](https://github.com/nodejs/undici/pull/5598) - fix: preserve DNS origin hostname on sockets by [@&#8203;cyphercodes](https://github.com/cyphercodes) in [#&#8203;5577](https://github.com/nodejs/undici/pull/5577) #### New Contributors - [@&#8203;marceli1404](https://github.com/marceli1404) made their first contribution in [#&#8203;5606](https://github.com/nodejs/undici/pull/5606) - [@&#8203;Kkartik14](https://github.com/Kkartik14) made their first contribution in [#&#8203;5595](https://github.com/nodejs/undici/pull/5595) - [@&#8203;pacocartones](https://github.com/pacocartones) made their first contribution in [#&#8203;5641](https://github.com/nodejs/undici/pull/5641) - [@&#8203;cyphercodes](https://github.com/cyphercodes) made their first contribution in [#&#8203;5577](https://github.com/nodejs/undici/pull/5577) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.9.0...v8.10.0> ### [`v8.9.0`](https://github.com/nodejs/undici/releases/tag/v8.9.0) [Compare Source](https://github.com/nodejs/undici/compare/v8.8.0...v8.9.0) #### ⚠️ Security fixes ##### High severity - [GHSA-4cwx-7wf7-3272](https://github.com/nodejs/undici/security/advisories/GHSA-4cwx-7wf7-3272): malformed qualified `private` Cache-Control directives could cause cross-user information disclosure in shared caches or a parse-time crash. The cache parser now treats empty qualified directives conservatively and safely handles mixed qualified and unqualified directives. Fixed by [4fe5bc5f](https://github.com/nodejs/undici/commit/4fe5bc5fefe5ac81a200fc8e1cf84b8bf8464451) with regression coverage in [9f09b49a](https://github.com/nodejs/undici/commit/9f09b49accd391cca818409447f2fb8bc93229b3). ##### Medium severity - [GHSA-m8rv-5g2x-5cg5](https://github.com/nodejs/undici/security/advisories/GHSA-m8rv-5g2x-5cg5): a malicious `type` property on a duck-typed blob-like HTTP/1.1 request body could inject CRLF sequences into the generated `content-type` header. Undici now coerces and validates the value before adding it to the request. Fixed by [7d3cf924](https://github.com/nodejs/undici/commit/7d3cf924c262c486bc77f951348f4e5c847b7b42). - [GHSA-jr45-8vmc-qm54](https://github.com/nodejs/undici/security/advisories/GHSA-jr45-8vmc-qm54): optional whitespace around `=` in qualified `no-cache` and `private` directives could bypass shared-cache restrictions and disclose authenticated data across users. Cache-Control parsing now normalizes these forms and applies conservative cache decisions. Fixed by [c601fff1](https://github.com/nodejs/undici/commit/c601fff1c56eca84438c3ed4ecb39404252be622). - [GHSA-8xcm-r25x-g524](https://github.com/nodejs/undici/security/advisories/GHSA-8xcm-r25x-g524): the retry interceptor could expose a stale `Content-Length` after resuming a partial response, potentially causing downstream response desynchronization, hangs, or corruption. Undici now rejects partial responses whose `Content-Length` is inconsistent with `Content-Range`. Fixed by [e11a68ed](https://github.com/nodejs/undici/commit/e11a68ed4ff345c79402476f7a00d473443e318d), with corrected fixtures in [2b3f7493](https://github.com/nodejs/undici/commit/2b3f749336d356bbbc50192f87f6cf7bc714721a). - [GHSA-v3r7-h72x-cjcm](https://github.com/nodejs/undici/security/advisories/GHSA-v3r7-h72x-cjcm): unsanitized `domain` and `unparsed` values passed to `setCookie()` could inject cookie attributes. Undici now validates cookie domains, paths, and unparsed attributes more strictly. Fixed by [10d93fc3](https://github.com/nodejs/undici/commit/10d93fc332f2c8c161982dec3833201de29891b5). #### Additional hardening Undici now validates non-string header values after coercion, including array elements, preventing crafted `toString()` or `Symbol.toPrimitive` implementations from introducing CRLF sequences. This defense-in-depth change was made in [354a151f](https://github.com/nodejs/undici/commit/354a151f615f03d72f6aff02f3ad18a7e99a72b5). #### What's Changed - fix(decompress): preserve response trailers by [@&#8203;Ram-blip](https://github.com/Ram-blip) in [#&#8203;5572](https://github.com/nodejs/undici/pull/5572) - build(deps-dev): bump ws from 8.21.0 to 8.21.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5576](https://github.com/nodejs/undici/pull/5576) - fix: validate coerced header values for CRLF by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5579](https://github.com/nodejs/undici/pull/5579) - fix: handle frozen globalThis in setGlobalDispatcher by [@&#8203;mhayk](https://github.com/mhayk) in [#&#8203;5574](https://github.com/nodejs/undici/pull/5574) - Ignore auto-generated .npmrc on Windows by [@&#8203;tsctx](https://github.com/tsctx) in [#&#8203;5583](https://github.com/nodejs/undici/pull/5583) #### New Contributors - [@&#8203;mhayk](https://github.com/mhayk) made their first contribution in [#&#8203;5574](https://github.com/nodejs/undici/pull/5574) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.8.0...v8.9.0> ### [`v8.8.0`](https://github.com/nodejs/undici/releases/tag/v8.8.0) [Compare Source](https://github.com/nodejs/undici/compare/v8.7.0...v8.8.0) #### What's Changed - fetch: use ReadableStreamTee for cloning streams by [@&#8203;KhafraDev](https://github.com/KhafraDev) in [#&#8203;5517](https://github.com/nodejs/undici/pull/5517) - fix(benchmarks): adjust got after v15 upgrade by [@&#8203;slagiewka](https://github.com/slagiewka) in [#&#8203;5526](https://github.com/nodejs/undici/pull/5526) - feat(mock): support asynchronous reply options callbacks by [@&#8203;Develop-KIM](https://github.com/Develop-KIM) in [#&#8203;5534](https://github.com/nodejs/undici/pull/5534) - docs: clarify proxy threat model by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5530](https://github.com/nodejs/undici/pull/5530) - docs: clarify MockAgent pool usage by [@&#8203;vibhor-aggr](https://github.com/vibhor-aggr) in [#&#8203;5542](https://github.com/nodejs/undici/pull/5542) - docs: clarify parser timeout precision by [@&#8203;vibhor-aggr](https://github.com/vibhor-aggr) in [#&#8203;5543](https://github.com/nodejs/undici/pull/5543) - fix: handle flat alternating header arrays in cache normalizeHeaders by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5536](https://github.com/nodejs/undici/pull/5536) - chore(benchmarks): require(esm) on ESM-only packages by [@&#8203;slagiewka](https://github.com/slagiewka) in [#&#8203;5527](https://github.com/nodejs/undici/pull/5527) - fix: run idle socket validation off setImmediate instead of setTimeout by [@&#8203;carlotestor](https://github.com/carlotestor) in [#&#8203;5499](https://github.com/nodejs/undici/pull/5499) - docs: add custom interceptor example by [@&#8203;vibhor-aggr](https://github.com/vibhor-aggr) in [#&#8203;5548](https://github.com/nodejs/undici/pull/5548) - fix(h1): ignore type of service errors by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5547](https://github.com/nodejs/undici/pull/5547) - fix(fetch): convert null init in Response.json by [@&#8203;Ram-blip](https://github.com/Ram-blip) in [#&#8203;5540](https://github.com/nodejs/undici/pull/5540) - fix(redirect): remove body headers after POST-to-GET by [@&#8203;Ram-blip](https://github.com/Ram-blip) in [#&#8203;5551](https://github.com/nodejs/undici/pull/5551) - build(deps-dev): bump fast-check from 4.8.0 to 4.9.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5556](https://github.com/nodejs/undici/pull/5556) - fix(h2): allow stream-bodied requests to multiplex on a busy session by [@&#8203;GiHoon1123](https://github.com/GiHoon1123) in [#&#8203;5538](https://github.com/nodejs/undici/pull/5538) - fix(h2): destroy aborted stream synchronously instead of via setImmediate by [@&#8203;staylor](https://github.com/staylor) in [#&#8203;5559](https://github.com/nodejs/undici/pull/5559) - fix(decompress): skip HEAD responses by [@&#8203;Ram-blip](https://github.com/Ram-blip) in [#&#8203;5564](https://github.com/nodejs/undici/pull/5564) - ci: build undici with node.js v26 by [@&#8203;shivarm](https://github.com/shivarm) in [#&#8203;5237](https://github.com/nodejs/undici/pull/5237) - docs: clarify top-level request option url fields by [@&#8203;vibhor-aggr](https://github.com/vibhor-aggr) in [#&#8203;5545](https://github.com/nodejs/undici/pull/5545) - test: add unexpected disconnect guards to http2 tests by [@&#8203;Develop-KIM](https://github.com/Develop-KIM) in [#&#8203;5533](https://github.com/nodejs/undici/pull/5533) - fix: track origins by client map key in Agent teardown by [@&#8203;emmayusufu](https://github.com/emmayusufu) in [#&#8203;5537](https://github.com/nodejs/undici/pull/5537) - fix: enforce must-revalidate and proxy-revalidate over max-stale and stale-if-error by [@&#8203;jeswr](https://github.com/jeswr) in [#&#8203;5511](https://github.com/nodejs/undici/pull/5511) - fix(retry): handle Retry-After zero delay by [@&#8203;Ram-blip](https://github.com/Ram-blip) in [#&#8203;5519](https://github.com/nodejs/undici/pull/5519) - fix: honor stale-if-error on connection errors during revalidation by [@&#8203;jeswr](https://github.com/jeswr) in [#&#8203;5513](https://github.com/nodejs/undici/pull/5513) - fix: store revalidation-only responses so etag revalidation can engage by [@&#8203;jeswr](https://github.com/jeswr) in [#&#8203;5515](https://github.com/nodejs/undici/pull/5515) - fix(h2): prevent uncaughtException from onHttp2SocketError accessing undefined kClient by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5546](https://github.com/nodejs/undici/pull/5546) - fix(h2): complete request stream on 'end' instead of waiting for 'close' by [@&#8203;staylor](https://github.com/staylor) in [#&#8203;5560](https://github.com/nodejs/undici/pull/5560) - fix: invalidate Location and Content-Location URIs on unsafe methods by [@&#8203;jeswr](https://github.com/jeswr) in [#&#8203;5514](https://github.com/nodejs/undici/pull/5514) - test: deflake invalid websocket close status test by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5550](https://github.com/nodejs/undici/pull/5550) - refactor: replace tspl with node:test t.plan in connect-timeout tests by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5518](https://github.com/nodejs/undici/pull/5518) - fix(h2): release completed requests from queue by [@&#8203;staylor](https://github.com/staylor) in [#&#8203;5569](https://github.com/nodejs/undici/pull/5569) #### New Contributors - [@&#8203;Develop-KIM](https://github.com/Develop-KIM) made their first contribution in [#&#8203;5534](https://github.com/nodejs/undici/pull/5534) - [@&#8203;carlotestor](https://github.com/carlotestor) made their first contribution in [#&#8203;5499](https://github.com/nodejs/undici/pull/5499) - [@&#8203;GiHoon1123](https://github.com/GiHoon1123) made their first contribution in [#&#8203;5538](https://github.com/nodejs/undici/pull/5538) - [@&#8203;emmayusufu](https://github.com/emmayusufu) made their first contribution in [#&#8203;5537](https://github.com/nodejs/undici/pull/5537) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.7.0...v8.8.0> ### [`v8.7.0`](https://github.com/nodejs/undici/releases/tag/v8.7.0) [Compare Source](https://github.com/nodejs/undici/compare/v8.6.0...v8.7.0) #### What's Changed - test: guard balanced-pool error port lookup by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5463](https://github.com/nodejs/undici/pull/5463) - perf: optimize http/2 request hot path by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5483](https://github.com/nodejs/undici/pull/5483) - fix: do not reject open-ended Range values in simpleRangeHeaderValue by [@&#8203;spokodev](https://github.com/spokodev) in [#&#8203;5490](https://github.com/nodejs/undici/pull/5490) - fix(eventsource): set use-URL-credentials flag by [@&#8203;Ram-blip](https://github.com/Ram-blip) in [#&#8203;5489](https://github.com/nodejs/undici/pull/5489) - test: deflake connect-timeout watchdog by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5197](https://github.com/nodejs/undici/pull/5197) - docs: correct npm script name and JSON syntax in examples by [@&#8203;lenoxfernando](https://github.com/lenoxfernando) in [#&#8203;5496](https://github.com/nodejs/undici/pull/5496) - fix: reject non-ascii octets in validateCookiePath by [@&#8203;spokodev](https://github.com/spokodev) in [#&#8203;5452](https://github.com/nodejs/undici/pull/5452) - fix(readable): ignore late consume chunks by [@&#8203;marko1olo](https://github.com/marko1olo) in [#&#8203;5375](https://github.com/nodejs/undici/pull/5375) - fix(h2): destroy the stream on abort instead of relying on close() by [@&#8203;staylor](https://github.com/staylor) in [#&#8203;5462](https://github.com/nodejs/undici/pull/5462) - fix: ignore an unparseable Set-Cookie Expires attribute by [@&#8203;spokodev](https://github.com/spokodev) in [#&#8203;5488](https://github.com/nodejs/undici/pull/5488) - docs: add reproduction guide and update bug report template by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5451](https://github.com/nodejs/undici/pull/5451) - fix(h2): guard onResponse against a 'response' event delivered after completion by [@&#8203;staylor](https://github.com/staylor) in [#&#8203;5440](https://github.com/nodejs/undici/pull/5440) - fix(h2): requeue request on GOAWAY'd session instead of crashing by [@&#8203;staylor](https://github.com/staylor) in [#&#8203;5453](https://github.com/nodejs/undici/pull/5453) - fix: add static buildDispatch method to RedirectHandler type definition by [@&#8203;matthieusieben](https://github.com/matthieusieben) in [#&#8203;5442](https://github.com/nodejs/undici/pull/5442) - fix: auto-detect HTTP proxy tunneling by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5116](https://github.com/nodejs/undici/pull/5116) #### New Contributors - [@&#8203;spokodev](https://github.com/spokodev) made their first contribution in [#&#8203;5490](https://github.com/nodejs/undici/pull/5490) - [@&#8203;lenoxfernando](https://github.com/lenoxfernando) made their first contribution in [#&#8203;5496](https://github.com/nodejs/undici/pull/5496) - [@&#8203;staylor](https://github.com/staylor) made their first contribution in [#&#8203;5462](https://github.com/nodejs/undici/pull/5462) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.6.0...v8.7.0> ### [`v8.6.0`](https://github.com/nodejs/undici/releases/tag/v8.6.0) [Compare Source](https://github.com/nodejs/undici/compare/v8.5.0...v8.6.0) #### What's Changed - build(deps-dev): bump proxy from 4.0.0 to 4.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5433](https://github.com/nodejs/undici/pull/5433) - update accept-encoding header in fetch by [@&#8203;KhafraDev](https://github.com/KhafraDev) in [#&#8203;5439](https://github.com/nodejs/undici/pull/5439) - fix: drop response chunks after the response stream is destroyed ([#&#8203;5356](https://github.com/nodejs/undici/issues/5356)) by [@&#8203;cesarvspr](https://github.com/cesarvspr) in [#&#8203;5357](https://github.com/nodejs/undici/pull/5357) - fix: handle incomplete multi-byte UTF-8 sequences in setEncoding() by [@&#8203;joecwu](https://github.com/joecwu) in [#&#8203;5003](https://github.com/nodejs/undici/pull/5003) - fix(retry): keep flow-control wired to the active connection across resumes by [@&#8203;bogomya](https://github.com/bogomya) in [#&#8203;5405](https://github.com/nodejs/undici/pull/5405) - test: cover connect lookup option by [@&#8203;vibhor-aggr](https://github.com/vibhor-aggr) in [#&#8203;5411](https://github.com/nodejs/undici/pull/5411) - test: fail on unexpected reconnect disconnect by [@&#8203;vibhor-aggr](https://github.com/vibhor-aggr) in [#&#8203;5412](https://github.com/nodejs/undici/pull/5412) - build(deps-dev): bump esbuild from 0.28.0 to 0.28.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5419](https://github.com/nodejs/undici/pull/5419) - fix(proxy): fail the request when the CONNECT tunnel drops instead of looping by [@&#8203;cesarvspr](https://github.com/cesarvspr) in [#&#8203;5441](https://github.com/nodejs/undici/pull/5441) - feat(docs): migrate to doc-kit by [@&#8203;avivkeller](https://github.com/avivkeller) in [#&#8203;5438](https://github.com/nodejs/undici/pull/5438) - build(deps-dev): bump undici from 6.25.0 to 6.27.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5445](https://github.com/nodejs/undici/pull/5445) - fetch: fix issue 4058 by [@&#8203;KhafraDev](https://github.com/KhafraDev) in [#&#8203;5456](https://github.com/nodejs/undici/pull/5456) - docs: add Interceptors API reference page by [@&#8203;enjoykumawat](https://github.com/enjoykumawat) in [#&#8203;5446](https://github.com/nodejs/undici/pull/5446) - Document H1 keep-alive trust tradeoff by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5457](https://github.com/nodejs/undici/pull/5457) - fix(h2): deliver an early final response to an Expect: 100-continue request by [@&#8203;jeswr](https://github.com/jeswr) in [#&#8203;5470](https://github.com/nodejs/undici/pull/5470) - fix(types): correct deleteCookie attributes by [@&#8203;Ram-blip](https://github.com/Ram-blip) in [#&#8203;5461](https://github.com/nodejs/undici/pull/5461) - fix(h1): complete paused parser on socket end instead of crashing by [@&#8203;ronag](https://github.com/ronag) in [#&#8203;5474](https://github.com/nodejs/undici/pull/5474) - build(deps): bump github/codeql-action/init from 4.36.1 to 4.36.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5476](https://github.com/nodejs/undici/pull/5476) - build(deps): bump github/codeql-action/upload-sarif from 4.36.1 to 4.36.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5481](https://github.com/nodejs/undici/pull/5481) - build(deps): bump fastify/github-action-merge-dependabot from 3.12.0 to 3.15.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5480](https://github.com/nodejs/undici/pull/5480) - build(deps): bump codecov/codecov-action from 6.0.1 to 7.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5478](https://github.com/nodejs/undici/pull/5478) - build(deps): bump actions/checkout from 6.0.3 to 7.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5482](https://github.com/nodejs/undici/pull/5482) - build(deps): bump github/codeql-action from 4.36.1 to 4.36.2 by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5484](https://github.com/nodejs/undici/pull/5484) - build(deps): bump github/codeql-action/analyze from 4.36.1 to 4.36.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5477](https://github.com/nodejs/undici/pull/5477) - feat: support HTTP QUERY method (RFC 10008) by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5459](https://github.com/nodejs/undici/pull/5459) - fix: requeue h2 requests after goaway by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5473](https://github.com/nodejs/undici/pull/5473) #### New Contributors - [@&#8203;joecwu](https://github.com/joecwu) made their first contribution in [#&#8203;5003](https://github.com/nodejs/undici/pull/5003) - [@&#8203;bogomya](https://github.com/bogomya) made their first contribution in [#&#8203;5405](https://github.com/nodejs/undici/pull/5405) - [@&#8203;enjoykumawat](https://github.com/enjoykumawat) made their first contribution in [#&#8203;5446](https://github.com/nodejs/undici/pull/5446) - [@&#8203;jeswr](https://github.com/jeswr) made their first contribution in [#&#8203;5470](https://github.com/nodejs/undici/pull/5470) - [@&#8203;Ram-blip](https://github.com/Ram-blip) made their first contribution in [#&#8203;5461](https://github.com/nodejs/undici/pull/5461) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.5.0...v8.6.0> ### [`v8.5.0`](https://github.com/nodejs/undici/releases/tag/v8.5.0) [Compare Source](https://github.com/nodejs/undici/compare/v8.4.1...v8.5.0) ### ⚠️ Security Release This release line addresses **8 security advisories**. Most are fixed in **v8.5.0**; the SOCKS5 pool-reuse issue was fixed earlier in **v8.2.0**. > **Action required:** Upgrade to **undici 8.5.0** or later. > > ```sh > npm install undici@^8.5.0 > ``` #### Summary | Advisory | CVE | Severity (CVSS) | Fixed in | Fix commit | | ----------------------------------------------------------------------------------------------- | -------------- | --------------- | -------- | -------------------------------------------------------------- | | [GHSA-vxpw-j846-p89q](https://github.com/nodejs/undici/security/advisories/GHSA-vxpw-j846-p89q) | CVE-2026-12151 | High (7.5) | 8.5.0 | [`32dbf0b3`](https://github.com/nodejs/undici/commit/32dbf0b3) | | [GHSA-38rv-x7px-6hhq](https://github.com/nodejs/undici/security/advisories/GHSA-38rv-x7px-6hhq) | CVE-2026-9675 | High (7.5) | 8.5.0 | [`b4c287b3`](https://github.com/nodejs/undici/commit/b4c287b3) | | [GHSA-vmh5-mc38-953g](https://github.com/nodejs/undici/security/advisories/GHSA-vmh5-mc38-953g) | CVE-2026-9697 | High (7.4) | 8.5.0 | [`42d49559`](https://github.com/nodejs/undici/commit/42d49559) | | [GHSA-hm92-r4w5-c3mj](https://github.com/nodejs/undici/security/advisories/GHSA-hm92-r4w5-c3mj) | CVE-2026-6734 | High (7.5) | 8.2.0 | [`a516f870`](https://github.com/nodejs/undici/commit/a516f870) | | [GHSA-pr7r-676h-xcf6](https://github.com/nodejs/undici/security/advisories/GHSA-pr7r-676h-xcf6) | CVE-2026-9678 | Moderate (5.9) | 8.5.0 | [`cb105d7c`](https://github.com/nodejs/undici/commit/cb105d7c) | | [GHSA-p88m-4jfj-68fv](https://github.com/nodejs/undici/security/advisories/GHSA-p88m-4jfj-68fv) | CVE-2026-9679 | Moderate (5.9) | 8.5.0 | [`5655ea43`](https://github.com/nodejs/undici/commit/5655ea43) | | [GHSA-g8m3-5g58-fq7m](https://github.com/nodejs/undici/security/advisories/GHSA-g8m3-5g58-fq7m) | CVE-2026-11525 | Low (3.7) | 8.5.0 | [`5655ea43`](https://github.com/nodejs/undici/commit/5655ea43) | | [GHSA-35p6-xmwp-9g52](https://github.com/nodejs/undici/security/advisories/GHSA-35p6-xmwp-9g52) | CVE-2026-6733 | Low (3.7) | 8.5.0 | [`6ea54ef8`](https://github.com/nodejs/undici/commit/6ea54ef8) | *** #### High severity ##### WebSocket DoS via fragment count bypass — CVE-2026-12151 **[GHSA-vxpw-j846-p89q](https://github.com/nodejs/undici/security/advisories/GHSA-vxpw-j846-p89q)** · CWE-400, CWE-770 **Fix:** [`32dbf0b3`](https://github.com/nodejs/undici/commit/32dbf0b3) *websocket: limit the number of fragments in a message* (also [`c5ed7875`](https://github.com/nodejs/undici/commit/c5ed7875) *handle empty fragments and stream limits*) A malicious WebSocket server can stream a large number of small or empty continuation frames. Undici enforced a limit on cumulative payload size but did not limit the *number* of fragments per message, leading to unbounded memory growth and denial of service. - **Affected:** applications using `new WebSocket(...)` or `WebSocketStream` against untrusted endpoints. - **Workaround:** none — upgrade is required. ##### WebSocket DoS via cumulative fragment bypass — CVE-2026-9675 **[GHSA-38rv-x7px-6hhq](https://github.com/nodejs/undici/security/advisories/GHSA-38rv-x7px-6hhq)** · CWE-400, CWE-770 **Fix:** [`b4c287b3`](https://github.com/nodejs/undici/commit/b4c287b3) *fix(websocket): enforce max payload size across fragments* Undici validated the size of individual frames but did not track cumulative size across a fragmented message. An attacker could send many small fragments that each pass per-frame validation but collectively exceed the configured limit, causing memory exhaustion. **This is a regression introduced in 8.1.0** (the 6.x and 7.x lines are not affected). - **Workaround:** none — upgrade is required. ##### TLS certificate validation bypass in SOCKS5 ProxyAgent — CVE-2026-9697 **[GHSA-vmh5-mc38-953g](https://github.com/nodejs/undici/security/advisories/GHSA-vmh5-mc38-953g)** · CWE-295 **Fix:** [`42d49559`](https://github.com/nodejs/undici/commit/42d49559) *fix: honor requestTls when proxy is SOCKS5* The `ProxyAgent` silently discarded the `requestTls` option when configured with a SOCKS5 proxy. TLS connections through the SOCKS5 tunnel ignored user-configured parameters such as `ca`, `cert`, `key`, `rejectUnauthorized`, and `servername`, falling back to the default Mozilla CA bundle. Applications relying on certificate pinning to an internal CA were exposed to man-in-the-middle attacks. - **Affected:** `ProxyAgent` / `Socks5ProxyAgent` over SOCKS5 that rely on `requestTls`. - **Workaround:** route traffic through an HTTP-proxy `ProxyAgent`, where `requestTls` functions correctly. ##### Cross-origin request routing via SOCKS5 proxy pool reuse — CVE-2026-6734 **[GHSA-hm92-r4w5-c3mj](https://github.com/nodejs/undici/security/advisories/GHSA-hm92-r4w5-c3mj)** · CWE-346 · **Fixed in 8.2.0** **Fix:** [`a516f870`](https://github.com/nodejs/undici/commit/a516f870) *fix(socks5-proxy-agent): use per-origin pools to prevent cross-origin routing* ([#&#8203;5041](https://github.com/nodejs/undici/pull/5041)) `Socks5ProxyAgent` reused a single connection pool across different origins without verifying the pool's origin matched the requested origin. This could route credentials and request data to unintended destinations, cause responses from the wrong origin to be trusted, and enable HTTPS→HTTP downgrade. - **Affected:** applications using `Socks5ProxyAgent` across multiple origins (introduced via [#&#8203;4385](https://github.com/nodejs/undici/pull/4385)). - **Workaround:** use a separate agent instance per origin. *** #### Moderate severity ##### Cross-user information disclosure via shared cache whitespace bypass — CVE-2026-9678 **[GHSA-pr7r-676h-xcf6](https://github.com/nodejs/undici/security/advisories/GHSA-pr7r-676h-xcf6)** · CWE-524 **Fix:** [`cb105d7c`](https://github.com/nodejs/undici/commit/cb105d7c) *fix(cache): trim qualified field names* The cache interceptor mishandled responses with whitespace-padded `Cache-Control` directives such as `private=" authorization"`. In shared-cache mode this could cause authenticated data to be cached and served to other users. - **Affected:** apps using the cache interceptor in shared mode that forward `Authorization` upstream and receive non-canonical qualified directives. - **Workaround:** disable shared-cache mode for authenticated traffic, avoid caching authenticated responses, or add `Vary: Authorization` upstream. ##### HTTP header injection via Set-Cookie percent-decoding — CVE-2026-9679 **[GHSA-p88m-4jfj-68fv](https://github.com/nodejs/undici/security/advisories/GHSA-p88m-4jfj-68fv)** · CWE-93 **Fix:** [`5655ea43`](https://github.com/nodejs/undici/commit/5655ea43) *fix(cookies): preserve values and parse SameSite strictly* `parseSetCookie` applied percent-decoding to cookie values, turning encoded sequences like `%0D%0A` and `%00` into literal bytes, contrary to RFC 6265 §5.4 and browser behavior. Applications forwarding parsed Set-Cookie values into response headers were exposed to header injection, enabling session fixation, open redirects, and cache poisoning. Introduced in 7.0.0 via [#&#8203;3789](https://github.com/nodejs/undici/pull/3789). - **Workaround:** sanitize values before forwarding — strip or reject CR, LF, NUL, `;`, and `=`. *** #### Low severity ##### Set-Cookie SameSite attribute downgrade — CVE-2026-11525 **[GHSA-g8m3-5g58-fq7m](https://github.com/nodejs/undici/security/advisories/GHSA-g8m3-5g58-fq7m)** · CWE-183 **Fix:** [`5655ea43`](https://github.com/nodejs/undici/commit/5655ea43) *fix(cookies): preserve values and parse SameSite strictly* The cookie parser accepted `SameSite` values containing `Strict`, `Lax`, or `None` as substrings rather than requiring exact matches per RFC 6265. Values like `SameSite=NoneOfYourBusiness` parsed as `None`, and `SameSite=StrictLax` parsed as `Lax`, silently weakening cookie security policies for apps that forward parsed attributes. ##### HTTP response queue poisoning via keep-alive socket reuse — CVE-2026-6733 **[GHSA-35p6-xmwp-9g52](https://github.com/nodejs/undici/security/advisories/GHSA-35p6-xmwp-9g52)** · CWE-367 (TOCTOU race condition) **Fix:** [`6ea54ef8`](https://github.com/nodejs/undici/commit/6ea54ef8) *fix: guard idle socket validation to skip fresh sockets*, hardened by [`c9fbe9d2`](https://github.com/nodejs/undici/commit/c9fbe9d2) *keep idle validation on native timers* ([#&#8203;5397](https://github.com/nodejs/undici/pull/5397)) and [`ac5394b8`](https://github.com/nodejs/undici/commit/ac5394b8) *keep idle validation on global timers* ([#&#8203;5407](https://github.com/nodejs/undici/pull/5407)) An attacker controlling an upstream HTTP/1.1 server could inject unsolicited responses onto idle keep-alive sockets. On socket reuse, the injected response was associated with a new request, delivering responses to the wrong requests. - **Requirements:** attacker-controlled/compromised upstream and active keep-alive reuse. - **Workaround:** disable keep-alive reuse with `keepAliveTimeout: 0` on the Client or Pool. *** #### Also in v8.5.0 (non-security) v8.5.0 shipped the security fixes above alongside the following changes. **These are not security fixes** — they are listed for completeness of the release. (The two queue-poisoning hardening PRs, [#&#8203;5397](https://github.com/nodejs/undici/pull/5397) and [#&#8203;5407](https://github.com/nodejs/undici/pull/5407), are covered under CVE-2026-6733 above and are not repeated here.) - **HTTP/2:** [`#5408`](https://github.com/nodejs/undici/pull/5408) don't rewind `kPendingIdx` past in-flight requests · [`#5391`](https://github.com/nodejs/undici/pull/5391) allow h2 POST request multiplexing · [`#5406`](https://github.com/nodejs/undici/pull/5406) reap idle HTTP/2 sessions · [`#5410`](https://github.com/nodejs/undici/pull/5410) preserve h2 queue on out-of-order completion - **Features:** [`#5416`](https://github.com/nodejs/undici/pull/5416) add `bodyMixin.textStream()` · [`#5418`](https://github.com/nodejs/undici/pull/5418) align EventSource with spec - **Docs / CI / tests:** [`#5413`](https://github.com/nodejs/undici/pull/5413) document request header validation · [`#5383`](https://github.com/nodejs/undici/pull/5383) absorb h2 stream timeout resets (test) · [`#5420`](https://github.com/nodejs/undici/pull/5420) remove stale repro + lint · [`#5426`](https://github.com/nodejs/undici/pull/5426) extend Windows CI timeout · [`#5427`](https://github.com/nodejs/undici/pull/5427) detect available python in WPT runner Full changelog: [`v8.4.1...v8.5.0`](https://github.com/nodejs/undici/compare/v8.4.1...v8.5.0). *** #### Credits Per-advisory credits (as recorded in each GHSA): - **CVE-2026-12151** — reported by [@&#8203;lpinca](https://github.com/lpinca) & [@&#8203;Nadav0077](https://github.com/Nadav0077); reviewed by [@&#8203;UlisesGascon](https://github.com/UlisesGascon). - **CVE-2026-9675** — reported by [@&#8203;mauriceng98](https://github.com/mauriceng98) & [@&#8203;Str1ckl4nd](https://github.com/Str1ckl4nd); fixed by [@&#8203;mcollina](https://github.com/mcollina) & [@&#8203;KhafraDev](https://github.com/KhafraDev); reviewed by [@&#8203;UlisesGascon](https://github.com/UlisesGascon). - **CVE-2026-9697** — reported by [@&#8203;tonghuaroot](https://github.com/tonghuaroot); reviewed by [@&#8203;UlisesGascon](https://github.com/UlisesGascon). - **CVE-2026-6734** — reported by [@&#8203;ChALkeR](https://github.com/ChALkeR); reviewed by [@&#8203;mcollina](https://github.com/mcollina); verified by [@&#8203;UlisesGascon](https://github.com/UlisesGascon). - **CVE-2026-9678** — fixed by [@&#8203;mcollina](https://github.com/mcollina); reviewed by [@&#8203;UlisesGascon](https://github.com/UlisesGascon). - **CVE-2026-9679** — reported by [@&#8203;tndud042713](https://github.com/tndud042713); fixed by [@&#8203;mcollina](https://github.com/mcollina); reviewed by [@&#8203;KhafraDev](https://github.com/KhafraDev) & [@&#8203;UlisesGascon](https://github.com/UlisesGascon). - **CVE-2026-11525** — fixed by [@&#8203;mcollina](https://github.com/mcollina); reviewed by [@&#8203;UlisesGascon](https://github.com/UlisesGascon). - **CVE-2026-6733** — fixed by [@&#8203;mcollina](https://github.com/mcollina); verified by [@&#8203;UlisesGascon](https://github.com/UlisesGascon). ### [`v8.4.1`](https://github.com/nodejs/undici/releases/tag/v8.4.1) [Compare Source](https://github.com/nodejs/undici/compare/v8.4.0...v8.4.1) #### What's Changed - test: avoid localhost lookup in fetch cookies tests by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5363](https://github.com/nodejs/undici/pull/5363) - fix: prevent race condition between onEnd and onTrailers in HTTP/2 client ([#&#8203;5216](https://github.com/nodejs/undici/issues/5216)) by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5343](https://github.com/nodejs/undici/pull/5343) - fix(dns): skip requests without origin by [@&#8203;marko1olo](https://github.com/marko1olo) in [#&#8203;5376](https://github.com/nodejs/undici/pull/5376) - docs: add Getting Started guide by [@&#8203;AliMahmoudDev](https://github.com/AliMahmoudDev) in [#&#8203;5371](https://github.com/nodejs/undici/pull/5371) - docs: fix code examples that crash at runtime and other inaccuracies by [@&#8203;AliMahmoudDev](https://github.com/AliMahmoudDev) in [#&#8203;5386](https://github.com/nodejs/undici/pull/5386) - fix: handle paused parser on socket end (issue [#&#8203;5360](https://github.com/nodejs/undici/issues/5360)) by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5389](https://github.com/nodejs/undici/pull/5389) - fix(client): reject pipelined TLS altname errors by [@&#8203;marko1olo](https://github.com/marko1olo) in [#&#8203;5373](https://github.com/nodejs/undici/pull/5373) - docs: fix multiple inaccuracies in API documentation by [@&#8203;AliMahmoudDev](https://github.com/AliMahmoudDev) in [#&#8203;5384](https://github.com/nodejs/undici/pull/5384) - docs: fix remaining broken links in API documentation by [@&#8203;AliMahmoudDev](https://github.com/AliMahmoudDev) in [#&#8203;5342](https://github.com/nodejs/undici/pull/5342) #### New Contributors - [@&#8203;marko1olo](https://github.com/marko1olo) made their first contribution in [#&#8203;5376](https://github.com/nodejs/undici/pull/5376) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.4.0...v8.4.1> ### [`v8.4.0`](https://github.com/nodejs/undici/releases/tag/v8.4.0) [Compare Source](https://github.com/nodejs/undici/compare/v8.3.0...v8.4.0) #### What's Changed - fix: register connect listener before initiating requests in close-and-destroy test by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5272](https://github.com/nodejs/undici/pull/5272) - test: stabilize tls-cert-leak regression by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5306](https://github.com/nodejs/undici/pull/5306) - fix: replace tspl with native test context in test/examples.js by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5300](https://github.com/nodejs/undici/pull/5300) - http2: remove redundant request stream binding by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5302](https://github.com/nodejs/undici/pull/5302) - test: limit cache-tests workers on Windows by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5309](https://github.com/nodejs/undici/pull/5309) - test: use test context cleanup hooks in parser issue tests by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5282](https://github.com/nodejs/undici/pull/5282) - Add redirect option to strip headers on redirect by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5281](https://github.com/nodejs/undici/pull/5281) - chore(test): fix lint failure by [@&#8203;aduh95](https://github.com/aduh95) in [#&#8203;5316](https://github.com/nodejs/undici/pull/5316) - chore(ci): use `npm ci` instead of `npm install` by [@&#8203;aduh95](https://github.com/aduh95) in [#&#8203;5315](https://github.com/nodejs/undici/pull/5315) - docs: clarify formData security considerations by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5320](https://github.com/nodejs/undici/pull/5320) - docs: add EventSource server example by [@&#8203;Will-thom](https://github.com/Will-thom) in [#&#8203;5321](https://github.com/nodejs/undici/pull/5321) - fix(core): simplify `addAbortListener` util by [@&#8203;aduh95](https://github.com/aduh95) in [#&#8203;5317](https://github.com/nodejs/undici/pull/5317) - build(deps-dev): bump ws from 8.20.0 to 8.21.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5325](https://github.com/nodejs/undici/pull/5325) - build(deps-dev): bump jsondiffpatch from 0.7.3 to 0.7.6 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5313](https://github.com/nodejs/undici/pull/5313) - docs: match undici EoL to node version it's bundled in by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5330](https://github.com/nodejs/undici/pull/5330) - fix: handle all HTTP/2 request stream sync errors by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5311](https://github.com/nodejs/undici/pull/5311) - fix: preserve timeout errors for HTTP/2 requests by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5091](https://github.com/nodejs/undici/pull/5091) - fix(core): normalize autoSelectFamily timeout AggregateError by [@&#8203;youcefzemmar](https://github.com/youcefzemmar) in [#&#8203;5329](https://github.com/nodejs/undici/pull/5329) - chore(core): define `kEnumerableProperty` atomically by [@&#8203;aduh95](https://github.com/aduh95) in [#&#8203;5332](https://github.com/nodejs/undici/pull/5332) - chore(core): use `regex.exec` instead of `string.match` by [@&#8203;aduh95](https://github.com/aduh95) in [#&#8203;5331](https://github.com/nodejs/undici/pull/5331) - fix: reset invalid HTTP/2 sessions by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5310](https://github.com/nodejs/undici/pull/5310) - feat(connect): add `preferH2` connector option to offer h2 first in ALPN by [@&#8203;Antamansid](https://github.com/Antamansid) in [#&#8203;5327](https://github.com/nodejs/undici/pull/5327) - test: fix flaky http2 trailers test by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5338](https://github.com/nodejs/undici/pull/5338) - fix(mock): restore single-arg MockCallHistory.filterCallsByX by [@&#8203;youcefzemmar](https://github.com/youcefzemmar) in [#&#8203;5328](https://github.com/nodejs/undici/pull/5328) - docs: document missing error types in Errors.md by [@&#8203;cesarvspr](https://github.com/cesarvspr) in [#&#8203;5339](https://github.com/nodejs/undici/pull/5339) - build(deps): bump github/codeql-action from 4.35.3 to 4.36.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5346](https://github.com/nodejs/undici/pull/5346) - build(deps): bump actions/dependency-review-action from 4.9.0 to 5.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5347](https://github.com/nodejs/undici/pull/5347) - build(deps): bump uWebSockets.js from v20.67.0 to v20.68.0 in /benchmarks by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5352](https://github.com/nodejs/undici/pull/5352) - build(deps): bump concurrently from 9.2.1 to 10.0.3 in /benchmarks by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5353](https://github.com/nodejs/undici/pull/5353) - build(deps): bump step-security/harden-runner from 2.19.1 to 2.19.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5348](https://github.com/nodejs/undici/pull/5348) - build(deps): bump actions/checkout from 6.0.2 to 6.0.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5351](https://github.com/nodejs/undici/pull/5351) - build(deps): bump codecov/codecov-action from 6.0.0 to 6.0.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5349](https://github.com/nodejs/undici/pull/5349) - docs: improve connect option documentation in Client.md by [@&#8203;AliMahmoudDev](https://github.com/AliMahmoudDev) in [#&#8203;5344](https://github.com/nodejs/undici/pull/5344) - fix(mock): do not persist snapshots on close in playback mode by [@&#8203;GeoffreyBooth](https://github.com/GeoffreyBooth) in [#&#8203;5359](https://github.com/nodejs/undici/pull/5359) - fix(fetch): remove abort listener when request settles by [@&#8203;ATOM00blue](https://github.com/ATOM00blue) in [#&#8203;5318](https://github.com/nodejs/undici/pull/5318) - test: add Node.js global fetch regression coverage by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5361](https://github.com/nodejs/undici/pull/5361) - fix(h2): make Client multiplex on h2 ([#&#8203;4143](https://github.com/nodejs/undici/issues/4143)) by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5362](https://github.com/nodejs/undici/pull/5362) #### New Contributors - [@&#8203;Will-thom](https://github.com/Will-thom) made their first contribution in [#&#8203;5321](https://github.com/nodejs/undici/pull/5321) - [@&#8203;youcefzemmar](https://github.com/youcefzemmar) made their first contribution in [#&#8203;5329](https://github.com/nodejs/undici/pull/5329) - [@&#8203;Antamansid](https://github.com/Antamansid) made their first contribution in [#&#8203;5327](https://github.com/nodejs/undici/pull/5327) - [@&#8203;cesarvspr](https://github.com/cesarvspr) made their first contribution in [#&#8203;5339](https://github.com/nodejs/undici/pull/5339) - [@&#8203;AliMahmoudDev](https://github.com/AliMahmoudDev) made their first contribution in [#&#8203;5344](https://github.com/nodejs/undici/pull/5344) - [@&#8203;ATOM00blue](https://github.com/ATOM00blue) made their first contribution in [#&#8203;5318](https://github.com/nodejs/undici/pull/5318) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.3.0...v8.4.0> ### [`v8.3.0`](https://github.com/nodejs/undici/releases/tag/v8.3.0) [Compare Source](https://github.com/nodejs/undici/compare/v8.2.0...v8.3.0) #### What's Changed - fix: preserve pool capacity after removing stale client by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5151](https://github.com/nodejs/undici/pull/5151) - build(deps): bump actions/github-script from 8.0.0 to 9.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5157](https://github.com/nodejs/undici/pull/5157) - build(deps): bump actions/upload-artifact from 5.0.0 to 7.0.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5162](https://github.com/nodejs/undici/pull/5162) - build(deps): bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5156](https://github.com/nodejs/undici/pull/5156) - chore(http2): collapse duplicate request stream setup by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5140](https://github.com/nodejs/undici/pull/5140) - perf(client): cache HTTP/2 authority by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5141](https://github.com/nodejs/undici/pull/5141) - build(deps-dev): bump borp from 0.20.2 to 1.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4819](https://github.com/nodejs/undici/pull/4819) - types: add TOpaque to client connect options by [@&#8203;samuel871211](https://github.com/samuel871211) in [#&#8203;4928](https://github.com/nodejs/undici/pull/4928) - build(deps): bump tinybench from 5.1.0 to 6.0.1 in /benchmarks by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4688](https://github.com/nodejs/undici/pull/4688) - build(deps): bump codecov/codecov-action from 5.5.1 to 6.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4950](https://github.com/nodejs/undici/pull/4950) - build(deps): bump actions/dependency-review-action from 4.8.1 to 4.9.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4951](https://github.com/nodejs/undici/pull/4951) - test(fetch): add userinfo coverage for issue-4897 URLs by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4901](https://github.com/nodejs/undici/pull/4901) - perf: avoid duplicate pool dispatcher selection on backpressure by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5149](https://github.com/nodejs/undici/pull/5149) - build(deps): bump actions/setup-node from 6.2.0 to 6.4.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5163](https://github.com/nodejs/undici/pull/5163) - build(deps): bump step-security/harden-runner from 2.14.1 to 2.19.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5160](https://github.com/nodejs/undici/pull/5160) - build(deps): bump cronometro from 5.3.0 to 6.0.3 in /benchmarks by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4687](https://github.com/nodejs/undici/pull/4687) - build(deps): bump github/codeql-action from 4.35.1 to 4.35.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5161](https://github.com/nodejs/undici/pull/5161) - build(deps-dev): bump neostandard from 0.12.2 to 0.13.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4853](https://github.com/nodejs/undici/pull/4853) - build(deps): bump hendrikmuhs/ccache-action from 1.2.22 to 1.2.23 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5158](https://github.com/nodejs/undici/pull/5158) - build(deps): bump fastify/github-action-merge-dependabot from 3.11.2 to 3.12.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5159](https://github.com/nodejs/undici/pull/5159) - build(deps-dev): bump c8 from 10.1.3 to 11.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4854](https://github.com/nodejs/undici/pull/4854) - build(deps): bump uWebSockets.js from v20.64.0 to v20.66.0 in /benchmarks by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5130](https://github.com/nodejs/undici/pull/5130) - docs: mention install() also installs WebSocket globals by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5174](https://github.com/nodejs/undici/pull/5174) - types: stop interfering with [@&#8203;types/node](https://github.com/types/node) by [@&#8203;Renegade334](https://github.com/Renegade334) in [#&#8203;5173](https://github.com/nodejs/undici/pull/5173) - fix: align h2 empty body content-length methods with h1 by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5172](https://github.com/nodejs/undici/pull/5172) - build(deps-dev): bump fast-check from 4.6.0 to 4.7.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5192](https://github.com/nodejs/undici/pull/5192) - build(deps-dev): bump typescript from 6.0.2 to 6.0.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5191](https://github.com/nodejs/undici/pull/5191) - test: move cleanup from finally to after hooks by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5194](https://github.com/nodejs/undici/pull/5194) - test: resolve flaky timeout in issue-3356 by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5188](https://github.com/nodejs/undici/pull/5188) - `SnapshotAgent`: Add `normalizeBody` and `normalizeQuery` by [@&#8203;GeoffreyBooth](https://github.com/GeoffreyBooth) in [#&#8203;5121](https://github.com/nodejs/undici/pull/5121) - fix(socks5): use configured connector in Socks5ProxyAgent by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5168](https://github.com/nodejs/undici/pull/5168) - perf(http2): avoid isArray checks for common headers by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5170](https://github.com/nodejs/undici/pull/5170) - fix(test): make deduplicate body-streaming test non-flaky by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5196](https://github.com/nodejs/undici/pull/5196) - test(retry): add regression test for RetryAgent + HTTP/2 stream timeout ([#&#8203;5137](https://github.com/nodejs/undici/issues/5137)) by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5176](https://github.com/nodejs/undici/pull/5176) - fix(socks5): preserve dispatch backpressure return value by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5166](https://github.com/nodejs/undici/pull/5166) - perf(http2): end zero-length request bodies with headers by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5169](https://github.com/nodejs/undici/pull/5169) - fix(test): make issue-2898-comment.js assertion robust against flakiness by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5208](https://github.com/nodejs/undici/pull/5208) - test: disable timeouts in h2 high concurrency regression by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5205](https://github.com/nodejs/undici/pull/5205) - test: deflake stream compat coverage by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5209](https://github.com/nodejs/undici/pull/5209) - fix(dispatcher): remove unreachable assert in writeBlob by [@&#8203;SAY-5](https://github.com/SAY-5) in [#&#8203;5231](https://github.com/nodejs/undici/pull/5231) - fix: clean up benchmark resources before worker exit by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5225](https://github.com/nodejs/undici/pull/5225) - test: avoid per-chunk assertions in diagnostics get by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5224](https://github.com/nodejs/undici/pull/5224) - test: capture cache test worker stderr and preserve failures by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5206](https://github.com/nodejs/undici/pull/5206) - chore: gitignore benchmarks/package-lock.json by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5228](https://github.com/nodejs/undici/pull/5228) - perf(proxy-agent): avoid extra header allocations in auth guard by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5164](https://github.com/nodejs/undici/pull/5164) - test(wpt): retry WPT server startup on port conflicts or timeout by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5215](https://github.com/nodejs/undici/pull/5215) - test: make websocket diagnostics ping-pong ordering deterministic by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5222](https://github.com/nodejs/undici/pull/5222) - test(websocket): fix flaky send test by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5232](https://github.com/nodejs/undici/pull/5232) - fix: prevent node-fetch test server close from hanging on Windows by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5246](https://github.com/nodejs/undici/pull/5246) - test: wait for cache test server to listen by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5242](https://github.com/nodejs/undici/pull/5242) - fix: accept unknown-size Content-Range values by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5120](https://github.com/nodejs/undici/pull/5120) - test: avoid global dispatcher state in mock client tests by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5258](https://github.com/nodejs/undici/pull/5258) - test: fix flaky permessage-deflate limit timeout by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5229](https://github.com/nodejs/undici/pull/5229) - test: drain request bodies in request tests by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5247](https://github.com/nodejs/undici/pull/5247) - test: reduce retry-after invalid date timing flake by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5250](https://github.com/nodejs/undici/pull/5250) - test: drive request timeout ticks after connect by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5251](https://github.com/nodejs/undici/pull/5251) - test: only fail max-listener checks on max-listener warnings by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5253](https://github.com/nodejs/undici/pull/5253) - test: avoid double-closing server in client-request test by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5255](https://github.com/nodejs/undici/pull/5255) - fix(retry-handler): validate response body length against Content-Range by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4975](https://github.com/nodejs/undici/pull/4975) - test: wait for inflight-and-close body cleanup by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5261](https://github.com/nodejs/undici/pull/5261) - fix(test): make http2-pseudo-headers test order-independent by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5234](https://github.com/nodejs/undici/pull/5234) - fix: preserve fetch multipart body on MockAgent fallback by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5269](https://github.com/nodejs/undici/pull/5269) - ci: build Node FFI fixtures for shared-builtin tests by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5275](https://github.com/nodejs/undici/pull/5275) - test: deflake issue-5137 stream count assertion by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5243](https://github.com/nodejs/undici/pull/5243) - fix: replace finished() with writable lifecycle tracking by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5001](https://github.com/nodejs/undici/pull/5001) - perf(client-h2): reuse request stream handlers by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5280](https://github.com/nodejs/undici/pull/5280) - fix: prevent pipeline body replay on redirect by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5274](https://github.com/nodejs/undici/pull/5274) - fix(types): remove throwOnError from Dispatcher.RequestOptions by [@&#8203;Zelys-DFKH](https://github.com/Zelys-DFKH) in [#&#8203;5279](https://github.com/nodejs/undici/pull/5279) - fix: validate EOF for chunked h1 responses by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5273](https://github.com/nodejs/undici/pull/5273) - test: deflake parser-issues teardown by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5278](https://github.com/nodejs/undici/pull/5278) - test: make http2-alpn control requests explicit by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5252](https://github.com/nodejs/undici/pull/5252) - test: include cache-test worker metadata on failure by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5276](https://github.com/nodejs/undici/pull/5276) - test: include after in parser-issues by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5284](https://github.com/nodejs/undici/pull/5284) - cache formdata boundary by [@&#8203;KhafraDev](https://github.com/KhafraDev) in [#&#8203;5292](https://github.com/nodejs/undici/pull/5292) - build(deps-dev): bump fast-check from 4.7.0 to 4.8.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5298](https://github.com/nodejs/undici/pull/5298) - test: retry crashed cache-test workers once by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5294](https://github.com/nodejs/undici/pull/5294) - Add Node 26 to the matrix by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5271](https://github.com/nodejs/undici/pull/5271) - perf(client-h2): reuse request upgrade stream handlers by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5293](https://github.com/nodejs/undici/pull/5293) - build(deps-dev): bump jest from 30.3.0 to 30.4.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5297](https://github.com/nodejs/undici/pull/5297) - build(deps): bump uWebSockets.js from v20.66.0 to v20.67.0 in /benchmarks by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5299](https://github.com/nodejs/undici/pull/5299) - test: fix flaky http2-dispatcher WebSocket upgrade tests by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5304](https://github.com/nodejs/undici/pull/5304) #### New Contributors - [@&#8203;Zelys-DFKH](https://github.com/Zelys-DFKH) made their first contribution in [#&#8203;5279](https://github.com/nodejs/undici/pull/5279) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.2.0...v8.3.0> ### [`v8.2.0`](https://github.com/nodejs/undici/releases/tag/v8.2.0) [Compare Source](https://github.com/nodejs/undici/compare/v8.1.0...v8.2.0) #### What's Changed - chore: use native addAbortListener by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5021](https://github.com/nodejs/undici/pull/5021) - fix: fix the logic for the UNDICI\_NO\_WASM\_SIMD environment variable by [@&#8203;ShenHongFei](https://github.com/ShenHongFei) in [#&#8203;5026](https://github.com/nodejs/undici/pull/5026) - fix(http2): send body for non-expectsPayload methods with content by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5030](https://github.com/nodejs/undici/pull/5030) - fix(fetch): correct 'navigator' typo to 'navigate' in fetchFinale by [@&#8203;deepview-autofix](https://github.com/deepview-autofix) in [#&#8203;5044](https://github.com/nodejs/undici/pull/5044) - fix(webidl): correct signed integer bounds in ConvertToInt by [@&#8203;deepview-autofix](https://github.com/deepview-autofix) in [#&#8203;5038](https://github.com/nodejs/undici/pull/5038) - fix(fetch): use || for CRLF check in multipart formdata-parser by [@&#8203;deepview-autofix](https://github.com/deepview-autofix) in [#&#8203;5049](https://github.com/nodejs/undici/pull/5049) - fix(websocket): correct argument order in WebSocketStream UTF-8 failure by [@&#8203;deepview-autofix](https://github.com/deepview-autofix) in [#&#8203;5050](https://github.com/nodejs/undici/pull/5050) - fix(pool): propagate useH2c to connector when connections > 1 by [@&#8203;SAY-5](https://github.com/SAY-5) in [#&#8203;5031](https://github.com/nodejs/undici/pull/5031) - fix(cache): return immutable staleAt in milliseconds by [@&#8203;deepview-autofix](https://github.com/deepview-autofix) in [#&#8203;5048](https://github.com/nodejs/undici/pull/5048) - fix(socks5-proxy-agent): use per-origin pools to prevent cross-origin routing by [@&#8203;deepview-autofix](https://github.com/deepview-autofix) in [#&#8203;5041](https://github.com/nodejs/undici/pull/5041) - fix(cache): evict oldest entries first in SqliteCacheStore prune by [@&#8203;deepview-autofix](https://github.com/deepview-autofix) in [#&#8203;5039](https://github.com/nodejs/undici/pull/5039) - fix(socks5): correctly expand IPv6 '::' compressed notation by [@&#8203;deepview-autofix](https://github.com/deepview-autofix) in [#&#8203;5046](https://github.com/nodejs/undici/pull/5046) - Remove unused func and unnecessary shim by [@&#8203;tsctx](https://github.com/tsctx) in [#&#8203;5053](https://github.com/nodejs/undici/pull/5053) - fix: reject malformed content-length request headers by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5060](https://github.com/nodejs/undici/pull/5060) - fix(request): reject NaN highWaterMark during option validation by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5062](https://github.com/nodejs/undici/pull/5062) - docs: fix broken links in docsify sidebar by [@&#8203;maruthang](https://github.com/maruthang) in [#&#8203;5065](https://github.com/nodejs/undici/pull/5065) - fix(fetch): prefer filename\* over filename in multipart form-data by [@&#8203;maruthang](https://github.com/maruthang) in [#&#8203;5068](https://github.com/nodejs/undici/pull/5068) - fix(http2): reject websocket upgrades on non-200 responses by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5072](https://github.com/nodejs/undici/pull/5072) - feat: support username-only proxy authentication in ProxyAgent by [@&#8203;rossilor95](https://github.com/rossilor95) in [#&#8203;4935](https://github.com/nodejs/undici/pull/4935) - build(deps): bump uWebSockets.js from v20.58.0 to v20.64.0 in /benchmarks by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5083](https://github.com/nodejs/undici/pull/5083) - fix(client-h2): stop double-decrementing kOpenStreams on stream timeout by [@&#8203;SAY-5](https://github.com/SAY-5) in [#&#8203;5076](https://github.com/nodejs/undici/pull/5076) - fix(http2): reject upgrade streams closed before response headers by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5069](https://github.com/nodejs/undici/pull/5069) - fix(http2): allow GET and HEAD request bodies over h2 by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5058](https://github.com/nodejs/undici/pull/5058) - fix(cache): include query in cache key when opts.path is undefined by [@&#8203;maruthang](https://github.com/maruthang) in [#&#8203;5081](https://github.com/nodejs/undici/pull/5081) - fix: avoid premature cleanup of dispatcher in Agent by [@&#8203;bienzaaron](https://github.com/bienzaaron) in [#&#8203;5034](https://github.com/nodejs/undici/pull/5034) - fix(http2): record ping failures on the socket by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5075](https://github.com/nodejs/undici/pull/5075) - add undici security policy by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5056](https://github.com/nodejs/undici/pull/5056) - fix(mock): make filterCalls AND operator actually intersect results by [@&#8203;deepview-autofix](https://github.com/deepview-autofix) in [#&#8203;5045](https://github.com/nodejs/undici/pull/5045) - fix(socks5): enforce authenticated state before CONNECT by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5097](https://github.com/nodejs/undici/pull/5097) - fix(cache): skip expired sqlite vary entries during lookup by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5095](https://github.com/nodejs/undici/pull/5095) - fix: enforce maxCachedSessions in TLS session cache by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5102](https://github.com/nodejs/undici/pull/5102) - fix(socks5): encode embedded IPv4 tails in IPv6 literals correctly by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5099](https://github.com/nodejs/undici/pull/5099) - fix: handle invalid HTTP/2 connection headers ([#&#8203;4356](https://github.com/nodejs/undici/issues/4356)) by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5101](https://github.com/nodejs/undici/pull/5101) - fix(interceptor): add throwOnMaxRedirect to types and interceptor opts by [@&#8203;maruthang](https://github.com/maruthang) in [#&#8203;5066](https://github.com/nodejs/undici/pull/5066) - fix(websocket): avoid double-closing canceled stream readers by [@&#8203;colinaaa](https://github.com/colinaaa) in [#&#8203;5105](https://github.com/nodejs/undici/pull/5105) - fix(cache): persist vary when updating sqlite cache entries by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5109](https://github.com/nodejs/undici/pull/5109) - refactor(h1): track HEAD keep-alive override as boolean by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5110](https://github.com/nodejs/undici/pull/5110) - client: cache llhttp wasm buffer view by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5115](https://github.com/nodejs/undici/pull/5115) - deps: update llhttp to 9.3.1 by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;5113](https://github.com/nodejs/undici/pull/5113) - fix(http2): preserve accepted streams after GOAWAY by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5090](https://github.com/nodejs/undici/pull/5090) - fix: reuse parser WeakRef for timeout callbacks by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5125](https://github.com/nodejs/undici/pull/5125) - fix: stop buffering data after SOCKS5 connect by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5118](https://github.com/nodejs/undici/pull/5118) - perf(http2): avoid response header reserialization by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5085](https://github.com/nodejs/undici/pull/5085) - fix(cache): enforce sqlite maxCount after insert by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5112](https://github.com/nodejs/undici/pull/5112) - perf: reduce EventSourceStream parser allocations by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5032](https://github.com/nodejs/undici/pull/5032) - types(dispatcher): use OutgoingHttpHeaders for request headers by [@&#8203;maruthang](https://github.com/maruthang) in [#&#8203;5067](https://github.com/nodejs/undici/pull/5067) - cleanup: delete redundant .gitkeep file by [@&#8203;shivarm](https://github.com/shivarm) in [#&#8203;5133](https://github.com/nodejs/undici/pull/5133) - fix(http2): respect peer max concurrent streams by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5135](https://github.com/nodejs/undici/pull/5135) - test(http2): ensure websocket upgrade resumes queued requests by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5132](https://github.com/nodejs/undici/pull/5132) - test(mock): cover SnapshotAgent excludeUrls playback by [@&#8203;maruthang](https://github.com/maruthang) in [#&#8203;5080](https://github.com/nodejs/undici/pull/5080) - perf(client): parse h1 content-length statelessly by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5124](https://github.com/nodejs/undici/pull/5124) - perf(http2): reduce writeH2 per-request callback allocations by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5138](https://github.com/nodejs/undici/pull/5138) - chore(deps): add lockfile by [@&#8203;aduh95](https://github.com/aduh95) in [#&#8203;5139](https://github.com/nodejs/undici/pull/5139) - perf: use byteLength property for binary body chunks by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5126](https://github.com/nodejs/undici/pull/5126) - fix(cache): allow streamed entries at maxEntrySize limit by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5129](https://github.com/nodejs/undici/pull/5129) - perf(http2): avoid cloning headers when removing status by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5127](https://github.com/nodejs/undici/pull/5127) - fix: validate H2CClient maxConcurrentStreams option by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5143](https://github.com/nodejs/undici/pull/5143) - perf: avoid redundant scans in BalancedPool dispatcher selection by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5146](https://github.com/nodejs/undici/pull/5146) - fix: replace stale pool clients under connection limit by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5145](https://github.com/nodejs/undici/pull/5145) #### New Contributors - [@&#8203;deepview-autofix](https://github.com/deepview-autofix) made their first contribution in [#&#8203;5044](https://github.com/nodejs/undici/pull/5044) - [@&#8203;SAY-5](https://github.com/SAY-5) made their first contribution in [#&#8203;5031](https://github.com/nodejs/undici/pull/5031) - [@&#8203;maruthang](https://github.com/maruthang) made their first contribution in [#&#8203;5065](https://github.com/nodejs/undici/pull/5065) - [@&#8203;bienzaaron](https://github.com/bienzaaron) made their first contribution in [#&#8203;5034](https://github.com/nodejs/undici/pull/5034) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.1.0...v8.2.0> ### [`v8.1.0`](https://github.com/nodejs/undici/releases/tag/v8.1.0) [Compare Source](https://github.com/nodejs/undici/compare/v8.0.3...v8.1.0) #### What's Changed - feat: add configurable maxPayloadSize for WebSocket by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4955](https://github.com/nodejs/undici/pull/4955) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.0.3...v8.1.0> ### [`v8.0.3`](https://github.com/nodejs/undici/releases/tag/v8.0.3) [Compare Source](https://github.com/nodejs/undici/compare/v8.0.2...v8.0.3) #### What's Changed - docs: add an Undici 7 to 8 migration guide by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4963](https://github.com/nodejs/undici/pull/4963) - chore: switch deferred promise with Promise.withResolvers() by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;4972](https://github.com/nodejs/undici/pull/4972) - chore: remove zstd and markAsUncloneable feature probes by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;4968](https://github.com/nodejs/undici/pull/4968) - test: remove obsolete nodeMajor/nodeMinor util exports by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;4976](https://github.com/nodejs/undici/pull/4976) - chore: use Promise.withResolvers in SOCKS5 proxy agent by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;4978](https://github.com/nodejs/undici/pull/4978) - build(deps-dev): bump esbuild from 0.27.7 to 0.28.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4985](https://github.com/nodejs/undici/pull/4985) - build(deps-dev): bump proxy from 2.2.0 to 4.0.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4987](https://github.com/nodejs/undici/pull/4987) - build(deps): bump got from 14.6.6 to 15.0.0 in /benchmarks by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4988](https://github.com/nodejs/undici/pull/4988) - chore: use Object.hasOwn for iterator checks by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;4979](https://github.com/nodejs/undici/pull/4979) - doc: Update `dump({ limit: Integer })` default value by [@&#8203;samuel871211](https://github.com/samuel871211) in [#&#8203;4981](https://github.com/nodejs/undici/pull/4981) - fix: avoid 401 failures for stream-backed request bodies by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4941](https://github.com/nodejs/undici/pull/4941) - test: remove unsupported Node version checks from fetch tests by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;4977](https://github.com/nodejs/undici/pull/4977) - types: remove legacy AbortSignal alias now provided by [@&#8203;types/node](https://github.com/types/node) by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;4995](https://github.com/nodejs/undici/pull/4995) - fix: remove stale constructor interceptors from types and pool options by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;4994](https://github.com/nodejs/undici/pull/4994) - doc: update incorrect description of `dump.maxSize` by [@&#8203;samuel871211](https://github.com/samuel871211) in [#&#8203;4982](https://github.com/nodejs/undici/pull/4982) - ci: enable coverage for node.js 25 by [@&#8203;shivarm](https://github.com/shivarm) in [#&#8203;4980](https://github.com/nodejs/undici/pull/4980) - refactor: reuse wrapRequestBody in RedirectHandler by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;4992](https://github.com/nodejs/undici/pull/4992) - fix: preserve connect option in H2CClient by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;5000](https://github.com/nodejs/undici/pull/5000) - types: document Client and H2CClient option declarations by [@&#8203;trivikr](https://github.com/trivikr) in [#&#8203;4998](https://github.com/nodejs/undici/pull/4998) - fix: native WebSocket over H2 server after undici import by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4990](https://github.com/nodejs/undici/pull/4990) - chore(test): issue 3969 by [@&#8203;rozzilla](https://github.com/rozzilla) in [#&#8203;5005](https://github.com/nodejs/undici/pull/5005) - fix(1270): throw descriptive error when opts.dispatcher–passed instance methods by [@&#8203;rozzilla](https://github.com/rozzilla) in [#&#8203;5007](https://github.com/nodejs/undici/pull/5007) - docs: Change the default value of allowH2 in JSDoc by [@&#8203;7hokerz](https://github.com/7hokerz) in [#&#8203;5009](https://github.com/nodejs/undici/pull/5009) - chore(test): cover issue 5014 by [@&#8203;rozzilla](https://github.com/rozzilla) in [#&#8203;5015](https://github.com/nodejs/undici/pull/5015) - fix: prevent cache dedup key collision via unescaped delimiters by [@&#8203;eddieran](https://github.com/eddieran) in [#&#8203;5013](https://github.com/nodejs/undici/pull/5013) - fix(proxy agent): respect connectTimeout by [@&#8203;rozzilla](https://github.com/rozzilla) in [#&#8203;5011](https://github.com/nodejs/undici/pull/5011) #### New Contributors - [@&#8203;7hokerz](https://github.com/7hokerz) made their first contribution in [#&#8203;5009](https://github.com/nodejs/undici/pull/5009) - [@&#8203;eddieran](https://github.com/eddieran) made their first contribution in [#&#8203;5013](https://github.com/nodejs/undici/pull/5013) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.0.2...v8.0.3> ### [`v8.0.2`](https://github.com/nodejs/undici/releases/tag/v8.0.2) [Compare Source](https://github.com/nodejs/undici/compare/v8.0.1...v8.0.2) #### What's Changed - fix(websocket): fallback to HTTP/1.1 when H2 CONNECT is unavailable by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4966](https://github.com/nodejs/undici/pull/4966) - fix: release ref by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4965](https://github.com/nodejs/undici/pull/4965) - ci: reenable shared builtin CI tests by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4967](https://github.com/nodejs/undici/pull/4967) **Full Changelog**: <https://github.com/nodejs/undici/compare/v8.0.1...v8.0.2> ### [`v8.0.1`](https://github.com/nodejs/undici/releases/tag/v8.0.1) [Compare Source](https://github.com/nodejs/undici/compare/v8.0.0...v8.0.1) #### What's Changed - Remove legacy handler wrappers by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4786](https://github.com/nodejs/undici/pull/4786) - fix: isolate global dispatcher v2 and add Dispatcher1Wrapper bridge by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4827](https://github.com/nodejs/undici/pull/4827) - fix: preserve request statusText and update h2 dispatch tests by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4830](https://github.com/nodejs/undici/pull/4830) - feat!: enable h2 by default by [@&#8203;metcoder95](https://github.com/metcoder95) in [#&#8203;4828](https://github.com/nodejs/undici/pull/4828) - fix(cache): preserve short-lived entries for revalidation by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4934](https://github.com/nodejs/undici/pull/4934) - fix: remove support for non-real Blob objects by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4937](https://github.com/nodejs/undici/pull/4937) - build(deps): bump github/codeql-action from 4.32.3 to 4.35.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4953](https://github.com/nodejs/undici/pull/4953) - Undici 8 by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4916](https://github.com/nodejs/undici/pull/4916) - build(deps): bump hendrikmuhs/ccache-action from 1.2.19 to 1.2.22 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4954](https://github.com/nodejs/undici/pull/4954) - doc: remove duplicate listItem of RetryHandler.md & RetryHandler.md by [@&#8203;samuel871211](https://github.com/samuel871211) in [#&#8203;4948](https://github.com/nodejs/undici/pull/4948) - fix: mirror the legacy global dispatcher for built-in fetch by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4962](https://github.com/nodejs/undici/pull/4962) - fix(websocket/stream): only enqueue parsed messages in WebSocketStream by [@&#8203;colinaaa](https://github.com/colinaaa) in [#&#8203;4959](https://github.com/nodejs/undici/pull/4959) #### New Contributors - [@&#8203;colinaaa](https://github.com/colinaaa) made their first contribution in [#&#8203;4959](https://github.com/nodejs/undici/pull/4959) **Full Changelog**: <https://github.com/nodejs/undici/compare/v7.24.7...v8.0.1> ### [`v8.0.0`](https://github.com/nodejs/undici/releases/tag/v8.0.0) [Compare Source](https://github.com/nodejs/undici/compare/v7.29.0...v8.0.0) #### What's Changed - Remove legacy handler wrappers by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4786](https://github.com/nodejs/undici/pull/4786) - fix: isolate global dispatcher v2 and add Dispatcher1Wrapper bridge by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4827](https://github.com/nodejs/undici/pull/4827) - fix: preserve request statusText and update h2 dispatch tests by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4830](https://github.com/nodejs/undici/pull/4830) - feat!: enable h2 by default by [@&#8203;metcoder95](https://github.com/metcoder95) in [#&#8203;4828](https://github.com/nodejs/undici/pull/4828) - fix(cache): preserve short-lived entries for revalidation by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4934](https://github.com/nodejs/undici/pull/4934) - fix: remove support for non-real Blob objects by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4937](https://github.com/nodejs/undici/pull/4937) - build(deps): bump github/codeql-action from 4.32.3 to 4.35.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4953](https://github.com/nodejs/undici/pull/4953) - Undici 8 by [@&#8203;mcollina](https://github.com/mcollina) in [#&#8203;4916](https://github.com/nodejs/undici/pull/4916) **Full Changelog**: <https://github.com/nodejs/undici/compare/v7.24.7...v8.0.0> </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Copenhagen) - Branch creation - "before 6am on monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODUuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI4NS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiLCJtYWpvciJdfQ==-->
chore(deps): Update dependency undici@>=7.0.0 <7.28.0 to v8
All checks were successful
CD Staging / Build & Push Docker Images (pull_request) Has been skipped
CD Staging / Build & Push Docker Images-1 (pull_request) Has been skipped
CD Staging / Deploy Staging (pull_request) Has been skipped
CD Staging / Deploy PR Preview (pull_request) Has been skipped
CD Staging / Tear Down PR Preview (pull_request) Has been skipped
renovate/stability-days Updates have met minimum release age requirement
CI / Security Scan (pull_request) Successful in 1m2s
CI / Dockerfile Package Check (pull_request) Successful in 55s
CI / Checks (pull_request) Successful in 7m30s
CI / Visual Tests (pull_request) Successful in 3m48s
CI / Journal Image Smoke Test (pull_request) Successful in 24m21s
CI / E2E Tests (pull_request) Successful in 10m14s
63b88a001f
renovate force-pushed renovate/undici-=7.0.0-7.28.0-8.x from 63b88a001f
All checks were successful
CD Staging / Build & Push Docker Images (pull_request) Has been skipped
CD Staging / Build & Push Docker Images-1 (pull_request) Has been skipped
CD Staging / Deploy Staging (pull_request) Has been skipped
CD Staging / Deploy PR Preview (pull_request) Has been skipped
CD Staging / Tear Down PR Preview (pull_request) Has been skipped
renovate/stability-days Updates have met minimum release age requirement
CI / Security Scan (pull_request) Successful in 1m2s
CI / Dockerfile Package Check (pull_request) Successful in 55s
CI / Checks (pull_request) Successful in 7m30s
CI / Visual Tests (pull_request) Successful in 3m48s
CI / Journal Image Smoke Test (pull_request) Successful in 24m21s
CI / E2E Tests (pull_request) Successful in 10m14s
to 303a440327
All checks were successful
CD Staging / Build & Push Docker Images (pull_request) Has been skipped
CD Staging / Build & Push Docker Images-1 (pull_request) Has been skipped
CD Staging / Deploy Staging (pull_request) Has been skipped
CD Staging / Deploy PR Preview (pull_request) Has been skipped
renovate/stability-days Updates have met minimum release age requirement
CI / Security Scan (pull_request) Successful in 1m32s
CI / Dockerfile Package Check (pull_request) Successful in 33s
CI / Checks (pull_request) Successful in 4m58s
CI / Visual Tests (pull_request) Successful in 3m44s
CI / E2E Tests (pull_request) Successful in 11m14s
CI / Journal Image Smoke Test (pull_request) Successful in 23m35s
Cancel superseded CI / Cancel in-flight CI (pull_request) Successful in 24s
CD Staging / Tear Down PR Preview (pull_request) Successful in 1m21s
2026-08-20 01:58:18 +00:00
Compare
ullrich deleted branch renovate/undici-=7.0.0-7.28.0-8.x 2026-08-20 13:51:20 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
trails-cool/trails!88
No description provided.