Packages

@whatwg-node/node-fetch

0.9.2 · 22 Oct 2026MIT8.8M / weekRepositoryHomepagenpmAtom feed

100 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.

  1. 0.9.x · latest line
  2. 0.9.2

    22 Oct 2026
    • #3694 f927bd2 Thanks @dependabot! - dependencies updates:

    • #3715 06e7013 Thanks @ardatan! - Fulfill pending reader.read() as { done: true } when cancel(reason) runs, matching the WHATWG ReadableStream cancel algorithm (and native undici).

      Previously cancel() called readable.destroy() without ending the stream first, so an in-flight read() rejected with ERR_STREAM_PREMATURE_CLOSE / Premature close instead of settling as done. The cancel reason still reaches underlyingSource.cancel(reason).

  3. 0.9.1

    30 Sep 2026
    • #3642 ed29dc2 Thanks @ardatan! - Follow the Fetch standard when the Node HTTP transport follows redirects.

      fetchNodeHttp recursed on every 3xx Location while redirect was 'follow' (the default) and never counted hops. A response that always redirects could keep one fetch call issuing requests until the process ran out of memory. Following now stops after 20 redirects. The promise rejects with TypeError: Fetch failed: Maximum number of redirects (20) reached and code TooManyRedirects. A chain of 20 redirects that then returns a normal response still completes.

      That path also reused the previous request's Headers object for the next hop. A cross-origin Location therefore received Authorization, Proxy-Authorization, Cookie, Cookie2, and an explicit Host. Those headers are removed when the origin changes. The scheme is part of the origin, so an https to http redirect drops them too. Same-origin redirects still send them. Removal happens on a new header list, so the caller's own Headers object is left unchanged.

      301 and 302 responses to POST, and 303 responses to any method other than GET or HEAD, are resent as GET with no body. The request-body headers go with the body: Content-Encoding, Content-Language, Content-Location, Content-Type, and Content-Length. 307 and 308 keep the method and body when that body can be sent again. A one-shot stream cannot, and that redirect rejects.

      A cross-origin redirect whose URL includes a username or password is rejected with TypeError when the request mode is cors. Following it would send those URL credentials to the new origin as Authorization.

      A resent FormData body is encoded again with a new multipart boundary of the same length, so its Content-Length stays valid. Content-Type is replaced because that header names the boundary.

      redirect: 'error' rejects with a TypeError. A redirect whose target scheme is not http or https also rejects with a TypeError. redirect: 'manual' still returns the redirect response.

      Response.redirect() serializes an absolute URL into the Location header and throws TypeError when that URL cannot be parsed. A relative URL is stored as given, so Response.redirect('/') sets Location to /. The status must be 301, 302, 303, 307, or 308; any other status throws RangeError. The response status text is empty.

      @whatwg-node/fetch uses this transport on Node, so the same limits apply there.

  4. 0.9.0

    21 Sep 2026
  5. 0.8.x
  6. 0.8.6

    2 Jun 2026

    Reading the note…

  7. 0.8.5

    6 Jan 2026

    Reading the note…

  8. 0.8.4

    10 Nov 2025

    Reading the note…

  9. 0.8.3

    10 Nov 2025

    Reading the note…

  10. 0.8.2

    4 Nov 2025

    Reading the note…

  11. 0.8.1

    9 Oct 2025

    Reading the note…

  12. 0.8.0

    19 Sep 2025

    Reading the note…

  13. 0.7.x
  14. 0.7.25

    1 Aug 2025

    Reading the note…

  15. 0.7.24

    29 Jul 2025

    Reading the note…

  16. 0.7.23

    28 Jul 2025

    Reading the note…

  17. 0.7.22

    17 Jul 2025

    Reading the note…

  18. 0.7.21

    20 May 2025

    Reading the note…

  19. 0.7.20

    16 May 2025

    Reading the note…

  20. 0.7.19

    10 May 2025

    Reading the note…

  21. 0.7.18

    14 Apr 2025

    Reading the note…

  22. 0.7.17

    25 Mar 2025

    Reading the note…

  23. 0.7.16

    25 Mar 2025

    Reading the note…

  24. 0.7.15

    25 Mar 2025

    Reading the note…

  25. 0.7.14

    19 Mar 2025

    Reading the note…

  26. 0.7.13

    17 Mar 2025

    Reading the note…

  27. 0.7.12

    25 Feb 2025

    Reading the note…

  28. 0.7.11

    24 Feb 2025

    Reading the note…

  29. 0.7.10

    20 Feb 2025

    Reading the note…

  30. 0.7.9

    13 Feb 2025

    Reading the note…

  31. 0.7.8

    5 Feb 2025

    Reading the note…

  32. 0.7.7

    10 Jan 2025

    Reading the note…

  33. 0.7.6

    10 Jan 2025

    Reading the note…

  34. 0.7.5

    10 Dec 2024

    Reading the note…

  35. 0.7.4

    25 Nov 2024

    Reading the note…

  36. 0.7.3

    19 Nov 2024

    Reading the note…

  37. 0.7.2

    11 Nov 2024

    Reading the note…

  38. 0.7.1

    9 Nov 2024

    Reading the note…

  39. 0.7.0

    8 Nov 2024

    Reading the note…

  40. 0.6.x
  41. 0.6.0

    4 Nov 2024

    Reading the note…

  42. 0.5.x
  43. 0.5.27

    21 Oct 2024

    Reading the note…

  44. 0.5.26

    1 Sep 2024

    Reading the note…

  45. 0.5.25

    22 Aug 2024

    Reading the note…

  46. 0.5.24

    21 Aug 2024

    Reading the note…

  47. 0.5.23

    21 Aug 2024

    Reading the note…

  48. 0.5.22

    14 Aug 2024

    Reading the note…

  49. 0.5.21

    8 Aug 2024

    Reading the note…

  50. 0.5.20

    30 Jul 2024

    Reading the note…

  51. 0.5.19

    29 Jul 2024

    Reading the note…

  52. 0.5.18

    26 Jul 2024

    Reading the note…

  53. 0.5.17

    26 Jul 2024

    Reading the note…

  54. 0.5.16

    26 Jul 2024

    Reading the note…

  55. 0.5.15

    25 Jul 2024

    Reading the note…