NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2643 most downloaded on npm
Fetch API implementation for Node
Last release 4 days ago
30 Sep 2026
Ships unpredictably
gaps range from 8 days to 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
1378 releases · first in 2022
One column per quarter.
Nothing published for this version
```js import { Headers } from "@whatwg-node/fetch";
#2079
090b4b0
Thanks @ardatan! - Fix the bug when
set-cookies given is ignored in HeadersInit;
import { Headers } from "@whatwg-node/fetch";
const headers = new Headers([
["set-cookie", "a=b"],
["set-cookie", "c=d"],
]);
expect(headers.getSetCookie()).toEqual(["a=b", "c=d"]); // Previously it was empty
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
404 is returned if the file is missing
#2049
7c95998
Thanks @ardatan! - Redirect with correct status
codes
#2051
252f68b
Thanks @ardatan! - Fix crash on null header
values during inspect
#2009
5b5ae5f
Thanks @ardatan! - When fetch('file:///...')
is used to read files;
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
`337e605` Thanks @ardatan! - - Use native AbortSignal and AbortController for Request.signal
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
### Patch Changes - #1961 `2785c80` Thanks @ardatan! - ReadableStream's Symbol.asyncIterator now returns AsyncIterableIterator like before even if it
Nothing published for this version
Removed dependency `@kamilkisiela/fast-url-parser@^1.1.4` ↗︎ (from dependencies)
#1929
b88b85c
Thanks @ardatan! - dependencies updates:
@kamilkisiela/fast-url-parser@^1.1.4 ↗︎
(from dependencies)fast-querystring@^1.1.1 ↗︎
(from dependencies)#1947
9b39c3e
Thanks @ardatan! - Remove the event listener on
the provided AbortSignal when node-libcurl is used, the connection
finishes to prevent potential memory leaks;
const res = await fetch(URL, { signal: new AbortController().signal });
// AbortController is never aborted, and HTTP request is done as expected successfully
#1929
b88b85c
Thanks @ardatan! - - Remove URL ponyfill
implementation based on fast-url-parser and fast-querystring, because Node
now uses Ada URL parser which is fast enough.
ReadableStream[Symbol.asyncIterator]ReadableStream uses Readable so it uses Symbol.asyncIterator method of
Readable but the returned iterator's .return method doesn't handle
cancellation correctly. So we need to call readable.destroy(optionalError)
manually to cancel the stream.
This allows ReadableStream to use implementations relying on
AsyncIterable.cancel to handle cancellation like Readable.from
Previously the following was not handling cancellation;
const res = new ReadableStream({
start(controller) {
controller.enqueue("Hello");
controller.enqueue("World");
},
cancel(reason) {
console.log("cancelled", reason);
},
});
const readable = Readable.from(res);
readable.destroy(new Error("MY REASON"));
// Should log 'cancelled MY REASON'
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →