Skip to content

Commit 9c12778

Browse files
committed
Merge branch 'release-next'
2 parents 3cb7b48 + 7350eef commit 9c12778

File tree

45 files changed

+1450
-506
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1450
-506
lines changed

CHANGELOG.md

Lines changed: 110 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@ 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.4.0](#v740)
17-
- [Minor Changes](#minor-changes)
16+
- [v7.4.1](#v741)
17+
- [Security Notice](#security-notice)
1818
- [Patch Changes](#patch-changes)
1919
- [Unstable Changes](#unstable-changes)
20+
- [v7.4.0](#v740)
21+
- [Minor Changes](#minor-changes)
22+
- [Patch Changes](#patch-changes-1)
23+
- [Unstable Changes](#unstable-changes-1)
2024
- [Changes by Package](#changes-by-package)
2125
- [v7.3.0](#v730)
2226
- [Minor Changes](#minor-changes-1)
23-
- [Patch Changes](#patch-changes-1)
24-
- [Unstable Changes](#unstable-changes-1)
27+
- [Patch Changes](#patch-changes-2)
28+
- [Unstable Changes](#unstable-changes-2)
2529
- [Client-side `context` (unstable)](#client-side-context-unstable)
2630
- [Middleware (unstable)](#middleware-unstable)
2731
- [Middleware `context` parameter](#middleware-context-parameter)
@@ -33,28 +37,28 @@ We manage release notes in this file instead of the paginated Github Releases Pa
3337
- [Prerendering with a SPA Fallback](#prerendering-with-a-spa-fallback)
3438
- [Allow a root `loader` in SPA Mode](#allow-a-root-loader-in-spa-mode)
3539
- [Minor Changes](#minor-changes-2)
36-
- [Patch Changes](#patch-changes-2)
37-
- [Unstable Changes](#unstable-changes-2)
40+
- [Patch Changes](#patch-changes-3)
41+
- [Unstable Changes](#unstable-changes-3)
3842
- [Split Route Modules (unstable)](#split-route-modules-unstable)
3943
- [Changes by Package](#changes-by-package-2)
4044
- [v7.1.5](#v715)
41-
- [Patch Changes](#patch-changes-3)
42-
- [v7.1.4](#v714)
4345
- [Patch Changes](#patch-changes-4)
44-
- [v7.1.3](#v713)
46+
- [v7.1.4](#v714)
4547
- [Patch Changes](#patch-changes-5)
46-
- [v7.1.2](#v712)
48+
- [v7.1.3](#v713)
4749
- [Patch Changes](#patch-changes-6)
48-
- [v7.1.1](#v711)
50+
- [v7.1.2](#v712)
4951
- [Patch Changes](#patch-changes-7)
52+
- [v7.1.1](#v711)
53+
- [Patch Changes](#patch-changes-8)
5054
- [v7.1.0](#v710)
5155
- [Minor Changes](#minor-changes-3)
52-
- [Patch Changes](#patch-changes-8)
56+
- [Patch Changes](#patch-changes-9)
5357
- [Changes by Package](#changes-by-package-3)
5458
- [v7.0.2](#v702)
55-
- [Patch Changes](#patch-changes-9)
56-
- [v7.0.1](#v701)
5759
- [Patch Changes](#patch-changes-10)
60+
- [v7.0.1](#v701)
61+
- [Patch Changes](#patch-changes-11)
5862
- [v7.0.0](#v700)
5963
- [Breaking Changes](#breaking-changes)
6064
- [Package Restructuring](#package-restructuring)
@@ -71,199 +75,199 @@ We manage release notes in this file instead of the paginated Github Releases Pa
7175
- [Major Changes (`react-router`)](#major-changes-react-router)
7276
- [Major Changes (`@react-router/*`)](#major-changes-react-router-1)
7377
- [Minor Changes](#minor-changes-4)
74-
- [Patch Changes](#patch-changes-11)
78+
- [Patch Changes](#patch-changes-12)
7579
- [Changes by Package](#changes-by-package-4)
7680
- [React Router v6 Releases](#react-router-v6-releases)
7781
- [v6.30.0](#v6300)
7882
- [Minor Changes](#minor-changes-5)
79-
- [Patch Changes](#patch-changes-12)
83+
- [Patch Changes](#patch-changes-13)
8084
- [v6.29.0](#v6290)
8185
- [Minor Changes](#minor-changes-6)
82-
- [Patch Changes](#patch-changes-13)
83-
- [v6.28.2](#v6282)
8486
- [Patch Changes](#patch-changes-14)
85-
- [v6.28.1](#v6281)
87+
- [v6.28.2](#v6282)
8688
- [Patch Changes](#patch-changes-15)
89+
- [v6.28.1](#v6281)
90+
- [Patch Changes](#patch-changes-16)
8791
- [v6.28.0](#v6280)
8892
- [What's Changed](#whats-changed-1)
8993
- [Minor Changes](#minor-changes-7)
90-
- [Patch Changes](#patch-changes-16)
94+
- [Patch Changes](#patch-changes-17)
9195
- [v6.27.0](#v6270)
9296
- [What's Changed](#whats-changed-2)
9397
- [Stabilized APIs](#stabilized-apis)
9498
- [Minor Changes](#minor-changes-8)
95-
- [Patch Changes](#patch-changes-17)
96-
- [v6.26.2](#v6262)
9799
- [Patch Changes](#patch-changes-18)
98-
- [v6.26.1](#v6261)
100+
- [v6.26.2](#v6262)
99101
- [Patch Changes](#patch-changes-19)
102+
- [v6.26.1](#v6261)
103+
- [Patch Changes](#patch-changes-20)
100104
- [v6.26.0](#v6260)
101105
- [Minor Changes](#minor-changes-9)
102-
- [Patch Changes](#patch-changes-20)
103-
- [v6.25.1](#v6251)
104106
- [Patch Changes](#patch-changes-21)
107+
- [v6.25.1](#v6251)
108+
- [Patch Changes](#patch-changes-22)
105109
- [v6.25.0](#v6250)
106110
- [What's Changed](#whats-changed-3)
107111
- [Stabilized `v7_skipActionErrorRevalidation`](#stabilized-v7_skipactionerrorrevalidation)
108112
- [Minor Changes](#minor-changes-10)
109-
- [Patch Changes](#patch-changes-22)
110-
- [v6.24.1](#v6241)
111113
- [Patch Changes](#patch-changes-23)
114+
- [v6.24.1](#v6241)
115+
- [Patch Changes](#patch-changes-24)
112116
- [v6.24.0](#v6240)
113117
- [What's Changed](#whats-changed-4)
114118
- [Lazy Route Discovery (a.k.a. "Fog of War")](#lazy-route-discovery-aka-fog-of-war)
115119
- [Minor Changes](#minor-changes-11)
116-
- [Patch Changes](#patch-changes-24)
117-
- [v6.23.1](#v6231)
118120
- [Patch Changes](#patch-changes-25)
121+
- [v6.23.1](#v6231)
122+
- [Patch Changes](#patch-changes-26)
119123
- [v6.23.0](#v6230)
120124
- [What's Changed](#whats-changed-5)
121125
- [Data Strategy (unstable)](#data-strategy-unstable)
122126
- [Skip Action Error Revalidation (unstable)](#skip-action-error-revalidation-unstable)
123127
- [Minor Changes](#minor-changes-12)
124128
- [v6.22.3](#v6223)
125-
- [Patch Changes](#patch-changes-26)
126-
- [v6.22.2](#v6222)
127129
- [Patch Changes](#patch-changes-27)
128-
- [v6.22.1](#v6221)
130+
- [v6.22.2](#v6222)
129131
- [Patch Changes](#patch-changes-28)
132+
- [v6.22.1](#v6221)
133+
- [Patch Changes](#patch-changes-29)
130134
- [v6.22.0](#v6220)
131135
- [What's Changed](#whats-changed-6)
132136
- [Core Web Vitals Technology Report Flag](#core-web-vitals-technology-report-flag)
133137
- [Minor Changes](#minor-changes-13)
134-
- [Patch Changes](#patch-changes-29)
135-
- [v6.21.3](#v6213)
136138
- [Patch Changes](#patch-changes-30)
137-
- [v6.21.2](#v6212)
139+
- [v6.21.3](#v6213)
138140
- [Patch Changes](#patch-changes-31)
139-
- [v6.21.1](#v6211)
141+
- [v6.21.2](#v6212)
140142
- [Patch Changes](#patch-changes-32)
143+
- [v6.21.1](#v6211)
144+
- [Patch Changes](#patch-changes-33)
141145
- [v6.21.0](#v6210)
142146
- [What's Changed](#whats-changed-7)
143147
- [`future.v7_relativeSplatPath`](#futurev7_relativesplatpath)
144148
- [Partial Hydration](#partial-hydration)
145149
- [Minor Changes](#minor-changes-14)
146-
- [Patch Changes](#patch-changes-33)
147-
- [v6.20.1](#v6201)
148150
- [Patch Changes](#patch-changes-34)
151+
- [v6.20.1](#v6201)
152+
- [Patch Changes](#patch-changes-35)
149153
- [v6.20.0](#v6200)
150154
- [Minor Changes](#minor-changes-15)
151-
- [Patch Changes](#patch-changes-35)
155+
- [Patch Changes](#patch-changes-36)
152156
- [v6.19.0](#v6190)
153157
- [What's Changed](#whats-changed-8)
154158
- [`unstable_flushSync` API](#unstable_flushsync-api)
155159
- [Minor Changes](#minor-changes-16)
156-
- [Patch Changes](#patch-changes-36)
160+
- [Patch Changes](#patch-changes-37)
157161
- [v6.18.0](#v6180)
158162
- [What's Changed](#whats-changed-9)
159163
- [New Fetcher APIs](#new-fetcher-apis)
160164
- [Persistence Future Flag (`future.v7_fetcherPersist`)](#persistence-future-flag-futurev7_fetcherpersist)
161165
- [Minor Changes](#minor-changes-17)
162-
- [Patch Changes](#patch-changes-37)
166+
- [Patch Changes](#patch-changes-38)
163167
- [v6.17.0](#v6170)
164168
- [What's Changed](#whats-changed-10)
165169
- [View Transitions 🚀](#view-transitions-)
166170
- [Minor Changes](#minor-changes-18)
167-
- [Patch Changes](#patch-changes-38)
171+
- [Patch Changes](#patch-changes-39)
168172
- [v6.16.0](#v6160)
169173
- [Minor Changes](#minor-changes-19)
170-
- [Patch Changes](#patch-changes-39)
174+
- [Patch Changes](#patch-changes-40)
171175
- [v6.15.0](#v6150)
172176
- [Minor Changes](#minor-changes-20)
173-
- [Patch Changes](#patch-changes-40)
174-
- [v6.14.2](#v6142)
175177
- [Patch Changes](#patch-changes-41)
176-
- [v6.14.1](#v6141)
178+
- [v6.14.2](#v6142)
177179
- [Patch Changes](#patch-changes-42)
180+
- [v6.14.1](#v6141)
181+
- [Patch Changes](#patch-changes-43)
178182
- [v6.14.0](#v6140)
179183
- [What's Changed](#whats-changed-11)
180184
- [JSON/Text Submissions](#jsontext-submissions)
181185
- [Minor Changes](#minor-changes-21)
182-
- [Patch Changes](#patch-changes-43)
186+
- [Patch Changes](#patch-changes-44)
183187
- [v6.13.0](#v6130)
184188
- [What's Changed](#whats-changed-12)
185189
- [`future.v7_startTransition`](#futurev7_starttransition)
186190
- [Minor Changes](#minor-changes-22)
187-
- [Patch Changes](#patch-changes-44)
188-
- [v6.12.1](#v6121)
189191
- [Patch Changes](#patch-changes-45)
192+
- [v6.12.1](#v6121)
193+
- [Patch Changes](#patch-changes-46)
190194
- [v6.12.0](#v6120)
191195
- [What's Changed](#whats-changed-13)
192196
- [`React.startTransition` support](#reactstarttransition-support)
193197
- [Minor Changes](#minor-changes-23)
194-
- [Patch Changes](#patch-changes-46)
195-
- [v6.11.2](#v6112)
196198
- [Patch Changes](#patch-changes-47)
197-
- [v6.11.1](#v6111)
199+
- [v6.11.2](#v6112)
198200
- [Patch Changes](#patch-changes-48)
201+
- [v6.11.1](#v6111)
202+
- [Patch Changes](#patch-changes-49)
199203
- [v6.11.0](#v6110)
200204
- [Minor Changes](#minor-changes-24)
201-
- [Patch Changes](#patch-changes-49)
205+
- [Patch Changes](#patch-changes-50)
202206
- [v6.10.0](#v6100)
203207
- [What's Changed](#whats-changed-14)
204208
- [Minor Changes](#minor-changes-25)
205209
- [`future.v7_normalizeFormMethod`](#futurev7_normalizeformmethod)
206-
- [Patch Changes](#patch-changes-50)
210+
- [Patch Changes](#patch-changes-51)
207211
- [v6.9.0](#v690)
208212
- [What's Changed](#whats-changed-15)
209213
- [`Component`/`ErrorBoundary` route properties](#componenterrorboundary-route-properties)
210214
- [Introducing Lazy Route Modules](#introducing-lazy-route-modules)
211215
- [Minor Changes](#minor-changes-26)
212-
- [Patch Changes](#patch-changes-51)
213-
- [v6.8.2](#v682)
214216
- [Patch Changes](#patch-changes-52)
215-
- [v6.8.1](#v681)
217+
- [v6.8.2](#v682)
216218
- [Patch Changes](#patch-changes-53)
219+
- [v6.8.1](#v681)
220+
- [Patch Changes](#patch-changes-54)
217221
- [v6.8.0](#v680)
218222
- [Minor Changes](#minor-changes-27)
219-
- [Patch Changes](#patch-changes-54)
223+
- [Patch Changes](#patch-changes-55)
220224
- [v6.7.0](#v670)
221225
- [Minor Changes](#minor-changes-28)
222-
- [Patch Changes](#patch-changes-55)
223-
- [v6.6.2](#v662)
224226
- [Patch Changes](#patch-changes-56)
225-
- [v6.6.1](#v661)
227+
- [v6.6.2](#v662)
226228
- [Patch Changes](#patch-changes-57)
229+
- [v6.6.1](#v661)
230+
- [Patch Changes](#patch-changes-58)
227231
- [v6.6.0](#v660)
228232
- [What's Changed](#whats-changed-16)
229233
- [Minor Changes](#minor-changes-29)
230-
- [Patch Changes](#patch-changes-58)
234+
- [Patch Changes](#patch-changes-59)
231235
- [v6.5.0](#v650)
232236
- [What's Changed](#whats-changed-17)
233237
- [Minor Changes](#minor-changes-30)
234-
- [Patch Changes](#patch-changes-59)
235-
- [v6.4.5](#v645)
236238
- [Patch Changes](#patch-changes-60)
237-
- [v6.4.4](#v644)
239+
- [v6.4.5](#v645)
238240
- [Patch Changes](#patch-changes-61)
239-
- [v6.4.3](#v643)
241+
- [v6.4.4](#v644)
240242
- [Patch Changes](#patch-changes-62)
241-
- [v6.4.2](#v642)
243+
- [v6.4.3](#v643)
242244
- [Patch Changes](#patch-changes-63)
243-
- [v6.4.1](#v641)
245+
- [v6.4.2](#v642)
244246
- [Patch Changes](#patch-changes-64)
247+
- [v6.4.1](#v641)
248+
- [Patch Changes](#patch-changes-65)
245249
- [v6.4.0](#v640)
246250
- [What's Changed](#whats-changed-18)
247251
- [Remix Data APIs](#remix-data-apis)
248-
- [Patch Changes](#patch-changes-65)
252+
- [Patch Changes](#patch-changes-66)
249253
- [v6.3.0](#v630)
250254
- [Minor Changes](#minor-changes-31)
251255
- [v6.2.2](#v622)
252-
- [Patch Changes](#patch-changes-66)
253-
- [v6.2.1](#v621)
254256
- [Patch Changes](#patch-changes-67)
257+
- [v6.2.1](#v621)
258+
- [Patch Changes](#patch-changes-68)
255259
- [v6.2.0](#v620)
256260
- [Minor Changes](#minor-changes-32)
257-
- [Patch Changes](#patch-changes-68)
258-
- [v6.1.1](#v611)
259261
- [Patch Changes](#patch-changes-69)
262+
- [v6.1.1](#v611)
263+
- [Patch Changes](#patch-changes-70)
260264
- [v6.1.0](#v610)
261265
- [Minor Changes](#minor-changes-33)
262-
- [Patch Changes](#patch-changes-70)
263-
- [v6.0.2](#v602)
264266
- [Patch Changes](#patch-changes-71)
265-
- [v6.0.1](#v601)
267+
- [v6.0.2](#v602)
266268
- [Patch Changes](#patch-changes-72)
269+
- [v6.0.1](#v601)
270+
- [Patch Changes](#patch-changes-73)
267271
- [v6.0.0](#v600)
268272

269273
</details>
@@ -305,6 +309,36 @@ Date: YYYY-MM-DD
305309
**Full Changelog**: [`v7.X.Y...v7.X.Y`](https://github.com/remix-run/react-router/compare/[email protected]@7.X.Y)
306310
-->
307311

312+
## v7.4.1
313+
314+
Date: 2025-03-28
315+
316+
### Security Notice
317+
318+
Fixed a security vulnerability that allowed URL manipulation and potential cache pollution via the `Host` and `X-Forwarded-Host` headers due to inadequate port sanitization.
319+
320+
### Patch Changes
321+
322+
- `react-router` - Dedupe calls to `route.lazy` functions ([#13260](https://github.com/remix-run/react-router/pull/13260))
323+
- `@react-router/dev` - Fix path in prerender error messages ([#13257](https://github.com/remix-run/react-router/pull/13257))
324+
- `@react-router/dev` - Fix typegen for virtual modules when `moduleDetection` is set to `force` ([#13267](https://github.com/remix-run/react-router/pull/13267))
325+
- `@react-router/express` - Better validation of `x-forwarded-host` header to prevent potential security issues ([#13309](https://github.com/remix-run/react-router/pull/13309))
326+
327+
### Unstable Changes
328+
329+
⚠️ _[Unstable features](https://reactrouter.com/community/api-development-strategy#unstable-flags) are not recommended for production use_
330+
331+
- `react-router` - Fix types on `unstable_MiddlewareFunction` to avoid type errors when a middleware doesn't return a value ([#13311](https://github.com/remix-run/react-router/pull/13311))
332+
- `react-router` - Add support for `route.unstable_lazyMiddleware` function to allow lazy loading of middleware logic ([#13210](https://github.com/remix-run/react-router/pull/13210))
333+
- ⚠️ We do not recommend adoption of this API currently as we are likely going to change it prior to the stable release of middleware
334+
- ⚠️ This may be a breaking change if your app is currently returning `unstable_middleware` from `route.lazy`
335+
- The `route.unstable_middleware` property is no longer supported in the return value from `route.lazy`
336+
- If you want to lazily load middleware, you must use `route.unstable_lazyMiddleware`
337+
- `@react-router/dev` - When both `future.unstable_middleware` and `future.unstable_splitRouteModules` are enabled, split `unstable_clientMiddleware` route exports into separate chunks when possible ([#13210](https://github.com/remix-run/react-router/pull/13210))
338+
- `@react-router/dev` - Improve performance of `future.unstable_middleware` by ensuring that route modules are only blocking during the middleware phase when the `unstable_clientMiddleware` has been defined ([#13210](https://github.com/remix-run/react-router/pull/13210))
339+
340+
**Full Changelog**: [`v7.4.0...v7.4.1`](https://github.com/remix-run/react-router/compare/[email protected]@7.4.1)
341+
308342
## v7.4.0
309343

310344
Date: 2025-03-19

0 commit comments

Comments
 (0)