Skip to content

Commit 97c8de7

Browse files
Release v7.15.0 (#15018)
Co-authored-by: Remix Run Bot <hello@remix.run>
1 parent af5d49b commit 97c8de7

40 files changed

Lines changed: 235 additions & 59 deletions

CHANGELOG.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa
1313
<summary>Table of Contents</summary>
1414

1515
- [React Router Releases](#react-router-releases)
16+
- [v7.15.0](#v7150)
1617
- [v7.14.2](#v7142)
1718
- [v7.14.1](#v7141)
1819
- [v7.14.0](#v7140)
@@ -169,6 +170,81 @@ We manage release notes in this file instead of the paginated Github Releases Pa
169170

170171
</details>
171172

173+
## v7.15.0
174+
175+
Date: 2026-05-05
176+
177+
### Minor Changes
178+
179+
- `react-router` - Stabilize `unstable_defaultShouldRevalidate` as `defaultShouldRevalidate` on `<Link>`, `<Form>`, `useLinkClickHandler`, `useSubmit`, `fetcher.submit`, and `setSearchParams` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
180+
181+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
182+
183+
- `react-router` - Stabilize the instrumentation APIs. `unstable_instrumentations` is now `instrumentations` and `unstable_pattern` is now `pattern` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
184+
185+
- The `unstable_ServerInstrumentation`, `unstable_ClientInstrumentation`, `unstable_InstrumentRequestHandlerFunction`, `unstable_InstrumentRouterFunction`, `unstable_InstrumentRouteFunction`, and `unstable_InstrumentationHandlerResult` types have had their `unstable_` prefixes removed
186+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
187+
188+
- `react-router` - Stabilize `unstable_mask` as `mask` on `<Link>`, `useLinkClickHandler`, and `useNavigate`, and rename the corresponding `Location.unstable_mask` field to `Location.mask` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
189+
190+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
191+
192+
- `react-router` - Stabilize the `unstable_normalizePath` option on `staticHandler.query` and `staticHandler.queryRoute` as `normalizePath` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
193+
194+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
195+
196+
- `react-router` - Stabilize `future.unstable_passThroughRequests` as `future.v8_passThroughRequests` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
197+
198+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
199+
200+
- `react-router` - Remove `unstable_subResourceIntegrity` from the runtime `FutureConfig` type; the flag is now controlled by the top-level `subResourceIntegrity` option in `react-router.config.ts` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
201+
202+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
203+
204+
- `react-router` - Stabilize `unstable_url` as `url` on `loader`, `action`, and `middleware` function args ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
205+
206+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
207+
208+
- `react-router` - Stabilize `unstable_useTransitions` as `useTransitions` on `<BrowserRouter>`, `<HashRouter>`, `<HistoryRouter>`, `<MemoryRouter>`, `<Router>`, `<RouterProvider>`, `<HydratedRouter>`, and `useLinkClickHandler` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
209+
210+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
211+
212+
- `@react-router/dev` - Stabilize `future.unstable_passThroughRequests` as `future.v8_passThroughRequests` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
213+
214+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
215+
216+
- `@react-router/dev` - Stabilize `prerender.unstable_concurrency` as `prerender.concurrency` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
217+
218+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
219+
220+
- `@react-router/dev` - Stabilize `future.unstable_subResourceIntegrity` as a top-level `subResourceIntegrity` config option in `react-router.config.ts` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
221+
222+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
223+
224+
### Patch Changes
225+
226+
- `react-router` - Add `nonce` to `<Scripts>` `<link rel="modulepreload">` elements (if provided) ([af5d49b](https://github.com/remix-run/react-router/commit/af5d49b))
227+
228+
- `react-router` - Fix a bug with `unstable_defaultShouldRevalidate={false}` where parent routes that did not export a `shouldRevalidate` function could be incorrectly included in the single fetch call for new child route data ([#15012](https://github.com/remix-run/react-router/pull/15012))
229+
230+
- `react-router` - Improve server-side route matching performance by pre-computing flattened/cached route branches ([#14967](https://github.com/remix-run/react-router/pull/14967)) ([af5d49b](https://github.com/remix-run/react-router/commit/af5d49b))
231+
232+
- Performance benchmarks showed roughly a 10-15% improvement in server-side request handling performance
233+
234+
- `react-router` - Mark `mask` as an optional field in `Location` for easier mocking in unit tests ([#14999](https://github.com/remix-run/react-router/pull/14999))
235+
236+
- `react-router` - Cache flattened/ranked route branches to optimize server-side route matching ([#14967](https://github.com/remix-run/react-router/pull/14967))
237+
238+
- `react-router` - Improve route matching performance in Framework/Data Mode ([#14971](https://github.com/remix-run/react-router/pull/14971)) ([af5d49b](https://github.com/remix-run/react-router/commit/af5d49b))
239+
240+
- Avoiding unnecessary calls to `matchRoutes` in data router scenarios
241+
- This includes adding back the optimization that was removed in `7.6.0` ([#13562](https://github.com/remix-run/react-router/pull/13562))
242+
- The issues that prompted the revert have been addressed by using the available router `matches` but always updating `match.route` to the latest route in the `manifest`
243+
- Leverage pre-computed pre-computing flattened/cached route branches during client side route matching
244+
- Performance benchmarks showed roughly a 15-30% improvement in server-side request handling performance
245+
246+
**Full Changelog**: [`v7.14.2...v7.15.0`](https://github.com/remix-run/react-router/compare/react-router@7.14.2...react-router@7.15.0)
247+
172248
## v7.14.2
173249

174250
Date: 2026-04-21

packages/create-react-router/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# `create-react-router`
22

3+
## v7.15.0
4+
5+
### Patch Changes
6+
7+
- _No changes_
8+
39
## v7.14.2
410

511
### Patch Changes

packages/create-react-router/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "create-react-router",
3-
"version": "7.14.2",
3+
"version": "7.15.0",
44
"description": "Create a new React Router app",
55
"homepage": "https://reactrouter.com",
66
"bugs": {

packages/react-router-architect/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# `@react-router/architect`
22

3+
## v7.15.0
4+
5+
### Patch Changes
6+
7+
- Updated dependencies:
8+
- [`react-router@7.15.0`](https://github.com/remix-run/react-router/releases/tag/react-router@7.15.0)
9+
- [`@react-router/node@7.15.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/node@7.15.0)
10+
311
## v7.14.2
412

513
### Patch Changes

packages/react-router-architect/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@react-router/architect",
3-
"version": "7.14.2",
3+
"version": "7.15.0",
44
"description": "Architect server request handler for React Router",
55
"bugs": {
66
"url": "https://github.com/remix-run/react-router/issues"

packages/react-router-cloudflare/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# `@react-router/cloudflare`
22

3+
## v7.15.0
4+
5+
### Patch Changes
6+
7+
- Updated dependencies:
8+
- [`react-router@7.15.0`](https://github.com/remix-run/react-router/releases/tag/react-router@7.15.0)
9+
310
## v7.14.2
411

512
### Patch Changes

packages/react-router-cloudflare/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@react-router/cloudflare",
3-
"version": "7.14.2",
3+
"version": "7.15.0",
44
"description": "Cloudflare platform abstractions for React Router",
55
"bugs": {
66
"url": "https://github.com/remix-run/react-router/issues"

packages/react-router-dev/.changes/minor.stabilize-pass-through-requests.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/react-router-dev/.changes/minor.stabilize-prerender-concurrency.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/react-router-dev/.changes/minor.stabilize-sri.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)