# What changed in @react-router/node

> 12 changes in @react-router/node 7 to 8 from its official release notes, upgrade guides and advisories: 1 breaking, 3 new APIs and options. Each one cited. Sources checked 2026-10-20. HTML: https://unstale.sh/npm/@react-router/node/

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

## @react-router/node 8

### Breaking changes

- The minimum supported Node version is now 22.22.0. (8.0.0) — [release notes](https://github.com/remix-run/react-router/blob/4fe4525102870a2b21a4a0568a651d118f5e5dbb/packages/react-router-node/CHANGELOG.md#v800)

### Fixes and other changes

- Session data is written to a temporary file and renamed into place to prevent concurrent commits from corrupting the file, while preserving existing file permissions. (8.5.0) — [release notes](https://github.com/remix-run/react-router/blob/4fe4525102870a2b21a4a0568a651d118f5e5dbb/packages/react-router-node/CHANGELOG.md#v850)
- Fixes memory retention for the lifetime of a long-running stream while preserving error handling when the destination closes as the next chunk is read. (8.4.0) — [release notes](https://github.com/remix-run/react-router/blob/4fe4525102870a2b21a4a0568a651d118f5e5dbb/packages/react-router-node/CHANGELOG.md#v840)
- Fixes memory retention for the lifetime of a long-running stream while preserving error handling when the destination closes as the next chunk is read. (8.4.0) — [release notes](https://github.com/remix-run/react-router/blob/4fe4525102870a2b21a4a0568a651d118f5e5dbb/packages/react-router-node/CHANGELOG.md#v840)
- Prevents client disconnects during streaming from crashing the Node process. (8.3.1) — [release notes](https://github.com/remix-run/react-router/blob/4fe4525102870a2b21a4a0568a651d118f5e5dbb/packages/react-router-node/CHANGELOG.md#v831)
- TypeScript 7 can now be used with @react-router/node. (8.3.0) — [release notes](https://github.com/remix-run/react-router/blob/4fe4525102870a2b21a4a0568a651d118f5e5dbb/packages/react-router-node/CHANGELOG.md#v830)

## @react-router/node 7

### New APIs and options

- Opting in enables middleware; custom servers using getLoadContext may need to migrate to the middleware getLoadContext API. (7.0.0) — [upgrade guide](https://reactrouter.com/upgrading/v7)
- Opting in passes the raw HTTP request to handlers instead of normalizing request.url; use the sibling url parameter for normalized routing logic. (7.0.0) — [upgrade guide](https://reactrouter.com/upgrading/v7)
- Opting in preserves trailing-slash semantics in data request URLs, using /_.data for trailing-slash routes and the root data request. (7.0.0) — [upgrade guide](https://reactrouter.com/upgrading/v7)

### Tooling

- TypeScript 6 is now supported by the peer dependency ranges. (7.14.1) — [release notes](https://github.com/remix-run/react-router/blob/4fe4525102870a2b21a4a0568a651d118f5e5dbb/packages/react-router-node/CHANGELOG.md#v7141)

### Fixes and other changes

- Awaits drain when writable.write() returns false and rejects if the writable errors or closes mid-stream, preventing buffer buildup and hangs. (7.16.0) — [release notes](https://github.com/remix-run/react-router/blob/4fe4525102870a2b21a4a0568a651d118f5e5dbb/packages/react-router-node/CHANGELOG.md#v7160)
- Awaits drain when writable.write() returns false and rejects if the writable errors or closes mid-stream, preventing buffer buildup and hangs. (7.16.0) — [release notes](https://github.com/remix-run/react-router/blob/4fe4525102870a2b21a4a0568a651d118f5e5dbb/packages/react-router-node/CHANGELOG.md#v7160)
