@@ -13,15 +13,18 @@ We manage release notes in this file instead of the paginated Github Releases Pa
13
13
<summary >Table of Contents</summary >
14
14
15
15
- [ React Router Releases] ( #react-router-releases )
16
- - [ v7.4.0] ( #v740 )
17
- - [ Minor Changes] ( #minor-changes )
16
+ - [ v7.4.1] ( #v741 )
18
17
- [ Patch Changes] ( #patch-changes )
19
18
- [ Unstable Changes] ( #unstable-changes )
19
+ - [ v7.4.0] ( #v740 )
20
+ - [ Minor Changes] ( #minor-changes )
21
+ - [ Patch Changes] ( #patch-changes-1 )
22
+ - [ Unstable Changes] ( #unstable-changes-1 )
20
23
- [ Changes by Package] ( #changes-by-package )
21
24
- [ v7.3.0] ( #v730 )
22
25
- [ Minor Changes] ( #minor-changes-1 )
23
- - [ Patch Changes] ( #patch-changes-1 )
24
- - [ Unstable Changes] ( #unstable-changes-1 )
26
+ - [ Patch Changes] ( #patch-changes-2 )
27
+ - [ Unstable Changes] ( #unstable-changes-2 )
25
28
- [ Client-side ` context ` (unstable)] ( #client-side-context-unstable )
26
29
- [ Middleware (unstable)] ( #middleware-unstable )
27
30
- [ Middleware ` context ` parameter] ( #middleware-context-parameter )
@@ -33,28 +36,28 @@ We manage release notes in this file instead of the paginated Github Releases Pa
33
36
- [ Prerendering with a SPA Fallback] ( #prerendering-with-a-spa-fallback )
34
37
- [ Allow a root ` loader ` in SPA Mode] ( #allow-a-root-loader-in-spa-mode )
35
38
- [ Minor Changes] ( #minor-changes-2 )
36
- - [ Patch Changes] ( #patch-changes-2 )
37
- - [ Unstable Changes] ( #unstable-changes-2 )
39
+ - [ Patch Changes] ( #patch-changes-3 )
40
+ - [ Unstable Changes] ( #unstable-changes-3 )
38
41
- [ Split Route Modules (unstable)] ( #split-route-modules-unstable )
39
42
- [ Changes by Package] ( #changes-by-package-2 )
40
43
- [ v7.1.5] ( #v715 )
41
- - [ Patch Changes] ( #patch-changes-3 )
42
- - [ v7.1.4] ( #v714 )
43
44
- [ Patch Changes] ( #patch-changes-4 )
44
- - [ v7.1.3 ] ( #v713 )
45
+ - [ v7.1.4 ] ( #v714 )
45
46
- [ Patch Changes] ( #patch-changes-5 )
46
- - [ v7.1.2 ] ( #v712 )
47
+ - [ v7.1.3 ] ( #v713 )
47
48
- [ Patch Changes] ( #patch-changes-6 )
48
- - [ v7.1.1 ] ( #v711 )
49
+ - [ v7.1.2 ] ( #v712 )
49
50
- [ Patch Changes] ( #patch-changes-7 )
51
+ - [ v7.1.1] ( #v711 )
52
+ - [ Patch Changes] ( #patch-changes-8 )
50
53
- [ v7.1.0] ( #v710 )
51
54
- [ Minor Changes] ( #minor-changes-3 )
52
- - [ Patch Changes] ( #patch-changes-8 )
55
+ - [ Patch Changes] ( #patch-changes-9 )
53
56
- [ Changes by Package] ( #changes-by-package-3 )
54
57
- [ v7.0.2] ( #v702 )
55
- - [ Patch Changes] ( #patch-changes-9 )
56
- - [ v7.0.1] ( #v701 )
57
58
- [ Patch Changes] ( #patch-changes-10 )
59
+ - [ v7.0.1] ( #v701 )
60
+ - [ Patch Changes] ( #patch-changes-11 )
58
61
- [ v7.0.0] ( #v700 )
59
62
- [ Breaking Changes] ( #breaking-changes )
60
63
- [ Package Restructuring] ( #package-restructuring )
@@ -71,199 +74,199 @@ We manage release notes in this file instead of the paginated Github Releases Pa
71
74
- [ Major Changes (` react-router ` )] ( #major-changes-react-router )
72
75
- [ Major Changes (` @react-router/* ` )] ( #major-changes-react-router-1 )
73
76
- [ Minor Changes] ( #minor-changes-4 )
74
- - [ Patch Changes] ( #patch-changes-11 )
77
+ - [ Patch Changes] ( #patch-changes-12 )
75
78
- [ Changes by Package] ( #changes-by-package-4 )
76
79
- [ React Router v6 Releases] ( #react-router-v6-releases )
77
80
- [ v6.30.0] ( #v6300 )
78
81
- [ Minor Changes] ( #minor-changes-5 )
79
- - [ Patch Changes] ( #patch-changes-12 )
82
+ - [ Patch Changes] ( #patch-changes-13 )
80
83
- [ v6.29.0] ( #v6290 )
81
84
- [ Minor Changes] ( #minor-changes-6 )
82
- - [ Patch Changes] ( #patch-changes-13 )
83
- - [ v6.28.2] ( #v6282 )
84
85
- [ Patch Changes] ( #patch-changes-14 )
85
- - [ v6.28.1 ] ( #v6281 )
86
+ - [ v6.28.2 ] ( #v6282 )
86
87
- [ Patch Changes] ( #patch-changes-15 )
88
+ - [ v6.28.1] ( #v6281 )
89
+ - [ Patch Changes] ( #patch-changes-16 )
87
90
- [ v6.28.0] ( #v6280 )
88
91
- [ What's Changed] ( #whats-changed-1 )
89
92
- [ Minor Changes] ( #minor-changes-7 )
90
- - [ Patch Changes] ( #patch-changes-16 )
93
+ - [ Patch Changes] ( #patch-changes-17 )
91
94
- [ v6.27.0] ( #v6270 )
92
95
- [ What's Changed] ( #whats-changed-2 )
93
96
- [ Stabilized APIs] ( #stabilized-apis )
94
97
- [ Minor Changes] ( #minor-changes-8 )
95
- - [ Patch Changes] ( #patch-changes-17 )
96
- - [ v6.26.2] ( #v6262 )
97
98
- [ Patch Changes] ( #patch-changes-18 )
98
- - [ v6.26.1 ] ( #v6261 )
99
+ - [ v6.26.2 ] ( #v6262 )
99
100
- [ Patch Changes] ( #patch-changes-19 )
101
+ - [ v6.26.1] ( #v6261 )
102
+ - [ Patch Changes] ( #patch-changes-20 )
100
103
- [ v6.26.0] ( #v6260 )
101
104
- [ Minor Changes] ( #minor-changes-9 )
102
- - [ Patch Changes] ( #patch-changes-20 )
103
- - [ v6.25.1] ( #v6251 )
104
105
- [ Patch Changes] ( #patch-changes-21 )
106
+ - [ v6.25.1] ( #v6251 )
107
+ - [ Patch Changes] ( #patch-changes-22 )
105
108
- [ v6.25.0] ( #v6250 )
106
109
- [ What's Changed] ( #whats-changed-3 )
107
110
- [ Stabilized ` v7_skipActionErrorRevalidation ` ] ( #stabilized-v7_skipactionerrorrevalidation )
108
111
- [ Minor Changes] ( #minor-changes-10 )
109
- - [ Patch Changes] ( #patch-changes-22 )
110
- - [ v6.24.1] ( #v6241 )
111
112
- [ Patch Changes] ( #patch-changes-23 )
113
+ - [ v6.24.1] ( #v6241 )
114
+ - [ Patch Changes] ( #patch-changes-24 )
112
115
- [ v6.24.0] ( #v6240 )
113
116
- [ What's Changed] ( #whats-changed-4 )
114
117
- [ Lazy Route Discovery (a.k.a. "Fog of War")] ( #lazy-route-discovery-aka-fog-of-war )
115
118
- [ Minor Changes] ( #minor-changes-11 )
116
- - [ Patch Changes] ( #patch-changes-24 )
117
- - [ v6.23.1] ( #v6231 )
118
119
- [ Patch Changes] ( #patch-changes-25 )
120
+ - [ v6.23.1] ( #v6231 )
121
+ - [ Patch Changes] ( #patch-changes-26 )
119
122
- [ v6.23.0] ( #v6230 )
120
123
- [ What's Changed] ( #whats-changed-5 )
121
124
- [ Data Strategy (unstable)] ( #data-strategy-unstable )
122
125
- [ Skip Action Error Revalidation (unstable)] ( #skip-action-error-revalidation-unstable )
123
126
- [ Minor Changes] ( #minor-changes-12 )
124
127
- [ v6.22.3] ( #v6223 )
125
- - [ Patch Changes] ( #patch-changes-26 )
126
- - [ v6.22.2] ( #v6222 )
127
128
- [ Patch Changes] ( #patch-changes-27 )
128
- - [ v6.22.1 ] ( #v6221 )
129
+ - [ v6.22.2 ] ( #v6222 )
129
130
- [ Patch Changes] ( #patch-changes-28 )
131
+ - [ v6.22.1] ( #v6221 )
132
+ - [ Patch Changes] ( #patch-changes-29 )
130
133
- [ v6.22.0] ( #v6220 )
131
134
- [ What's Changed] ( #whats-changed-6 )
132
135
- [ Core Web Vitals Technology Report Flag] ( #core-web-vitals-technology-report-flag )
133
136
- [ Minor Changes] ( #minor-changes-13 )
134
- - [ Patch Changes] ( #patch-changes-29 )
135
- - [ v6.21.3] ( #v6213 )
136
137
- [ Patch Changes] ( #patch-changes-30 )
137
- - [ v6.21.2 ] ( #v6212 )
138
+ - [ v6.21.3 ] ( #v6213 )
138
139
- [ Patch Changes] ( #patch-changes-31 )
139
- - [ v6.21.1 ] ( #v6211 )
140
+ - [ v6.21.2 ] ( #v6212 )
140
141
- [ Patch Changes] ( #patch-changes-32 )
142
+ - [ v6.21.1] ( #v6211 )
143
+ - [ Patch Changes] ( #patch-changes-33 )
141
144
- [ v6.21.0] ( #v6210 )
142
145
- [ What's Changed] ( #whats-changed-7 )
143
146
- [ ` future.v7_relativeSplatPath ` ] ( #futurev7_relativesplatpath )
144
147
- [ Partial Hydration] ( #partial-hydration )
145
148
- [ Minor Changes] ( #minor-changes-14 )
146
- - [ Patch Changes] ( #patch-changes-33 )
147
- - [ v6.20.1] ( #v6201 )
148
149
- [ Patch Changes] ( #patch-changes-34 )
150
+ - [ v6.20.1] ( #v6201 )
151
+ - [ Patch Changes] ( #patch-changes-35 )
149
152
- [ v6.20.0] ( #v6200 )
150
153
- [ Minor Changes] ( #minor-changes-15 )
151
- - [ Patch Changes] ( #patch-changes-35 )
154
+ - [ Patch Changes] ( #patch-changes-36 )
152
155
- [ v6.19.0] ( #v6190 )
153
156
- [ What's Changed] ( #whats-changed-8 )
154
157
- [ ` unstable_flushSync ` API] ( #unstable_flushsync-api )
155
158
- [ Minor Changes] ( #minor-changes-16 )
156
- - [ Patch Changes] ( #patch-changes-36 )
159
+ - [ Patch Changes] ( #patch-changes-37 )
157
160
- [ v6.18.0] ( #v6180 )
158
161
- [ What's Changed] ( #whats-changed-9 )
159
162
- [ New Fetcher APIs] ( #new-fetcher-apis )
160
163
- [ Persistence Future Flag (` future.v7_fetcherPersist ` )] ( #persistence-future-flag-futurev7_fetcherpersist )
161
164
- [ Minor Changes] ( #minor-changes-17 )
162
- - [ Patch Changes] ( #patch-changes-37 )
165
+ - [ Patch Changes] ( #patch-changes-38 )
163
166
- [ v6.17.0] ( #v6170 )
164
167
- [ What's Changed] ( #whats-changed-10 )
165
168
- [ View Transitions 🚀] ( #view-transitions- )
166
169
- [ Minor Changes] ( #minor-changes-18 )
167
- - [ Patch Changes] ( #patch-changes-38 )
170
+ - [ Patch Changes] ( #patch-changes-39 )
168
171
- [ v6.16.0] ( #v6160 )
169
172
- [ Minor Changes] ( #minor-changes-19 )
170
- - [ Patch Changes] ( #patch-changes-39 )
173
+ - [ Patch Changes] ( #patch-changes-40 )
171
174
- [ v6.15.0] ( #v6150 )
172
175
- [ Minor Changes] ( #minor-changes-20 )
173
- - [ Patch Changes] ( #patch-changes-40 )
174
- - [ v6.14.2] ( #v6142 )
175
176
- [ Patch Changes] ( #patch-changes-41 )
176
- - [ v6.14.1 ] ( #v6141 )
177
+ - [ v6.14.2 ] ( #v6142 )
177
178
- [ Patch Changes] ( #patch-changes-42 )
179
+ - [ v6.14.1] ( #v6141 )
180
+ - [ Patch Changes] ( #patch-changes-43 )
178
181
- [ v6.14.0] ( #v6140 )
179
182
- [ What's Changed] ( #whats-changed-11 )
180
183
- [ JSON/Text Submissions] ( #jsontext-submissions )
181
184
- [ Minor Changes] ( #minor-changes-21 )
182
- - [ Patch Changes] ( #patch-changes-43 )
185
+ - [ Patch Changes] ( #patch-changes-44 )
183
186
- [ v6.13.0] ( #v6130 )
184
187
- [ What's Changed] ( #whats-changed-12 )
185
188
- [ ` future.v7_startTransition ` ] ( #futurev7_starttransition )
186
189
- [ Minor Changes] ( #minor-changes-22 )
187
- - [ Patch Changes] ( #patch-changes-44 )
188
- - [ v6.12.1] ( #v6121 )
189
190
- [ Patch Changes] ( #patch-changes-45 )
191
+ - [ v6.12.1] ( #v6121 )
192
+ - [ Patch Changes] ( #patch-changes-46 )
190
193
- [ v6.12.0] ( #v6120 )
191
194
- [ What's Changed] ( #whats-changed-13 )
192
195
- [ ` React.startTransition ` support] ( #reactstarttransition-support )
193
196
- [ Minor Changes] ( #minor-changes-23 )
194
- - [ Patch Changes] ( #patch-changes-46 )
195
- - [ v6.11.2] ( #v6112 )
196
197
- [ Patch Changes] ( #patch-changes-47 )
197
- - [ v6.11.1 ] ( #v6111 )
198
+ - [ v6.11.2 ] ( #v6112 )
198
199
- [ Patch Changes] ( #patch-changes-48 )
200
+ - [ v6.11.1] ( #v6111 )
201
+ - [ Patch Changes] ( #patch-changes-49 )
199
202
- [ v6.11.0] ( #v6110 )
200
203
- [ Minor Changes] ( #minor-changes-24 )
201
- - [ Patch Changes] ( #patch-changes-49 )
204
+ - [ Patch Changes] ( #patch-changes-50 )
202
205
- [ v6.10.0] ( #v6100 )
203
206
- [ What's Changed] ( #whats-changed-14 )
204
207
- [ Minor Changes] ( #minor-changes-25 )
205
208
- [ ` future.v7_normalizeFormMethod ` ] ( #futurev7_normalizeformmethod )
206
- - [ Patch Changes] ( #patch-changes-50 )
209
+ - [ Patch Changes] ( #patch-changes-51 )
207
210
- [ v6.9.0] ( #v690 )
208
211
- [ What's Changed] ( #whats-changed-15 )
209
212
- [ ` Component ` /` ErrorBoundary ` route properties] ( #componenterrorboundary-route-properties )
210
213
- [ Introducing Lazy Route Modules] ( #introducing-lazy-route-modules )
211
214
- [ Minor Changes] ( #minor-changes-26 )
212
- - [ Patch Changes] ( #patch-changes-51 )
213
- - [ v6.8.2] ( #v682 )
214
215
- [ Patch Changes] ( #patch-changes-52 )
215
- - [ v6.8.1 ] ( #v681 )
216
+ - [ v6.8.2 ] ( #v682 )
216
217
- [ Patch Changes] ( #patch-changes-53 )
218
+ - [ v6.8.1] ( #v681 )
219
+ - [ Patch Changes] ( #patch-changes-54 )
217
220
- [ v6.8.0] ( #v680 )
218
221
- [ Minor Changes] ( #minor-changes-27 )
219
- - [ Patch Changes] ( #patch-changes-54 )
222
+ - [ Patch Changes] ( #patch-changes-55 )
220
223
- [ v6.7.0] ( #v670 )
221
224
- [ Minor Changes] ( #minor-changes-28 )
222
- - [ Patch Changes] ( #patch-changes-55 )
223
- - [ v6.6.2] ( #v662 )
224
225
- [ Patch Changes] ( #patch-changes-56 )
225
- - [ v6.6.1 ] ( #v661 )
226
+ - [ v6.6.2 ] ( #v662 )
226
227
- [ Patch Changes] ( #patch-changes-57 )
228
+ - [ v6.6.1] ( #v661 )
229
+ - [ Patch Changes] ( #patch-changes-58 )
227
230
- [ v6.6.0] ( #v660 )
228
231
- [ What's Changed] ( #whats-changed-16 )
229
232
- [ Minor Changes] ( #minor-changes-29 )
230
- - [ Patch Changes] ( #patch-changes-58 )
233
+ - [ Patch Changes] ( #patch-changes-59 )
231
234
- [ v6.5.0] ( #v650 )
232
235
- [ What's Changed] ( #whats-changed-17 )
233
236
- [ Minor Changes] ( #minor-changes-30 )
234
- - [ Patch Changes] ( #patch-changes-59 )
235
- - [ v6.4.5] ( #v645 )
236
237
- [ Patch Changes] ( #patch-changes-60 )
237
- - [ v6.4.4 ] ( #v644 )
238
+ - [ v6.4.5 ] ( #v645 )
238
239
- [ Patch Changes] ( #patch-changes-61 )
239
- - [ v6.4.3 ] ( #v643 )
240
+ - [ v6.4.4 ] ( #v644 )
240
241
- [ Patch Changes] ( #patch-changes-62 )
241
- - [ v6.4.2 ] ( #v642 )
242
+ - [ v6.4.3 ] ( #v643 )
242
243
- [ Patch Changes] ( #patch-changes-63 )
243
- - [ v6.4.1 ] ( #v641 )
244
+ - [ v6.4.2 ] ( #v642 )
244
245
- [ Patch Changes] ( #patch-changes-64 )
246
+ - [ v6.4.1] ( #v641 )
247
+ - [ Patch Changes] ( #patch-changes-65 )
245
248
- [ v6.4.0] ( #v640 )
246
249
- [ What's Changed] ( #whats-changed-18 )
247
250
- [ Remix Data APIs] ( #remix-data-apis )
248
- - [ Patch Changes] ( #patch-changes-65 )
251
+ - [ Patch Changes] ( #patch-changes-66 )
249
252
- [ v6.3.0] ( #v630 )
250
253
- [ Minor Changes] ( #minor-changes-31 )
251
254
- [ v6.2.2] ( #v622 )
252
- - [ Patch Changes] ( #patch-changes-66 )
253
- - [ v6.2.1] ( #v621 )
254
255
- [ Patch Changes] ( #patch-changes-67 )
256
+ - [ v6.2.1] ( #v621 )
257
+ - [ Patch Changes] ( #patch-changes-68 )
255
258
- [ v6.2.0] ( #v620 )
256
259
- [ Minor Changes] ( #minor-changes-32 )
257
- - [ Patch Changes] ( #patch-changes-68 )
258
- - [ v6.1.1] ( #v611 )
259
260
- [ Patch Changes] ( #patch-changes-69 )
261
+ - [ v6.1.1] ( #v611 )
262
+ - [ Patch Changes] ( #patch-changes-70 )
260
263
- [ v6.1.0] ( #v610 )
261
264
- [ Minor Changes] ( #minor-changes-33 )
262
- - [ Patch Changes] ( #patch-changes-70 )
263
- - [ v6.0.2] ( #v602 )
264
265
- [ Patch Changes] ( #patch-changes-71 )
265
- - [ v6.0.1 ] ( #v601 )
266
+ - [ v6.0.2 ] ( #v602 )
266
267
- [ Patch Changes] ( #patch-changes-72 )
268
+ - [ v6.0.1] ( #v601 )
269
+ - [ Patch Changes] ( #patch-changes-73 )
267
270
- [ v6.0.0] ( #v600 )
268
271
269
272
</details >
@@ -305,6 +308,32 @@ Date: YYYY-MM-DD
305
308
**Full Changelog**: [`v7.X.Y...v7.X.Y`](https://github.com/remix-run/react-router/compare/[email protected] @7.X.Y)
306
309
-->
307
310
311
+ ## v7.4.1
312
+
313
+ Date: 2025-03-27
314
+
315
+ ### Patch Changes
316
+
317
+ - ` react-router ` - Dedupe calls to ` route.lazy ` functions ([ #13260 ] ( https://github.com/remix-run/react-router/pull/13260 ) )
318
+ - ` @react-router/dev ` - Fix path in prerender error messages ([ #13257 ] ( https://github.com/remix-run/react-router/pull/13257 ) )
319
+ - ` @react-router/dev ` - Fix typegen for virtual modules when ` moduleDetection ` is set to ` force ` ([ #13267 ] ( https://github.com/remix-run/react-router/pull/13267 ) )
320
+ - ` @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 ) )
321
+
322
+ ### Unstable Changes
323
+
324
+ ⚠️ _ [ Unstable features] ( https://reactrouter.com/community/api-development-strategy#unstable-flags ) are not recommended for production use_
325
+
326
+ - ` 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 ) )
327
+ - ` 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 ) )
328
+ - ⚠️ We do not recommend adoption of this API currently as we are likely going to change it prior to the stable release of middleware
329
+ - ⚠️ This may be a breaking change if your app is currently returning ` unstable_middleware ` from ` route.lazy `
330
+ - The ` route.unstable_middleware ` property is no longer supported in the return value from ` route.lazy `
331
+ - If you want to lazily load middleware, you must use ` route.unstable_lazyMiddleware `
332
+ - ` @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 ) )
333
+ - ` @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 ) )
334
+
335
+ ** Full Changelog
** :
[ ` v7.4.0...v7.4.1 ` ] ( https://github.com/remix-run/react-router/compare/[email protected] @7.4.1 )
336
+
308
337
## v7.4.0
309
338
310
339
Date: 2025-03-19
0 commit comments