@@ -13,26 +13,29 @@ 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.5.1](#v751)
17
+ - [Patch Changes](#patch-changes)
18
+ - [Unstable Changes](#unstable-changes)
16
19
- [v7.5.0](#v750)
17
20
- [What's Changed](#whats-changed)
18
21
- [`route.lazy` Object API](#routelazy-object-api)
19
22
- [Minor Changes](#minor-changes)
20
- - [ Patch Changes] ( #patch-changes )
21
- - [ Unstable Changes] ( #unstable-changes )
23
+ - [Patch Changes](#patch-changes-1 )
24
+ - [Unstable Changes](#unstable-changes-1 )
22
25
- [Changes by Package](#changes-by-package)
23
26
- [v7.4.1](#v741)
24
27
- [Security Notice](#security-notice)
25
- - [ Patch Changes] ( #patch-changes-1 )
26
- - [ Unstable Changes] ( #unstable-changes-1 )
27
- - [ v7.4.0] ( #v740 )
28
- - [ Minor Changes] ( #minor-changes-1 )
29
28
- [Patch Changes](#patch-changes-2)
30
29
- [Unstable Changes](#unstable-changes-2)
30
+ - [v7.4.0](#v740)
31
+ - [Minor Changes](#minor-changes-1)
32
+ - [Patch Changes](#patch-changes-3)
33
+ - [Unstable Changes](#unstable-changes-3)
31
34
- [Changes by Package](#changes-by-package-1)
32
35
- [v7.3.0](#v730)
33
36
- [Minor Changes](#minor-changes-2)
34
- - [ Patch Changes] ( #patch-changes-3 )
35
- - [ Unstable Changes] ( #unstable-changes-3 )
37
+ - [Patch Changes](#patch-changes-4 )
38
+ - [Unstable Changes](#unstable-changes-4 )
36
39
- [Client-side `context` (unstable)](#client-side-context-unstable)
37
40
- [Middleware (unstable)](#middleware-unstable)
38
41
- [Middleware `context` parameter](#middleware-context-parameter)
@@ -44,28 +47,28 @@ We manage release notes in this file instead of the paginated Github Releases Pa
44
47
- [Prerendering with a SPA Fallback](#prerendering-with-a-spa-fallback)
45
48
- [Allow a root `loader` in SPA Mode](#allow-a-root-loader-in-spa-mode)
46
49
- [Minor Changes](#minor-changes-3)
47
- - [ Patch Changes] ( #patch-changes-4 )
48
- - [ Unstable Changes] ( #unstable-changes-4 )
50
+ - [Patch Changes](#patch-changes-5 )
51
+ - [Unstable Changes](#unstable-changes-5 )
49
52
- [Split Route Modules (unstable)](#split-route-modules-unstable)
50
53
- [Changes by Package](#changes-by-package-3)
51
54
- [v7.1.5](#v715)
52
- - [ Patch Changes] ( #patch-changes-5 )
53
- - [ v7.1.4] ( #v714 )
54
55
- [Patch Changes](#patch-changes-6)
55
- - [ v7.1.3 ] ( #v713 )
56
+ - [v7.1.4 ](#v714 )
56
57
- [Patch Changes](#patch-changes-7)
57
- - [ v7.1.2 ] ( #v712 )
58
+ - [v7.1.3 ](#v713 )
58
59
- [Patch Changes](#patch-changes-8)
59
- - [ v7.1.1 ] ( #v711 )
60
+ - [v7.1.2 ](#v712 )
60
61
- [Patch Changes](#patch-changes-9)
62
+ - [v7.1.1](#v711)
63
+ - [Patch Changes](#patch-changes-10)
61
64
- [v7.1.0](#v710)
62
65
- [Minor Changes](#minor-changes-4)
63
- - [ Patch Changes] ( #patch-changes-10 )
66
+ - [Patch Changes](#patch-changes-11 )
64
67
- [Changes by Package](#changes-by-package-4)
65
68
- [v7.0.2](#v702)
66
- - [ Patch Changes] ( #patch-changes-11 )
67
- - [ v7.0.1] ( #v701 )
68
69
- [Patch Changes](#patch-changes-12)
70
+ - [v7.0.1](#v701)
71
+ - [Patch Changes](#patch-changes-13)
69
72
- [v7.0.0](#v700)
70
73
- [Breaking Changes](#breaking-changes)
71
74
- [Package Restructuring](#package-restructuring)
@@ -82,199 +85,199 @@ We manage release notes in this file instead of the paginated Github Releases Pa
82
85
- [Major Changes (`react-router`)](#major-changes-react-router)
83
86
- [Major Changes (`@react-router/*`)](#major-changes-react-router-1)
84
87
- [Minor Changes](#minor-changes-5)
85
- - [ Patch Changes] ( #patch-changes-13 )
88
+ - [Patch Changes](#patch-changes-14 )
86
89
- [Changes by Package](#changes-by-package-5)
87
90
- [React Router v6 Releases](#react-router-v6-releases)
88
91
- [v6.30.0](#v6300)
89
92
- [Minor Changes](#minor-changes-6)
90
- - [ Patch Changes] ( #patch-changes-14 )
93
+ - [Patch Changes](#patch-changes-15 )
91
94
- [v6.29.0](#v6290)
92
95
- [Minor Changes](#minor-changes-7)
93
- - [ Patch Changes] ( #patch-changes-15 )
94
- - [ v6.28.2] ( #v6282 )
95
96
- [Patch Changes](#patch-changes-16)
96
- - [ v6.28.1 ] ( #v6281 )
97
+ - [v6.28.2 ](#v6282 )
97
98
- [Patch Changes](#patch-changes-17)
99
+ - [v6.28.1](#v6281)
100
+ - [Patch Changes](#patch-changes-18)
98
101
- [v6.28.0](#v6280)
99
102
- [What's Changed](#whats-changed-2)
100
103
- [Minor Changes](#minor-changes-8)
101
- - [ Patch Changes] ( #patch-changes-18 )
104
+ - [Patch Changes](#patch-changes-19 )
102
105
- [v6.27.0](#v6270)
103
106
- [What's Changed](#whats-changed-3)
104
107
- [Stabilized APIs](#stabilized-apis)
105
108
- [Minor Changes](#minor-changes-9)
106
- - [ Patch Changes] ( #patch-changes-19 )
107
- - [ v6.26.2] ( #v6262 )
108
109
- [Patch Changes](#patch-changes-20)
109
- - [ v6.26.1 ] ( #v6261 )
110
+ - [v6.26.2 ](#v6262 )
110
111
- [Patch Changes](#patch-changes-21)
112
+ - [v6.26.1](#v6261)
113
+ - [Patch Changes](#patch-changes-22)
111
114
- [v6.26.0](#v6260)
112
115
- [Minor Changes](#minor-changes-10)
113
- - [ Patch Changes] ( #patch-changes-22 )
114
- - [ v6.25.1] ( #v6251 )
115
116
- [Patch Changes](#patch-changes-23)
117
+ - [v6.25.1](#v6251)
118
+ - [Patch Changes](#patch-changes-24)
116
119
- [v6.25.0](#v6250)
117
120
- [What's Changed](#whats-changed-4)
118
121
- [Stabilized `v7_skipActionErrorRevalidation`](#stabilized-v7_skipactionerrorrevalidation)
119
122
- [Minor Changes](#minor-changes-11)
120
- - [ Patch Changes] ( #patch-changes-24 )
121
- - [ v6.24.1] ( #v6241 )
122
123
- [Patch Changes](#patch-changes-25)
124
+ - [v6.24.1](#v6241)
125
+ - [Patch Changes](#patch-changes-26)
123
126
- [v6.24.0](#v6240)
124
127
- [What's Changed](#whats-changed-5)
125
128
- [Lazy Route Discovery (a.k.a. "Fog of War")](#lazy-route-discovery-aka-fog-of-war)
126
129
- [Minor Changes](#minor-changes-12)
127
- - [ Patch Changes] ( #patch-changes-26 )
128
- - [ v6.23.1] ( #v6231 )
129
130
- [Patch Changes](#patch-changes-27)
131
+ - [v6.23.1](#v6231)
132
+ - [Patch Changes](#patch-changes-28)
130
133
- [v6.23.0](#v6230)
131
134
- [What's Changed](#whats-changed-6)
132
135
- [Data Strategy (unstable)](#data-strategy-unstable)
133
136
- [Skip Action Error Revalidation (unstable)](#skip-action-error-revalidation-unstable)
134
137
- [Minor Changes](#minor-changes-13)
135
138
- [v6.22.3](#v6223)
136
- - [ Patch Changes] ( #patch-changes-28 )
137
- - [ v6.22.2] ( #v6222 )
138
139
- [Patch Changes](#patch-changes-29)
139
- - [ v6.22.1 ] ( #v6221 )
140
+ - [v6.22.2 ](#v6222 )
140
141
- [Patch Changes](#patch-changes-30)
142
+ - [v6.22.1](#v6221)
143
+ - [Patch Changes](#patch-changes-31)
141
144
- [v6.22.0](#v6220)
142
145
- [What's Changed](#whats-changed-7)
143
146
- [Core Web Vitals Technology Report Flag](#core-web-vitals-technology-report-flag)
144
147
- [Minor Changes](#minor-changes-14)
145
- - [ Patch Changes] ( #patch-changes-31 )
146
- - [ v6.21.3] ( #v6213 )
147
148
- [Patch Changes](#patch-changes-32)
148
- - [ v6.21.2 ] ( #v6212 )
149
+ - [v6.21.3 ](#v6213 )
149
150
- [Patch Changes](#patch-changes-33)
150
- - [ v6.21.1 ] ( #v6211 )
151
+ - [v6.21.2 ](#v6212 )
151
152
- [Patch Changes](#patch-changes-34)
153
+ - [v6.21.1](#v6211)
154
+ - [Patch Changes](#patch-changes-35)
152
155
- [v6.21.0](#v6210)
153
156
- [What's Changed](#whats-changed-8)
154
157
- [`future.v7_relativeSplatPath`](#futurev7_relativesplatpath)
155
158
- [Partial Hydration](#partial-hydration)
156
159
- [Minor Changes](#minor-changes-15)
157
- - [ Patch Changes] ( #patch-changes-35 )
158
- - [ v6.20.1] ( #v6201 )
159
160
- [Patch Changes](#patch-changes-36)
161
+ - [v6.20.1](#v6201)
162
+ - [Patch Changes](#patch-changes-37)
160
163
- [v6.20.0](#v6200)
161
164
- [Minor Changes](#minor-changes-16)
162
- - [ Patch Changes] ( #patch-changes-37 )
165
+ - [Patch Changes](#patch-changes-38 )
163
166
- [v6.19.0](#v6190)
164
167
- [What's Changed](#whats-changed-9)
165
168
- [`unstable_flushSync` API](#unstable_flushsync-api)
166
169
- [Minor Changes](#minor-changes-17)
167
- - [ Patch Changes] ( #patch-changes-38 )
170
+ - [Patch Changes](#patch-changes-39 )
168
171
- [v6.18.0](#v6180)
169
172
- [What's Changed](#whats-changed-10)
170
173
- [New Fetcher APIs](#new-fetcher-apis)
171
174
- [Persistence Future Flag (`future.v7_fetcherPersist`)](#persistence-future-flag-futurev7_fetcherpersist)
172
175
- [Minor Changes](#minor-changes-18)
173
- - [ Patch Changes] ( #patch-changes-39 )
176
+ - [Patch Changes](#patch-changes-40 )
174
177
- [v6.17.0](#v6170)
175
178
- [What's Changed](#whats-changed-11)
176
179
- [View Transitions 🚀](#view-transitions-)
177
180
- [Minor Changes](#minor-changes-19)
178
- - [ Patch Changes] ( #patch-changes-40 )
181
+ - [Patch Changes](#patch-changes-41 )
179
182
- [v6.16.0](#v6160)
180
183
- [Minor Changes](#minor-changes-20)
181
- - [ Patch Changes] ( #patch-changes-41 )
184
+ - [Patch Changes](#patch-changes-42 )
182
185
- [v6.15.0](#v6150)
183
186
- [Minor Changes](#minor-changes-21)
184
- - [ Patch Changes] ( #patch-changes-42 )
185
- - [ v6.14.2] ( #v6142 )
186
187
- [Patch Changes](#patch-changes-43)
187
- - [ v6.14.1 ] ( #v6141 )
188
+ - [v6.14.2 ](#v6142 )
188
189
- [Patch Changes](#patch-changes-44)
190
+ - [v6.14.1](#v6141)
191
+ - [Patch Changes](#patch-changes-45)
189
192
- [v6.14.0](#v6140)
190
193
- [What's Changed](#whats-changed-12)
191
194
- [JSON/Text Submissions](#jsontext-submissions)
192
195
- [Minor Changes](#minor-changes-22)
193
- - [ Patch Changes] ( #patch-changes-45 )
196
+ - [Patch Changes](#patch-changes-46 )
194
197
- [v6.13.0](#v6130)
195
198
- [What's Changed](#whats-changed-13)
196
199
- [`future.v7_startTransition`](#futurev7_starttransition)
197
200
- [Minor Changes](#minor-changes-23)
198
- - [ Patch Changes] ( #patch-changes-46 )
199
- - [ v6.12.1] ( #v6121 )
200
201
- [Patch Changes](#patch-changes-47)
202
+ - [v6.12.1](#v6121)
203
+ - [Patch Changes](#patch-changes-48)
201
204
- [v6.12.0](#v6120)
202
205
- [What's Changed](#whats-changed-14)
203
206
- [`React.startTransition` support](#reactstarttransition-support)
204
207
- [Minor Changes](#minor-changes-24)
205
- - [ Patch Changes] ( #patch-changes-48 )
206
- - [ v6.11.2] ( #v6112 )
207
208
- [Patch Changes](#patch-changes-49)
208
- - [ v6.11.1 ] ( #v6111 )
209
+ - [v6.11.2 ](#v6112 )
209
210
- [Patch Changes](#patch-changes-50)
211
+ - [v6.11.1](#v6111)
212
+ - [Patch Changes](#patch-changes-51)
210
213
- [v6.11.0](#v6110)
211
214
- [Minor Changes](#minor-changes-25)
212
- - [ Patch Changes] ( #patch-changes-51 )
215
+ - [Patch Changes](#patch-changes-52 )
213
216
- [v6.10.0](#v6100)
214
217
- [What's Changed](#whats-changed-15)
215
218
- [Minor Changes](#minor-changes-26)
216
219
- [`future.v7_normalizeFormMethod`](#futurev7_normalizeformmethod)
217
- - [ Patch Changes] ( #patch-changes-52 )
220
+ - [Patch Changes](#patch-changes-53 )
218
221
- [v6.9.0](#v690)
219
222
- [What's Changed](#whats-changed-16)
220
223
- [`Component`/`ErrorBoundary` route properties](#componenterrorboundary-route-properties)
221
224
- [Introducing Lazy Route Modules](#introducing-lazy-route-modules)
222
225
- [Minor Changes](#minor-changes-27)
223
- - [ Patch Changes] ( #patch-changes-53 )
224
- - [ v6.8.2] ( #v682 )
225
226
- [Patch Changes](#patch-changes-54)
226
- - [ v6.8.1 ] ( #v681 )
227
+ - [v6.8.2 ](#v682 )
227
228
- [Patch Changes](#patch-changes-55)
229
+ - [v6.8.1](#v681)
230
+ - [Patch Changes](#patch-changes-56)
228
231
- [v6.8.0](#v680)
229
232
- [Minor Changes](#minor-changes-28)
230
- - [ Patch Changes] ( #patch-changes-56 )
233
+ - [Patch Changes](#patch-changes-57 )
231
234
- [v6.7.0](#v670)
232
235
- [Minor Changes](#minor-changes-29)
233
- - [ Patch Changes] ( #patch-changes-57 )
234
- - [ v6.6.2] ( #v662 )
235
236
- [Patch Changes](#patch-changes-58)
236
- - [ v6.6.1 ] ( #v661 )
237
+ - [v6.6.2 ](#v662 )
237
238
- [Patch Changes](#patch-changes-59)
239
+ - [v6.6.1](#v661)
240
+ - [Patch Changes](#patch-changes-60)
238
241
- [v6.6.0](#v660)
239
242
- [What's Changed](#whats-changed-17)
240
243
- [Minor Changes](#minor-changes-30)
241
- - [ Patch Changes] ( #patch-changes-60 )
244
+ - [Patch Changes](#patch-changes-61 )
242
245
- [v6.5.0](#v650)
243
246
- [What's Changed](#whats-changed-18)
244
247
- [Minor Changes](#minor-changes-31)
245
- - [ Patch Changes] ( #patch-changes-61 )
246
- - [ v6.4.5] ( #v645 )
247
248
- [Patch Changes](#patch-changes-62)
248
- - [ v6.4.4 ] ( #v644 )
249
+ - [v6.4.5 ](#v645 )
249
250
- [Patch Changes](#patch-changes-63)
250
- - [ v6.4.3 ] ( #v643 )
251
+ - [v6.4.4 ](#v644 )
251
252
- [Patch Changes](#patch-changes-64)
252
- - [ v6.4.2 ] ( #v642 )
253
+ - [v6.4.3 ](#v643 )
253
254
- [Patch Changes](#patch-changes-65)
254
- - [ v6.4.1 ] ( #v641 )
255
+ - [v6.4.2 ](#v642 )
255
256
- [Patch Changes](#patch-changes-66)
257
+ - [v6.4.1](#v641)
258
+ - [Patch Changes](#patch-changes-67)
256
259
- [v6.4.0](#v640)
257
260
- [What's Changed](#whats-changed-19)
258
261
- [Remix Data APIs](#remix-data-apis)
259
- - [ Patch Changes] ( #patch-changes-67 )
262
+ - [Patch Changes](#patch-changes-68 )
260
263
- [v6.3.0](#v630)
261
264
- [Minor Changes](#minor-changes-32)
262
265
- [v6.2.2](#v622)
263
- - [ Patch Changes] ( #patch-changes-68 )
264
- - [ v6.2.1] ( #v621 )
265
266
- [Patch Changes](#patch-changes-69)
267
+ - [v6.2.1](#v621)
268
+ - [Patch Changes](#patch-changes-70)
266
269
- [v6.2.0](#v620)
267
270
- [Minor Changes](#minor-changes-33)
268
- - [ Patch Changes] ( #patch-changes-70 )
269
- - [ v6.1.1] ( #v611 )
270
271
- [Patch Changes](#patch-changes-71)
272
+ - [v6.1.1](#v611)
273
+ - [Patch Changes](#patch-changes-72)
271
274
- [v6.1.0](#v610)
272
275
- [Minor Changes](#minor-changes-34)
273
- - [ Patch Changes] ( #patch-changes-72 )
274
- - [ v6.0.2] ( #v602 )
275
276
- [Patch Changes](#patch-changes-73)
276
- - [ v6.0.1 ] ( #v601 )
277
+ - [v6.0.2 ](#v602 )
277
278
- [Patch Changes](#patch-changes-74)
279
+ - [v6.0.1](#v601)
280
+ - [Patch Changes](#patch-changes-75)
278
281
- [v6.0.0](#v600)
279
282
280
283
</details>
@@ -316,6 +319,50 @@ Date: YYYY-MM-DD
316
319
**Full Changelog**: [`v7.X.Y...v7.X.Y`](https://github.com/remix-run/react-router/compare/
[email protected] @7.X.Y)
317
320
-->
318
321
322
+ ## v7.5.1
323
+
324
+ Date: 2025-04-17
325
+
326
+ ### Patch Changes
327
+
328
+ - `react-router` - When using the object-based `route.lazy` API, the `HydrateFallback` and `hydrateFallbackElement` properties are now skipped when lazy loading routes after hydration. ([#13376](https://github.com/remix-run/react-router/pull/13376))
329
+
330
+ - If you move the code for these properties into a separate file, you can use this optimization to avoid downloading unused hydration code. For example:
331
+
332
+ ```ts
333
+ createBrowserRouter([
334
+ {
335
+ path: "/show/:showId",
336
+ lazy: {
337
+ loader: async () => (await import("./show.loader.js")).loader,
338
+ Component: async () =>
339
+ (await import("./show.component.js")).Component,
340
+ HydrateFallback: async () =>
341
+ (await import("./show.hydrate-fallback.js")).HydrateFallback,
342
+ },
343
+ },
344
+ ]);
345
+ ```
346
+
347
+ - `react-router` - Fix single fetch bug where no revalidation request would be made when navigating upwards to a reused parent route ([#13253](https://github.com/remix-run/react-router/pull/13253))
348
+ - `react-router` - Properly revalidate pre-rendered paths when param values change ([#13380](https://github.com/remix-run/react-router/pull/13380))
349
+ - `react-router` - Fix pre-rendering when a loader returns a redirect ([#13365](https://github.com/remix-run/react-router/pull/13365))
350
+ - `react-router` - Do not automatically add `null` to `staticHandler.query()` `context.loaderData` if routes do not have loaders ([#13223](https://github.com/remix-run/react-router/pull/13223))
351
+ - This was a Remix v2 implementation detail inadvertently left in for React Router v7
352
+ - Now that we allow returning `undefined` from loaders, our prior check of `loaderData[routeId] !== undefined` was no longer sufficient and was changed to a `routeId in loaderData` check - these `null` values can cause issues for this new check
353
+ - ⚠️ This could be a "breaking bug fix" for you if you are doing manual SSR with `createStaticHandler()`/`<StaticRouterProvider>`, and using `context.loaderData` to control `<RouterProvider>` hydration behavior on the client
354
+
355
+ ### Unstable Changes
356
+
357
+ ⚠️ _[Unstable features](https://reactrouter.com/community/api-development-strategy#unstable-flags) are not recommended for production use_
358
+
359
+ - `react-router` - UNSTABLE: Add a new `unstable_runClientMiddleware` argument to `dataStrategy` to enable middleware execution in custom `dataStrategy` implementations ([#13395](https://github.com/remix-run/react-router/pull/13395))
360
+ - `react-router` - UNSTABLE: Add better error messaging when `getLoadContext` is not updated to return a `Map`" ([#13242](https://github.com/remix-run/react-router/pull/13242))
361
+ - `react-router` - UNSTABLE: Update context type for `LoaderFunctionArgs`/`ActionFunctionArgs` when middleware is enabled ([#13381](https://github.com/remix-run/react-router/pull/13381))
362
+ - `react-router` - Add support for the new `unstable_shouldCallHandler`/`unstable_shouldRevalidateArgs` APIs in `dataStrategy` ([#13253](https://github.com/remix-run/react-router/pull/13253))
363
+
364
+ **Full Changelog**: [`v7.5.0...v7.5.1`](https://github.com/remix-run/react-router/compare/
[email protected] @7.5.1)
365
+
319
366
## v7.5.0
320
367
321
368
Date: 2025-04-04
0 commit comments