Packages

@whatwg-node/fetch

0.12.1 · 30 Sep 2026MIT8.9M / weekRepositoryHomepagenpmAtom feed

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

  1. 0.12.x · latest line
  2. 0.12.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.

  3. 0.12.0

    21 Sep 2026
    • #3617 f78c03b Thanks @ardatan! - Stop exporting crypto from @whatwg-node/fetch (and from createFetch / FetchAPI). Use globalThis.crypto instead; it is available on all supported runtimes (Node.js >=22.15).

  4. 0.11.x
  5. 0.11.0

    21 Sep 2026
  6. 0.10.x
  7. 0.10.13

    10 Nov 2025

    Reading the note…

  8. 0.10.12

    4 Nov 2025

    Reading the note…

  9. 0.10.11

    19 Sep 2025

    Reading the note…

  10. 0.10.10

    1 Aug 2025

    Reading the note…

  11. 0.10.9

    17 Jul 2025

    Reading the note…

  12. 0.10.8

    20 May 2025

    Reading the note…

  13. 0.10.7

    10 May 2025

    Reading the note…

  14. 0.10.6

    14 Apr 2025

    Reading the note…

  15. 0.10.5

    24 Feb 2025

    Reading the note…

  16. 0.10.4

    20 Feb 2025

    Reading the note…

  17. 0.10.3

    10 Jan 2025

    Reading the note…

  18. 0.10.2

    10 Jan 2025

    Reading the note…

  19. 0.10.1

    9 Nov 2024

    Reading the note…

  20. 0.10.0

    8 Nov 2024

    Reading the note…

  21. 0.9.x
  22. 0.9.23

    4 Nov 2024

    Reading the note…

  23. 0.9.22

    21 Oct 2024

    Reading the note…

  24. 0.9.21

    21 Aug 2024

    Reading the note…

  25. 0.9.20

    14 Aug 2024

    Reading the note…

  26. 0.9.19

    26 Jul 2024

    Reading the note…

  27. 0.9.18

    1 Jun 2024

    Reading the note…

  28. 0.9.17

    1 Mar 2024

    Reading the note…

  29. 0.9.16

    25 Jan 2024

    Reading the note…

  30. 0.9.15

    2 Jan 2024

    Reading the note…

  31. 0.9.14

    25 Oct 2023

    Reading the note…

  32. 0.9.13

    11 Sep 2023

    Reading the note…

  33. 0.9.12

    1 Sep 2023

    Reading the note…

  34. 0.9.11

    1 Sep 2023

    Reading the note…

  35. 0.9.10

    1 Sep 2023

    Reading the note…

  36. 0.9.9

    14 Jul 2023

    Reading the note…

  37. 0.9.8

    10 Jul 2023

    Reading the note…

  38. 0.9.7

    22 Jun 2023

    Reading the note…

  39. 0.9.6

    13 Jun 2023

    Reading the note…

  40. 0.9.5

    13 Jun 2023

    Reading the note…

  41. 0.9.4

    8 Jun 2023

    Reading the note…

  42. 0.9.3

    5 Jun 2023

    Reading the note…

  43. 0.9.2

    2 Jun 2023

    Reading the note…

  44. 0.9.1

    31 May 2023

    Reading the note…

  45. 0.9.0

    17 May 2023

    Reading the note…

  46. 0.8.x
  47. 0.8.8

    24 Apr 2023

    Reading the note…

  48. 0.8.7

    24 Apr 2023

    Reading the note…

  49. 0.8.6

    23 Apr 2023

    Reading the note…

  50. 0.8.5

    17 Apr 2023

    Reading the note…

  51. 0.8.4

    23 Mar 2023

    Reading the note…

  52. 0.8.3

    20 Mar 2023

    Reading the note…

  53. 0.8.2

    3 Mar 2023

    Reading the note…

  54. 0.8.1

    10 Feb 2023

    Reading the note…

  55. 0.8.0

    10 Feb 2023

    Reading the note…