NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1881 most downloaded on npm
Low-level network interception library for Node.js.
Last release today
04 Oct 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
212 releases · first in 2021
One column per quarter.
add root-level "browser" export (#421) (4300ed7f55af53a66215234384591e4bc3538629) @blaenk @kettanaito
xhr: support environments with missing "location" (#482) (da1cc7163dfeb53b01f4ffa86dc55438101025e7) @kettanaito
support miniflare by checking "Response.type" access (#479) (5fa1218fcbe71dc83ee94c8ec835b3c8bbb65127) @mattcosta7 @kettanaito
xhr: allow setters for non-existing properties (#477) (4e73ed98fbdc2a5ecfeafa7ea466f909fd9016ac) @kettanaito
XMLHttpRequest: prevent invalid listener name access (#472) (fb8a400f50ad8eb48ece32b23d8354df7e58a16e) @hpohlmeyer
ClientRequest: support "http.request()" and "http.get()" without any arguments (#468) (65b7ac1ee93c1a1158ed246f797a1b6f1e2f5cba) @kettanaito
ClientRequest: support falsy request headers (#450) (04415fc962ed677c7d8c93a958ca193d13468db5) @mikicho
ClientRequest: support empty "username" and "password" basic auth values (#447) (01aa28d716569103d7f2c5c05d83e49c41657510) @mikicho @kettanaito
ClientRequest: support the "auth" option (#440) (8d04c086af13efac6937ed7f16cdb008f9d12fd4) @mikicho @kettanaito
ClientRequest: ignore message body for responses without body (#436) (db08d08a9a772a1748dbb5ebef96d74eb0b90ad8) @kettanaito
Interceptor: wrap the "once" event listener, ditch "untilIdle" Promise (#430) (cf4e2284f4d2d5f6862b6a458148dff224f65038) @kettanaito
update @open-draft/deferred-promise to 2.2.0 (esm) (#415) (46873276162a40a0674083fdf7885f7199220e18) @kettanaito
support "Response.error()" for mocking network errors (#414) (76a502b09d18c5346b808e8664a412514b3d1bf0) @kettanaito
fetch: respect "abort" event on the request signal (#394) (33dcbe0d89c180010b1e6e997a9013cfdca72fa2) @JesusTheHun @acheong08 @kettanaito @avivasyuta
remove "headers-polyfill" dependency (#408) (93f3e8370186765aa0748a1eb9423e464bd2a019) @kettanaito
make interceptor arguments an object (#388) (706505b925cb8c8d7bed12ee211b9184bd99ef58) @kettanaito
xhr: invoke "onloadend" even if response was not returned from the interceptor (#387) (63efa9aa85926fb5056ef2cee90985120499ec13) @hpohlmeyer @kettanai
xhr: ignore body for GET/HEAD requests (#377) (bff89bf4a9c64caeac2bab861aa69494ef1e8ad3) @hpohlmeyer
Interceptor: set interceptor state on the current event loop cycle (#376) (489c86b3e73745dc97ec03de0d6c851fd2ac4095) @kettanaito
ClientRequest: stream response chunks as they come in (#373) (e192e39ee2d2142008dc3ec4c797088698f25976) @kettanaito
update to "@open-draft/logger@0.3.0" (#371) (10a0cab0963102999734ce6127060547fd8ae39b) @kettanaito
fetch: respect AbortSignal during response patching (#369) (c7492cfa5df68f077bcf090fae806ba4abc984b2) @hpohlmeyer @kettanaito
migrate to ESM-friendly "@open-draft/until@2" (#367) (261d97fe7d63cb7ea1d4cc99e23be4274b322cc4) @kettanaito
update "strict-event-emitter" to 0.5.0 (#365) (496b0a0b8d05ab2965e43ffb63fa2a21814ff2de) @kettanaito
ClientRequest: set null body for GET/HEAD requests (#364) (b0849b4a02268dc5a018ad2101121c3c8321504c) @gfloyd
presets paths in package.json (#361) (305d23dcf7f2a3b6b6a13abe88814dbedfdddac8) @blaenk
XMLHttpRequest: prevent event handlers from being called twice (#360) (313f8cae7496456a5d2372ae50fe774c96bd71f1) @kettanaito
correctly imports commonjs "debug" package (#351) (1e2ffd95a9a00d4a9d53b7fd0fcda98f1d5e7e55) @thebuilder @kettanaito
fetch: treat middleware exceptions as TypeError (#356) (8f7b245a13a17113b77103fe8514ca7cae28d406) @kettanaito
improve node.js host resolution (#354) (7b46cec159028d23791e55f4233df684d1676a05) @kettanaito
ClientRequest: provide correct "main" and "module" paths
whitelist root-level import directories
drop support for node.js < 18 (#349) (237fd68b77d4909991f641306099e9ad5a60d3a5) @kettanaito @milesrichardson
place the default export for "fetch" last (#343) (58d20e838120cc1ae8b23e5de96892bad915ec6e) @JoshAubrey
distribute the library for browser and node in ESM and CJS (#313) (29acc5998911c36059e19bb1d6d8d62d3d64ea6d) @milesrichardson @cdimitroulas @kettanait
XMLHttpRequest: use proxies to implement request interception (#337) (5540e3a6744285c2ea8eddff95fdd947de55c0d9) @kettanaito @avm99963
build library to ES6 (#334) (ea8836e62245f3beaaa9948a59e81721d4ad5f03) @kettanaito
NodeRequestClient: account for undefined "agent" when terminating a request (#330) (6d0f189079d3b3364ed390fecad1e66f500140a5) @Lord-Kamina @kettanaito
xhr: finalize the response on "load" (#322) (a2b815c1cc8b8544d31acfed2723f2927de5771c) @blaenk @kettanaito
RequestWithCredentials internal (#329) (5e1efa6eb8b2f2e15ad2a2648ca7921236adf885) @kettanaitoxhr: do not pass response Content-Encoding to TextDecoder
Content-Encoding to TextDecoder (#318) (2a71953bf31b1ce086b4179c8a76c5505f0a84d4)fetch: remove internal console.log calls
console.log calls (#312) (3a7625a298742b6397d22c426f4ccd1d4d6701b7)change "IDLE" ready state to "INACTIVE"
xhr: removes @xmldom/xmldom, uses native DOMParser
make "credentials" non-enumerable
rewrite "RequestWithCredentials" to a constructor
adopt Fetch API Request and Response
Nothing published for this version
Nothing published for this version
fetch: do not optimistically rely on "location" in fetch interceptor (#348) @till @kettanaito
NodeClientRequest: handle nullable agent when terminating requests
xmldom: bump @xmldom/xmldom from 0.7.5 to 0.8.3
update to "headers-polyfill@3.1"
use nullish coalescing operator when setting default status
add "@types/debug" as a dependency
export "encodeBuffer" and "decodeBuffer" utils
IsomorphicRequest: keep body as a private "_body" property
use "IsomorphicRequest" class to handle request body as buffer
assert unpatched modules state before applying patches
ClientRequest: prevent requests issued by "follow-redirects" from hanging infinitely
fetch: set "response.url" on mocked responses
Your coding agent can read these notes before it upgrades. Set up the MCP server →