# What changed in jest-fetch-mock

> 24 changes in jest-fetch-mock 4 from its official release notes, upgrade guides and advisories: 9 breaking, 13 new APIs and options. Each one cited. Sources checked 2026-10-28. HTML: https://unstale.sh/npm/jest-fetch-mock/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## jest-fetch-mock 4

### Breaking changes

- Resetting mocks now clears registered routes too. (4.2.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.2.0)
- Queued mockResponseOnce responses and mockReject/mockAbort take precedence over routes; matching routes outrank the ambient default and conditional gate, including under dontMock(). (4.2.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.2.0)
- disableMocks() now restores the environment's original fetch. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- In environments with fetch primitives, mocked Responses are native responses and the package no longer replaces global fetch classes; environments without them receive only the missing cross-fetch globals. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- The minimum supported Jest version is 28; older stacks should stay on 3.2.0. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- The minimum supported Node version is 18; older stacks should stay on 3.2.0. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- In Node environments, relative URLs resolve against http://localhost/ for match predicates. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- Under Node types, response.json() is typed as Promise<unknown>. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- Definitions are self-contained, no longer require @types/jest or force the dom lib, and take ambient fetch types from dom or @types/node ≥ 18. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)

### New APIs and options

- Empty the registered route registry. (4.2.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.2.0)
- Register routes using URL strings, RegExp, or request predicates, with responses accepted by mockResponse. Routes coexist, and the first registered match wins. (4.2.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.2.0)
- Register a route that is consumed by its first match. (4.2.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.2.0)
- The Response wrapper exposes the error static for use in mocked responses. (4.1.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.1.0)
- On native fetch, the Response wrapper exposes the json static. (4.1.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.1.0)
- The Response wrapper exposes the redirect static for use in mocked responses. (4.1.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.1.0)
- A createFetchMock(jest) factory enables setups using injectGlobals: false or @jest/globals. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- An exports map with a ./ wildcard escape hatch is available alongside ESM wrappers. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- Sets default response initialization, such as JSON headers, merged under every mock. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- Adds a reassignable passthrough target for real fetch requests. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- Adds fetchMock.usingNativeFetch. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- A dependency-free factory entry is available for injectGlobals: false and @jest/globals setups. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- A setup entry provides a one-line setupFilesAfterEnv configuration. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)

### Fixes and other changes

- Timeout aborts reject with TimeoutError, and custom abort reasons pass through. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
- When setup runs in setupFilesAfterEnv, resetMocks: true automatically re-arms the fetch mock, preventing fetch from returning undefined. (4.0.0) — [release notes](https://github.com/jefflau/jest-fetch-mock/releases/tag/v4.0.0)
