@react-router/dev 7.14.2 → 7.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # `@react-router/dev`
2
2
 
3
+ ## v7.15.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Stabilize `future.unstable_passThroughRequests` as `future.v8_passThroughRequests` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
8
+
9
+ - ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
10
+
11
+ - Stabilize `prerender.unstable_concurrency` as `prerender.concurrency` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
12
+
13
+ - ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
14
+
15
+ - 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))
16
+
17
+ - ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies:
22
+ - [`react-router@7.15.0`](https://github.com/remix-run/react-router/releases/tag/react-router@7.15.0)
23
+ - [`@react-router/node@7.15.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/node@7.15.0)
24
+ - [`@react-router/serve@7.15.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/serve@7.15.0)
25
+
3
26
  ## v7.14.2
4
27
 
5
28
  ### Patch Changes
@@ -11,11 +34,11 @@
11
34
 
12
35
  ### Unstable Changes
13
36
 
14
- ⚠️ _[Unstable features](https://reactrouter.com/community/api-development-strategy#unstable-flags) are not recommended for production use_
37
+ ⚠️ _[Unstable features](https://reactrouter.com/community/api-development-strategy#unstable-flags) are not recommended for production use_
15
38
 
16
39
  - For `unstable_reactRouterRSC` Vite plugin consumers, require `@vitejs/plugin-react` in user Vite config, and more reliably split route modules. ([#14965](https://github.com/remix-run/react-router/pull/14965)) ([[aabf4a1](https://github.com/remix-run/react-router/commit/aabf4a1))
17
-
18
40
  - ⚠️ This is a breaking change if you have begun using the `unstable_reactRouterRSC` Vite plugin - please install `@vitejs/plugin-react` and add the `react` plugin to your Vite plugins array.
41
+
19
42
  - Updated dependencies:
20
43
  - [`react-router@7.14.2`](https://github.com/remix-run/react-router/releases/tag/react-router@7.14.2)
21
44
  - [`@react-router/node@7.14.2`](https://github.com/remix-run/react-router/releases/tag/@react-router/node@7.14.2)
package/dist/cli/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * @react-router/dev v7.14.2
3
+ * @react-router/dev v7.15.0
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
@@ -398,10 +398,15 @@ async function resolveConfig({
398
398
  "The `prerender`/`prerender.paths` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths."
399
399
  );
400
400
  }
401
- let isValidConcurrencyConfig = typeof prerender2 != "object" || !("unstable_concurrency" in prerender2) || typeof prerender2.unstable_concurrency === "number" && Number.isInteger(prerender2.unstable_concurrency) && prerender2.unstable_concurrency > 0;
401
+ if (typeof prerender2 === "object" && "unstable_concurrency" in prerender2) {
402
+ return err(
403
+ "The `prerender.unstable_concurrency` config field has been stabilized as `prerender.concurrency`"
404
+ );
405
+ }
406
+ let isValidConcurrencyConfig = typeof prerender2 != "object" || !("concurrency" in prerender2) || typeof prerender2.concurrency === "number" && Number.isInteger(prerender2.concurrency) && prerender2.concurrency > 0;
402
407
  if (!isValidConcurrencyConfig) {
403
408
  return err(
404
- "The `prerender.unstable_concurrency` config must be a positive integer if specified."
409
+ "The `prerender.concurrency` config must be a positive integer if specified."
405
410
  );
406
411
  }
407
412
  }
@@ -493,20 +498,31 @@ async function resolveConfig({
493
498
  }
494
499
  }
495
500
  let futureConfig = userAndPresetConfigs.future;
496
- if (futureConfig?.unstable_splitRouteModules !== void 0) {
497
- return err(
498
- 'The "future.unstable_splitRouteModules" flag has been stabilized as "future.v8_splitRouteModules"'
499
- );
500
- }
501
- if (futureConfig?.unstable_viteEnvironmentApi !== void 0) {
502
- return err(
503
- 'The "future.unstable_viteEnvironmentApi" flag has been stabilized as "future.v8_viteEnvironmentApi"'
504
- );
501
+ if (futureConfig) {
502
+ if ("unstable_splitRouteModules" in futureConfig) {
503
+ return err(
504
+ "The `future.unstable_splitRouteModules` flag has been stabilized as `future.v8_splitRouteModules`"
505
+ );
506
+ }
507
+ if ("unstable_viteEnvironmentApi" in futureConfig) {
508
+ return err(
509
+ "The `future.unstable_viteEnvironmentApi` flag has been stabilized as `future.v8_viteEnvironmentApi`"
510
+ );
511
+ }
512
+ if ("unstable_passThroughRequests" in futureConfig) {
513
+ return err(
514
+ "The `future.unstable_passThroughRequests` flag has been stabilized as `future.v8_passThroughRequests`"
515
+ );
516
+ }
517
+ if ("unstable_subResourceIntegrity" in futureConfig) {
518
+ return err(
519
+ "The `future.unstable_subResourceIntegrity` flag has been stabilized and moved to a top-level `config.subResourceIntegrity` field"
520
+ );
521
+ }
505
522
  }
506
523
  let future = {
507
524
  unstable_optimizeDeps: userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
508
- unstable_passThroughRequests: userAndPresetConfigs.future?.unstable_passThroughRequests ?? false,
509
- unstable_subResourceIntegrity: userAndPresetConfigs.future?.unstable_subResourceIntegrity ?? false,
525
+ v8_passThroughRequests: userAndPresetConfigs.future?.v8_passThroughRequests ?? false,
510
526
  unstable_trailingSlashAwareDataRequests: userAndPresetConfigs.future?.unstable_trailingSlashAwareDataRequests ?? false,
511
527
  unstable_previewServerPrerendering: userAndPresetConfigs.future?.unstable_previewServerPrerendering ?? false,
512
528
  v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
@@ -514,6 +530,7 @@ async function resolveConfig({
514
530
  v8_viteEnvironmentApi: (userAndPresetConfigs.future?.v8_viteEnvironmentApi || userAndPresetConfigs.future?.unstable_previewServerPrerendering) ?? false
515
531
  };
516
532
  let allowedActionOrigins = userAndPresetConfigs.allowedActionOrigins ?? false;
533
+ let subResourceIntegrity = userAndPresetConfigs.subResourceIntegrity ?? false;
517
534
  let reactRouterConfig = deepFreeze({
518
535
  appDirectory,
519
536
  basename: basename3,
@@ -527,6 +544,7 @@ async function resolveConfig({
527
544
  serverBundles,
528
545
  serverModuleFormat,
529
546
  ssr,
547
+ subResourceIntegrity,
530
548
  allowedActionOrigins,
531
549
  unstable_routeConfig: routeConfig
532
550
  });
package/dist/config.d.ts CHANGED
@@ -38,8 +38,7 @@ type ServerBundlesBuildManifest = BaseBuildManifest & {
38
38
  type ServerModuleFormat = "esm" | "cjs";
39
39
  interface FutureConfig {
40
40
  unstable_optimizeDeps: boolean;
41
- unstable_passThroughRequests: boolean;
42
- unstable_subResourceIntegrity: boolean;
41
+ v8_passThroughRequests: boolean;
43
42
  unstable_trailingSlashAwareDataRequests: boolean;
44
43
  /**
45
44
  * Prerender with Vite Preview server
@@ -103,7 +102,7 @@ type ReactRouterConfig = {
103
102
  * An array of URLs to prerender to HTML files at build time. Can also be a
104
103
  * function returning an array to dynamically generate URLs.
105
104
  *
106
- * `unstable_concurrency` defaults to 1, which means "no concurrency" - fully serial execution.
105
+ * `concurrency` defaults to 1, which means "no concurrency" - fully serial execution.
107
106
  * Setting it to a value more than 1 enables concurrent prerendering.
108
107
  * Setting it to a value higher than one can increase the speed of the build,
109
108
  * but may consume more resources, and send more concurrent requests to the
@@ -111,7 +110,7 @@ type ReactRouterConfig = {
111
110
  */
112
111
  prerender?: PrerenderPaths | {
113
112
  paths: PrerenderPaths;
114
- unstable_concurrency?: number;
113
+ concurrency?: number;
115
114
  };
116
115
  /**
117
116
  * An array of React Router plugin config presets to ease integration with
@@ -153,6 +152,11 @@ type ReactRouterConfig = {
153
152
  * SPA without server-rendering. Default's to `true`.
154
153
  */
155
154
  ssr?: boolean;
155
+ /**
156
+ * Enable subresource integrity hashes on asset script tags. Defaults to
157
+ * `false`.
158
+ */
159
+ subResourceIntegrity?: boolean;
156
160
  /**
157
161
  * An array of allowed origin hosts for action submissions to UI routes (does not apply
158
162
  * to resource routes). Supports micromatch glob patterns (`*` to match one segment,
@@ -259,6 +263,10 @@ type ResolvedReactRouterConfig = Readonly<{
259
263
  * SPA without server-rendering. Default's to `true`.
260
264
  */
261
265
  ssr: boolean;
266
+ /**
267
+ * Whether to generate subresource integrity hashes for asset script tags.
268
+ */
269
+ subResourceIntegrity: boolean;
262
270
  /**
263
271
  * The allowed origins for actions / mutations. Does not apply to routes
264
272
  * without a component. micromatch glob patterns are supported.
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v7.14.2
2
+ * @react-router/dev v7.15.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/routes.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v7.14.2
2
+ * @react-router/dev v7.15.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v7.14.2
2
+ * @react-router/dev v7.15.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -424,10 +424,15 @@ async function resolveConfig({
424
424
  "The `prerender`/`prerender.paths` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths."
425
425
  );
426
426
  }
427
- let isValidConcurrencyConfig = typeof prerender != "object" || !("unstable_concurrency" in prerender) || typeof prerender.unstable_concurrency === "number" && Number.isInteger(prerender.unstable_concurrency) && prerender.unstable_concurrency > 0;
427
+ if (typeof prerender === "object" && "unstable_concurrency" in prerender) {
428
+ return err(
429
+ "The `prerender.unstable_concurrency` config field has been stabilized as `prerender.concurrency`"
430
+ );
431
+ }
432
+ let isValidConcurrencyConfig = typeof prerender != "object" || !("concurrency" in prerender) || typeof prerender.concurrency === "number" && Number.isInteger(prerender.concurrency) && prerender.concurrency > 0;
428
433
  if (!isValidConcurrencyConfig) {
429
434
  return err(
430
- "The `prerender.unstable_concurrency` config must be a positive integer if specified."
435
+ "The `prerender.concurrency` config must be a positive integer if specified."
431
436
  );
432
437
  }
433
438
  }
@@ -519,20 +524,31 @@ async function resolveConfig({
519
524
  }
520
525
  }
521
526
  let futureConfig = userAndPresetConfigs.future;
522
- if (futureConfig?.unstable_splitRouteModules !== void 0) {
523
- return err(
524
- 'The "future.unstable_splitRouteModules" flag has been stabilized as "future.v8_splitRouteModules"'
525
- );
526
- }
527
- if (futureConfig?.unstable_viteEnvironmentApi !== void 0) {
528
- return err(
529
- 'The "future.unstable_viteEnvironmentApi" flag has been stabilized as "future.v8_viteEnvironmentApi"'
530
- );
527
+ if (futureConfig) {
528
+ if ("unstable_splitRouteModules" in futureConfig) {
529
+ return err(
530
+ "The `future.unstable_splitRouteModules` flag has been stabilized as `future.v8_splitRouteModules`"
531
+ );
532
+ }
533
+ if ("unstable_viteEnvironmentApi" in futureConfig) {
534
+ return err(
535
+ "The `future.unstable_viteEnvironmentApi` flag has been stabilized as `future.v8_viteEnvironmentApi`"
536
+ );
537
+ }
538
+ if ("unstable_passThroughRequests" in futureConfig) {
539
+ return err(
540
+ "The `future.unstable_passThroughRequests` flag has been stabilized as `future.v8_passThroughRequests`"
541
+ );
542
+ }
543
+ if ("unstable_subResourceIntegrity" in futureConfig) {
544
+ return err(
545
+ "The `future.unstable_subResourceIntegrity` flag has been stabilized and moved to a top-level `config.subResourceIntegrity` field"
546
+ );
547
+ }
531
548
  }
532
549
  let future = {
533
550
  unstable_optimizeDeps: userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
534
- unstable_passThroughRequests: userAndPresetConfigs.future?.unstable_passThroughRequests ?? false,
535
- unstable_subResourceIntegrity: userAndPresetConfigs.future?.unstable_subResourceIntegrity ?? false,
551
+ v8_passThroughRequests: userAndPresetConfigs.future?.v8_passThroughRequests ?? false,
536
552
  unstable_trailingSlashAwareDataRequests: userAndPresetConfigs.future?.unstable_trailingSlashAwareDataRequests ?? false,
537
553
  unstable_previewServerPrerendering: userAndPresetConfigs.future?.unstable_previewServerPrerendering ?? false,
538
554
  v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
@@ -540,6 +556,7 @@ async function resolveConfig({
540
556
  v8_viteEnvironmentApi: (userAndPresetConfigs.future?.v8_viteEnvironmentApi || userAndPresetConfigs.future?.unstable_previewServerPrerendering) ?? false
541
557
  };
542
558
  let allowedActionOrigins = userAndPresetConfigs.allowedActionOrigins ?? false;
559
+ let subResourceIntegrity = userAndPresetConfigs.subResourceIntegrity ?? false;
543
560
  let reactRouterConfig = deepFreeze({
544
561
  appDirectory,
545
562
  basename,
@@ -553,6 +570,7 @@ async function resolveConfig({
553
570
  serverBundles,
554
571
  serverModuleFormat,
555
572
  ssr,
573
+ subResourceIntegrity,
556
574
  allowedActionOrigins,
557
575
  unstable_routeConfig: routeConfig
558
576
  });
package/dist/vite.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v7.14.2
2
+ * @react-router/dev v7.15.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -461,10 +461,15 @@ async function resolveConfig({
461
461
  "The `prerender`/`prerender.paths` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths."
462
462
  );
463
463
  }
464
- let isValidConcurrencyConfig = typeof prerender2 != "object" || !("unstable_concurrency" in prerender2) || typeof prerender2.unstable_concurrency === "number" && Number.isInteger(prerender2.unstable_concurrency) && prerender2.unstable_concurrency > 0;
464
+ if (typeof prerender2 === "object" && "unstable_concurrency" in prerender2) {
465
+ return err(
466
+ "The `prerender.unstable_concurrency` config field has been stabilized as `prerender.concurrency`"
467
+ );
468
+ }
469
+ let isValidConcurrencyConfig = typeof prerender2 != "object" || !("concurrency" in prerender2) || typeof prerender2.concurrency === "number" && Number.isInteger(prerender2.concurrency) && prerender2.concurrency > 0;
465
470
  if (!isValidConcurrencyConfig) {
466
471
  return err(
467
- "The `prerender.unstable_concurrency` config must be a positive integer if specified."
472
+ "The `prerender.concurrency` config must be a positive integer if specified."
468
473
  );
469
474
  }
470
475
  }
@@ -556,20 +561,31 @@ async function resolveConfig({
556
561
  }
557
562
  }
558
563
  let futureConfig = userAndPresetConfigs.future;
559
- if (futureConfig?.unstable_splitRouteModules !== void 0) {
560
- return err(
561
- 'The "future.unstable_splitRouteModules" flag has been stabilized as "future.v8_splitRouteModules"'
562
- );
563
- }
564
- if (futureConfig?.unstable_viteEnvironmentApi !== void 0) {
565
- return err(
566
- 'The "future.unstable_viteEnvironmentApi" flag has been stabilized as "future.v8_viteEnvironmentApi"'
567
- );
564
+ if (futureConfig) {
565
+ if ("unstable_splitRouteModules" in futureConfig) {
566
+ return err(
567
+ "The `future.unstable_splitRouteModules` flag has been stabilized as `future.v8_splitRouteModules`"
568
+ );
569
+ }
570
+ if ("unstable_viteEnvironmentApi" in futureConfig) {
571
+ return err(
572
+ "The `future.unstable_viteEnvironmentApi` flag has been stabilized as `future.v8_viteEnvironmentApi`"
573
+ );
574
+ }
575
+ if ("unstable_passThroughRequests" in futureConfig) {
576
+ return err(
577
+ "The `future.unstable_passThroughRequests` flag has been stabilized as `future.v8_passThroughRequests`"
578
+ );
579
+ }
580
+ if ("unstable_subResourceIntegrity" in futureConfig) {
581
+ return err(
582
+ "The `future.unstable_subResourceIntegrity` flag has been stabilized and moved to a top-level `config.subResourceIntegrity` field"
583
+ );
584
+ }
568
585
  }
569
586
  let future = {
570
587
  unstable_optimizeDeps: userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
571
- unstable_passThroughRequests: userAndPresetConfigs.future?.unstable_passThroughRequests ?? false,
572
- unstable_subResourceIntegrity: userAndPresetConfigs.future?.unstable_subResourceIntegrity ?? false,
588
+ v8_passThroughRequests: userAndPresetConfigs.future?.v8_passThroughRequests ?? false,
573
589
  unstable_trailingSlashAwareDataRequests: userAndPresetConfigs.future?.unstable_trailingSlashAwareDataRequests ?? false,
574
590
  unstable_previewServerPrerendering: userAndPresetConfigs.future?.unstable_previewServerPrerendering ?? false,
575
591
  v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
@@ -577,6 +593,7 @@ async function resolveConfig({
577
593
  v8_viteEnvironmentApi: (userAndPresetConfigs.future?.v8_viteEnvironmentApi || userAndPresetConfigs.future?.unstable_previewServerPrerendering) ?? false
578
594
  };
579
595
  let allowedActionOrigins = userAndPresetConfigs.allowedActionOrigins ?? false;
596
+ let subResourceIntegrity = userAndPresetConfigs.subResourceIntegrity ?? false;
580
597
  let reactRouterConfig = deepFreeze({
581
598
  appDirectory,
582
599
  basename: basename3,
@@ -590,6 +607,7 @@ async function resolveConfig({
590
607
  serverBundles,
591
608
  serverModuleFormat,
592
609
  ssr,
610
+ subResourceIntegrity,
593
611
  allowedActionOrigins,
594
612
  unstable_routeConfig: routeConfig
595
613
  });
@@ -3354,7 +3372,7 @@ var reactRouterVitePlugin = () => {
3354
3372
  )};`
3355
3373
  );
3356
3374
  let sri = void 0;
3357
- if (ctx.reactRouterConfig.future.unstable_subResourceIntegrity) {
3375
+ if (ctx.reactRouterConfig.subResourceIntegrity) {
3358
3376
  sri = await generateSriManifest(ctx);
3359
3377
  }
3360
3378
  let reactRouterServerManifest = {
@@ -4928,8 +4946,8 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
4928
4946
  };
4929
4947
  let concurrency = 1;
4930
4948
  let { prerender: prerender2 } = reactRouterConfig;
4931
- if (typeof prerender2 === "object" && "unstable_concurrency" in prerender2) {
4932
- concurrency = prerender2.unstable_concurrency ?? 1;
4949
+ if (typeof prerender2 === "object" && "concurrency" in prerender2) {
4950
+ concurrency = prerender2.concurrency ?? 1;
4933
4951
  }
4934
4952
  const pMap = await import("p-map");
4935
4953
  await pMap.default(build.prerender, prerenderSinglePath, { concurrency });
@@ -5611,8 +5629,8 @@ function assertPrerenderPathsMatchRoutes(config, prerenderPaths) {
5611
5629
  function getPrerenderConcurrencyConfig(reactRouterConfig) {
5612
5630
  let concurrency = 1;
5613
5631
  let { prerender: prerender2 } = reactRouterConfig;
5614
- if (typeof prerender2 === "object" && "unstable_concurrency" in prerender2) {
5615
- concurrency = prerender2.unstable_concurrency ?? 1;
5632
+ if (typeof prerender2 === "object" && "concurrency" in prerender2) {
5633
+ concurrency = prerender2.concurrency ?? 1;
5616
5634
  }
5617
5635
  return concurrency;
5618
5636
  }
@@ -6314,8 +6332,8 @@ function reactRouterRSCVitePlugin() {
6314
6332
  errors.push("future.v8_middleware: false");
6315
6333
  if (userConfig.future?.v8_viteEnvironmentApi === false)
6316
6334
  errors.push("future.v8_viteEnvironmentApi: false");
6317
- if (userConfig.future?.unstable_subResourceIntegrity)
6318
- errors.push("future.unstable_subResourceIntegrity");
6335
+ if (userConfig.subResourceIntegrity)
6336
+ errors.push("subResourceIntegrity");
6319
6337
  if (errors.length) {
6320
6338
  return `RSC Framework Mode does not currently support the following React Router config:
6321
6339
  ${errors.map((x) => ` - ${x}`).join("\n")}
@@ -6825,8 +6843,8 @@ var getClientBuildDirectory2 = (reactRouterConfig) => import_pathe6.default.join
6825
6843
  function getPrerenderConcurrencyConfig2(reactRouterConfig) {
6826
6844
  let concurrency = 1;
6827
6845
  let { prerender: prerender2 } = reactRouterConfig;
6828
- if (typeof prerender2 === "object" && "unstable_concurrency" in prerender2) {
6829
- concurrency = prerender2.unstable_concurrency ?? 1;
6846
+ if (typeof prerender2 === "object" && "concurrency" in prerender2) {
6847
+ concurrency = prerender2.concurrency ?? 1;
6830
6848
  }
6831
6849
  return concurrency;
6832
6850
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-router/dev",
3
- "version": "7.14.2",
3
+ "version": "7.15.0",
4
4
  "description": "Dev tools and CLI for React Router",
5
5
  "homepage": "https://reactrouter.com",
6
6
  "bugs": {
@@ -92,7 +92,7 @@
92
92
  "tinyglobby": "^0.2.14",
93
93
  "valibot": "^1.2.0",
94
94
  "vite-node": "^3.2.2",
95
- "@react-router/node": "7.14.2"
95
+ "@react-router/node": "7.15.0"
96
96
  },
97
97
  "devDependencies": {
98
98
  "@types/babel__core": "^7.20.5",
@@ -116,8 +116,8 @@
116
116
  "vite": "^6.3.0",
117
117
  "wireit": "0.14.9",
118
118
  "wrangler": "^4.23.0",
119
- "@react-router/serve": "7.14.2",
120
- "react-router": "^7.14.2"
119
+ "react-router": "^7.15.0",
120
+ "@react-router/serve": "7.15.0"
121
121
  },
122
122
  "peerDependencies": {
123
123
  "@vitejs/plugin-rsc": "~0.5.21",
@@ -125,8 +125,8 @@
125
125
  "typescript": "^5.1.0 || ^6.0.0",
126
126
  "vite": "^5.1.0 || ^6.0.0 || ^7.0.0 || ^8.0.0",
127
127
  "wrangler": "^3.28.2 || ^4.0.0",
128
- "@react-router/serve": "^7.14.2",
129
- "react-router": "^7.14.2"
128
+ "@react-router/serve": "^7.15.0",
129
+ "react-router": "^7.15.0"
130
130
  },
131
131
  "peerDependenciesMeta": {
132
132
  "@vitejs/plugin-rsc": {