@react-router/dev 0.0.0-experimental-7ed11be → 0.0.0-experimental-795b50c5b

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,15 @@
1
1
  # `@react-router/dev`
2
2
 
3
+ ## 7.8.2
4
+
5
+ ### Patch Changes
6
+
7
+ - fix: memory leak in default entry.server ([#14200](https://github.com/remix-run/react-router/pull/14200))
8
+ - Updated dependencies:
9
+ - `react-router@7.8.2`
10
+ - `@react-router/node@7.8.2`
11
+ - `@react-router/serve@7.8.2`
12
+
3
13
  ## 7.8.1
4
14
 
5
15
  ### Patch Changes
package/dist/cli/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * @react-router/dev v0.0.0-experimental-7ed11be
3
+ * @react-router/dev v0.0.0-experimental-795b50c5b
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
@@ -477,7 +477,7 @@ async function resolveConfig({
477
477
  }
478
478
  }
479
479
  let future = {
480
- unstable_middleware: reactRouterUserConfig.future?.unstable_middleware ?? false,
480
+ v8_middleware: reactRouterUserConfig.future?.v8_middleware ?? false,
481
481
  unstable_optimizeDeps: reactRouterUserConfig.future?.unstable_optimizeDeps ?? false,
482
482
  unstable_splitRouteModules: reactRouterUserConfig.future?.unstable_splitRouteModules ?? false,
483
483
  unstable_subResourceIntegrity: reactRouterUserConfig.future?.unstable_subResourceIntegrity ?? false,
@@ -897,7 +897,7 @@ function generateFuture(ctx) {
897
897
 
898
898
  declare module "react-router" {
899
899
  interface Future {
900
- unstable_middleware: ${ctx.config.future.unstable_middleware}
900
+ middleware: ${ctx.config.future.v8_middleware}
901
901
  }
902
902
  }
903
903
  `;
@@ -1118,11 +1118,11 @@ function getRouteAnnotations({
1118
1118
  export type HeadersArgs = Annotations["HeadersArgs"];
1119
1119
  export type HeadersFunction = Annotations["HeadersFunction"];
1120
1120
 
1121
- // unstable_middleware
1122
- export type unstable_MiddlewareFunction = Annotations["unstable_MiddlewareFunction"];
1121
+ // middleware
1122
+ export type MiddlewareFunction = Annotations["MiddlewareFunction"];
1123
1123
 
1124
- // unstable_clientMiddleware
1125
- export type unstable_ClientMiddlewareFunction = Annotations["unstable_ClientMiddlewareFunction"];
1124
+ // clientMiddleware
1125
+ export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"];
1126
1126
 
1127
1127
  // loader
1128
1128
  export type LoaderArgs = Annotations["LoaderArgs"];
@@ -1393,7 +1393,7 @@ var init_route_chunks = __esm({
1393
1393
  routeChunkExportNames = [
1394
1394
  "clientAction",
1395
1395
  "clientLoader",
1396
- "unstable_clientMiddleware",
1396
+ "clientMiddleware",
1397
1397
  "HydrateFallback"
1398
1398
  ];
1399
1399
  mainChunkName = "main";
@@ -1403,7 +1403,7 @@ var init_route_chunks = __esm({
1403
1403
  main: `${routeChunkQueryStringPrefix}main`,
1404
1404
  clientAction: `${routeChunkQueryStringPrefix}clientAction`,
1405
1405
  clientLoader: `${routeChunkQueryStringPrefix}clientLoader`,
1406
- unstable_clientMiddleware: `${routeChunkQueryStringPrefix}unstable_clientMiddleware`,
1406
+ clientMiddleware: `${routeChunkQueryStringPrefix}clientMiddleware`,
1407
1407
  HydrateFallback: `${routeChunkQueryStringPrefix}HydrateFallback`
1408
1408
  };
1409
1409
  }
@@ -1696,7 +1696,7 @@ var init_plugin = __esm({
1696
1696
  CLIENT_NON_COMPONENT_EXPORTS = [
1697
1697
  "clientAction",
1698
1698
  "clientLoader",
1699
- "unstable_clientMiddleware",
1699
+ "clientMiddleware",
1700
1700
  "handle",
1701
1701
  "meta",
1702
1702
  "links",
@@ -24,7 +24,11 @@ setServerCallback(
24
24
  );
25
25
 
26
26
  createFromReadableStream<RSCPayload>(getRSCStream()).then((payload) => {
27
- startTransition(() => {
27
+ // @ts-expect-error - on 18 types, requires 19.
28
+ startTransition(async () => {
29
+ const formState =
30
+ payload.type === "render" ? await payload.formState : undefined;
31
+
28
32
  hydrateRoot(
29
33
  document,
30
34
  <StrictMode>
@@ -33,6 +37,10 @@ createFromReadableStream<RSCPayload>(getRSCStream()).then((payload) => {
33
37
  createFromReadableStream={createFromReadableStream}
34
38
  />
35
39
  </StrictMode>,
40
+ {
41
+ // @ts-expect-error - no types for this yet
42
+ formState,
43
+ },
36
44
  );
37
45
  });
38
46
  });
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  createTemporaryReferenceSet,
3
3
  decodeAction,
4
+ decodeFormState,
4
5
  decodeReply,
5
6
  loadServerAction,
6
7
  renderToReadableStream,
@@ -12,8 +13,9 @@ import routes from "virtual:react-router/unstable_rsc/routes";
12
13
  export async function fetchServer(request: Request) {
13
14
  return await matchRSCServerRequest({
14
15
  createTemporaryReferenceSet,
15
- decodeReply,
16
16
  decodeAction,
17
+ decodeFormState,
18
+ decodeReply,
17
19
  loadServerAction,
18
20
  request,
19
21
  routes,
@@ -12,16 +12,22 @@ export default async function handler(
12
12
  ) {
13
13
  const bootstrapScriptContent =
14
14
  await import.meta.viteRsc.loadBootstrapScriptContent("index");
15
+
15
16
  return routeRSCServerRequest({
16
17
  request,
17
18
  fetchServer,
18
19
  createFromReadableStream,
19
- renderHTML(getPayload) {
20
+ async renderHTML(getPayload) {
21
+ const payload = await getPayload();
22
+ const formState =
23
+ payload.type === "render" ? await payload.formState : undefined;
24
+
20
25
  return ReactDomServer.renderToReadableStream(
21
26
  <RSCStaticRouter getPayload={getPayload} />,
22
27
  {
23
28
  bootstrapScriptContent,
24
29
  signal: request.signal,
30
+ formState,
25
31
  },
26
32
  );
27
33
  },
@@ -16,7 +16,7 @@ export default function handleRequest(
16
16
  routerContext: EntryContext,
17
17
  loadContext: AppLoadContext,
18
18
  // If you have middleware enabled:
19
- // loadContext: unstable_RouterContextProvider
19
+ // loadContext: RouterContextProvider
20
20
  ) {
21
21
  return new Promise((resolve, reject) => {
22
22
  let shellRendered = false;
package/dist/config.d.ts CHANGED
@@ -40,7 +40,7 @@ interface FutureConfig {
40
40
  /**
41
41
  * Enable route middleware
42
42
  */
43
- unstable_middleware: boolean;
43
+ v8_middleware: boolean;
44
44
  unstable_optimizeDeps: boolean;
45
45
  /**
46
46
  * Automatically split route modules into multiple chunks when possible.
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-7ed11be
2
+ * @react-router/dev v0.0.0-experimental-795b50c5b
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/internal.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-7ed11be
2
+ * @react-router/dev v0.0.0-experimental-795b50c5b
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -510,7 +510,7 @@ async function resolveConfig({
510
510
  }
511
511
  }
512
512
  let future = {
513
- unstable_middleware: reactRouterUserConfig.future?.unstable_middleware ?? false,
513
+ v8_middleware: reactRouterUserConfig.future?.v8_middleware ?? false,
514
514
  unstable_optimizeDeps: reactRouterUserConfig.future?.unstable_optimizeDeps ?? false,
515
515
  unstable_splitRouteModules: reactRouterUserConfig.future?.unstable_splitRouteModules ?? false,
516
516
  unstable_subResourceIntegrity: reactRouterUserConfig.future?.unstable_subResourceIntegrity ?? false,
@@ -801,7 +801,7 @@ function generateFuture(ctx) {
801
801
 
802
802
  declare module "react-router" {
803
803
  interface Future {
804
- unstable_middleware: ${ctx.config.future.unstable_middleware}
804
+ middleware: ${ctx.config.future.v8_middleware}
805
805
  }
806
806
  }
807
807
  `;
@@ -1023,11 +1023,11 @@ function getRouteAnnotations({
1023
1023
  export type HeadersArgs = Annotations["HeadersArgs"];
1024
1024
  export type HeadersFunction = Annotations["HeadersFunction"];
1025
1025
 
1026
- // unstable_middleware
1027
- export type unstable_MiddlewareFunction = Annotations["unstable_MiddlewareFunction"];
1026
+ // middleware
1027
+ export type MiddlewareFunction = Annotations["MiddlewareFunction"];
1028
1028
 
1029
- // unstable_clientMiddleware
1030
- export type unstable_ClientMiddlewareFunction = Annotations["unstable_ClientMiddlewareFunction"];
1029
+ // clientMiddleware
1030
+ export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"];
1031
1031
 
1032
1032
  // loader
1033
1033
  export type LoaderArgs = Annotations["LoaderArgs"];
@@ -1348,23 +1348,43 @@ function invalidDestructureError(name) {
1348
1348
  }
1349
1349
 
1350
1350
  // vite/rsc/virtual-route-modules.ts
1351
+ var SERVER_ONLY_COMPONENT_EXPORTS = ["ServerComponent"];
1351
1352
  var SERVER_ONLY_ROUTE_EXPORTS = [
1353
+ ...SERVER_ONLY_COMPONENT_EXPORTS,
1352
1354
  "loader",
1353
1355
  "action",
1354
- "unstable_middleware",
1355
- "headers",
1356
- "ServerComponent"
1356
+ "middleware",
1357
+ "headers"
1357
1358
  ];
1358
- var COMPONENT_EXPORTS = [
1359
- "default",
1359
+ var SERVER_ONLY_ROUTE_EXPORTS_SET = new Set(SERVER_ONLY_ROUTE_EXPORTS);
1360
+ function isServerOnlyRouteExport(name) {
1361
+ return SERVER_ONLY_ROUTE_EXPORTS_SET.has(name);
1362
+ }
1363
+ var COMMON_COMPONENT_EXPORTS = [
1360
1364
  "ErrorBoundary",
1361
1365
  "HydrateFallback",
1362
1366
  "Layout"
1363
1367
  ];
1368
+ var SERVER_FIRST_COMPONENT_EXPORTS = [
1369
+ ...COMMON_COMPONENT_EXPORTS,
1370
+ ...SERVER_ONLY_COMPONENT_EXPORTS
1371
+ ];
1372
+ var SERVER_FIRST_COMPONENT_EXPORTS_SET = new Set(
1373
+ SERVER_FIRST_COMPONENT_EXPORTS
1374
+ );
1375
+ function isServerFirstComponentExport(name) {
1376
+ return SERVER_FIRST_COMPONENT_EXPORTS_SET.has(
1377
+ name
1378
+ );
1379
+ }
1380
+ var CLIENT_COMPONENT_EXPORTS = [
1381
+ ...COMMON_COMPONENT_EXPORTS,
1382
+ "default"
1383
+ ];
1364
1384
  var CLIENT_NON_COMPONENT_EXPORTS = [
1365
1385
  "clientAction",
1366
1386
  "clientLoader",
1367
- "unstable_clientMiddleware",
1387
+ "clientMiddleware",
1368
1388
  "handle",
1369
1389
  "meta",
1370
1390
  "links",
@@ -1376,25 +1396,43 @@ function isClientNonComponentExport(name) {
1376
1396
  }
1377
1397
  var CLIENT_ROUTE_EXPORTS = [
1378
1398
  ...CLIENT_NON_COMPONENT_EXPORTS,
1379
- ...COMPONENT_EXPORTS
1399
+ ...CLIENT_COMPONENT_EXPORTS
1380
1400
  ];
1381
1401
  var CLIENT_ROUTE_EXPORTS_SET = new Set(CLIENT_ROUTE_EXPORTS);
1382
1402
  function isClientRouteExport(name) {
1383
1403
  return CLIENT_ROUTE_EXPORTS_SET.has(name);
1384
1404
  }
1405
+ var ROUTE_EXPORTS = [
1406
+ ...SERVER_ONLY_ROUTE_EXPORTS,
1407
+ ...CLIENT_ROUTE_EXPORTS
1408
+ ];
1409
+ var ROUTE_EXPORTS_SET = new Set(ROUTE_EXPORTS);
1410
+ function isRouteExport(name) {
1411
+ return ROUTE_EXPORTS_SET.has(name);
1412
+ }
1413
+ function isCustomRouteExport(name) {
1414
+ return !isRouteExport(name);
1415
+ }
1416
+ function hasReactServerCondition(viteEnvironment) {
1417
+ return viteEnvironment.config.resolve.conditions.includes("react-server");
1418
+ }
1385
1419
  function transformVirtualRouteModules({
1386
1420
  id,
1387
1421
  code,
1388
- viteCommand
1422
+ viteCommand,
1423
+ routeIdByFile,
1424
+ viteEnvironment
1389
1425
  }) {
1390
- if (!id.includes("route-module")) {
1391
- return;
1392
- }
1393
- if (isVirtualRouteModuleId(id)) {
1394
- return createVirtualRouteModuleCode({ id, code, viteCommand });
1426
+ if (isVirtualRouteModuleId(id) || routeIdByFile.has(id)) {
1427
+ return createVirtualRouteModuleCode({
1428
+ id,
1429
+ code,
1430
+ viteCommand,
1431
+ viteEnvironment
1432
+ });
1395
1433
  }
1396
1434
  if (isVirtualServerRouteModuleId(id)) {
1397
- return createVirtualServerRouteModuleCode({ id, code });
1435
+ return createVirtualServerRouteModuleCode({ id, code, viteEnvironment });
1398
1436
  }
1399
1437
  if (isVirtualClientRouteModuleId(id)) {
1400
1438
  return createVirtualClientRouteModuleCode({ id, code, viteCommand });
@@ -1403,22 +1441,44 @@ function transformVirtualRouteModules({
1403
1441
  async function createVirtualRouteModuleCode({
1404
1442
  id,
1405
1443
  code: routeSource,
1406
- viteCommand
1444
+ viteCommand,
1445
+ viteEnvironment
1407
1446
  }) {
1447
+ const isReactServer = hasReactServerCondition(viteEnvironment);
1408
1448
  const { staticExports, isServerFirstRoute, hasClientExports } = parseRouteExports(routeSource);
1409
1449
  const clientModuleId = getVirtualClientModuleId(id);
1410
1450
  const serverModuleId = getVirtualServerModuleId(id);
1411
1451
  let code = "";
1412
1452
  if (isServerFirstRoute) {
1453
+ if (staticExports.some(isServerFirstComponentExport)) {
1454
+ code += `import React from "react";
1455
+ `;
1456
+ }
1413
1457
  for (const staticExport of staticExports) {
1414
1458
  if (isClientNonComponentExport(staticExport)) {
1415
1459
  code += `export { ${staticExport} } from "${clientModuleId}";
1416
1460
  `;
1417
- } else if (staticExport === "ServerComponent") {
1418
- code += `export { ServerComponent as default } from "${serverModuleId}";
1461
+ } else if (isReactServer && isServerFirstComponentExport(staticExport) && // Layout wraps all other component exports so doesn't need CSS injected
1462
+ staticExport !== "Layout") {
1463
+ code += `import { ${staticExport} as ${staticExport}WithoutCss } from "${serverModuleId}";
1464
+ `;
1465
+ code += `export ${staticExport === "ServerComponent" ? "default " : " "}function ${staticExport}(props) {
1466
+ `;
1467
+ code += ` return React.createElement(React.Fragment, null,
1468
+ `;
1469
+ code += ` import.meta.viteRsc.loadCss(),
1470
+ `;
1471
+ code += ` React.createElement(${staticExport}WithoutCss, props),
1472
+ `;
1473
+ code += ` );
1474
+ `;
1475
+ code += `}
1419
1476
  `;
1420
- } else {
1477
+ } else if (isReactServer && isRouteExport(staticExport)) {
1421
1478
  code += `export { ${staticExport} } from "${serverModuleId}";
1479
+ `;
1480
+ } else if (isCustomRouteExport(staticExport)) {
1481
+ code += `export { ${staticExport} } from "${isReactServer ? serverModuleId : clientModuleId}";
1422
1482
  `;
1423
1483
  }
1424
1484
  }
@@ -1431,8 +1491,11 @@ async function createVirtualRouteModuleCode({
1431
1491
  if (isClientRouteExport(staticExport)) {
1432
1492
  code += `export { ${staticExport} } from "${clientModuleId}";
1433
1493
  `;
1434
- } else {
1494
+ } else if (isReactServer && isServerOnlyRouteExport(staticExport)) {
1435
1495
  code += `export { ${staticExport} } from "${serverModuleId}";
1496
+ `;
1497
+ } else if (isCustomRouteExport(staticExport)) {
1498
+ code += `export { ${staticExport} } from "${isReactServer ? serverModuleId : clientModuleId}";
1436
1499
  `;
1437
1500
  }
1438
1501
  }
@@ -1445,8 +1508,18 @@ async function createVirtualRouteModuleCode({
1445
1508
  }
1446
1509
  function createVirtualServerRouteModuleCode({
1447
1510
  id,
1448
- code: routeSource
1511
+ code: routeSource,
1512
+ viteEnvironment
1449
1513
  }) {
1514
+ if (!hasReactServerCondition(viteEnvironment)) {
1515
+ throw new Error(
1516
+ [
1517
+ "Virtual server route module was loaded outside of the RSC environment.",
1518
+ `Environment Name: ${viteEnvironment.name}`,
1519
+ `Module ID: ${id}`
1520
+ ].join("\n")
1521
+ );
1522
+ }
1450
1523
  const { staticExports, isServerFirstRoute } = parseRouteExports(routeSource);
1451
1524
  const clientModuleId = getVirtualClientModuleId(id);
1452
1525
  const serverRouteModuleAst = import_parser.parse(routeSource, {
@@ -1474,7 +1547,7 @@ function createVirtualClientRouteModuleCode({
1474
1547
  viteCommand
1475
1548
  }) {
1476
1549
  const { staticExports, isServerFirstRoute, hasClientExports } = parseRouteExports(routeSource);
1477
- const exportsToRemove = isServerFirstRoute ? [...SERVER_ONLY_ROUTE_EXPORTS, ...COMPONENT_EXPORTS] : SERVER_ONLY_ROUTE_EXPORTS;
1550
+ const exportsToRemove = isServerFirstRoute ? [...SERVER_ONLY_ROUTE_EXPORTS, ...CLIENT_COMPONENT_EXPORTS] : SERVER_ONLY_ROUTE_EXPORTS;
1478
1551
  const clientRouteModuleAst = import_parser.parse(routeSource, {
1479
1552
  sourceType: "module"
1480
1553
  });
@@ -1698,7 +1771,14 @@ function reactRouterRSCVitePlugin() {
1698
1771
  {
1699
1772
  name: "react-router/rsc/virtual-route-modules",
1700
1773
  transform(code, id) {
1701
- return transformVirtualRouteModules({ code, id, viteCommand });
1774
+ if (!routeIdByFile) return;
1775
+ return transformVirtualRouteModules({
1776
+ code,
1777
+ id,
1778
+ viteCommand,
1779
+ routeIdByFile,
1780
+ viteEnvironment: this.environment
1781
+ });
1702
1782
  }
1703
1783
  },
1704
1784
  {
@@ -1759,8 +1839,8 @@ function reactRouterRSCVitePlugin() {
1759
1839
  const isJSX = filepath.endsWith("x");
1760
1840
  const useFastRefresh = !ssr && (isJSX || code.includes(devRuntime));
1761
1841
  if (!useFastRefresh) return;
1762
- const routeId = routeIdByFile?.get(filepath);
1763
- if (routeId !== void 0) {
1842
+ if (isVirtualClientRouteModuleId(id)) {
1843
+ const routeId = routeIdByFile?.get(filepath);
1764
1844
  return { code: addRefreshWrapper({ routeId, code, id }) };
1765
1845
  }
1766
1846
  const result = await babel.transformAsync(code, {
@@ -1788,7 +1868,13 @@ function reactRouterRSCVitePlugin() {
1788
1868
  name: "react-router/rsc/hmr/updates",
1789
1869
  async hotUpdate({ server, file, modules }) {
1790
1870
  if (this.environment.name !== "rsc") return;
1791
- const isServerOnlyChange = (server.environments.client.moduleGraph.getModulesByFile(file)?.size ?? 0) === 0;
1871
+ const clientModules = server.environments.client.moduleGraph.getModulesByFile(file);
1872
+ const vite2 = await import("vite");
1873
+ const isServerOnlyChange = !clientModules || clientModules.size === 0 || // Handle CSS injected from server-first routes (with ?direct query
1874
+ // string) since the client graph has a reference to the CSS
1875
+ vite2.isCSSRequest(file) && Array.from(clientModules).some(
1876
+ (mod) => mod.id?.includes("?direct")
1877
+ );
1792
1878
  for (const mod of getModulesWithImporters(modules)) {
1793
1879
  if (!mod.file) continue;
1794
1880
  const normalizedPath = import_pathe5.default.normalize(mod.file);
package/dist/routes.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-7ed11be
2
+ * @react-router/dev v0.0.0-experimental-795b50c5b
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,4 +1,4 @@
1
- import { UNSAFE_MiddlewareEnabled, unstable_RouterContextProvider, AppLoadContext } from 'react-router';
1
+ import { UNSAFE_MiddlewareEnabled, RouterContextProvider, AppLoadContext } from 'react-router';
2
2
  import { Plugin } from 'vite';
3
3
  import { PlatformProxy, GetPlatformProxyOptions } from 'wrangler';
4
4
 
@@ -10,7 +10,7 @@ type LoadContext<Env, Cf extends CfProperties> = {
10
10
  type GetLoadContext<Env, Cf extends CfProperties> = (args: {
11
11
  request: Request;
12
12
  context: LoadContext<Env, Cf>;
13
- }) => UNSAFE_MiddlewareEnabled extends true ? MaybePromise<unstable_RouterContextProvider> : MaybePromise<AppLoadContext>;
13
+ }) => UNSAFE_MiddlewareEnabled extends true ? MaybePromise<RouterContextProvider> : MaybePromise<AppLoadContext>;
14
14
  /**
15
15
  * Vite plugin that provides [Node proxies to local workerd
16
16
  * bindings](https://developers.cloudflare.com/workers/wrangler/api/#getplatformproxy)
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-7ed11be
2
+ * @react-router/dev v0.0.0-experimental-795b50c5b
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -573,7 +573,7 @@ async function resolveConfig({
573
573
  }
574
574
  }
575
575
  let future = {
576
- unstable_middleware: reactRouterUserConfig.future?.unstable_middleware ?? false,
576
+ v8_middleware: reactRouterUserConfig.future?.v8_middleware ?? false,
577
577
  unstable_optimizeDeps: reactRouterUserConfig.future?.unstable_optimizeDeps ?? false,
578
578
  unstable_splitRouteModules: reactRouterUserConfig.future?.unstable_splitRouteModules ?? false,
579
579
  unstable_subResourceIntegrity: reactRouterUserConfig.future?.unstable_subResourceIntegrity ?? false,
package/dist/vite.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-7ed11be
2
+ * @react-router/dev v0.0.0-experimental-795b50c5b
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -533,7 +533,7 @@ async function resolveConfig({
533
533
  }
534
534
  }
535
535
  let future = {
536
- unstable_middleware: reactRouterUserConfig.future?.unstable_middleware ?? false,
536
+ v8_middleware: reactRouterUserConfig.future?.v8_middleware ?? false,
537
537
  unstable_optimizeDeps: reactRouterUserConfig.future?.unstable_optimizeDeps ?? false,
538
538
  unstable_splitRouteModules: reactRouterUserConfig.future?.unstable_splitRouteModules ?? false,
539
539
  unstable_subResourceIntegrity: reactRouterUserConfig.future?.unstable_subResourceIntegrity ?? false,
@@ -883,7 +883,7 @@ function generateFuture(ctx) {
883
883
 
884
884
  declare module "react-router" {
885
885
  interface Future {
886
- unstable_middleware: ${ctx.config.future.unstable_middleware}
886
+ middleware: ${ctx.config.future.v8_middleware}
887
887
  }
888
888
  }
889
889
  `;
@@ -1105,11 +1105,11 @@ function getRouteAnnotations({
1105
1105
  export type HeadersArgs = Annotations["HeadersArgs"];
1106
1106
  export type HeadersFunction = Annotations["HeadersFunction"];
1107
1107
 
1108
- // unstable_middleware
1109
- export type unstable_MiddlewareFunction = Annotations["unstable_MiddlewareFunction"];
1108
+ // middleware
1109
+ export type MiddlewareFunction = Annotations["MiddlewareFunction"];
1110
1110
 
1111
- // unstable_clientMiddleware
1112
- export type unstable_ClientMiddlewareFunction = Annotations["unstable_ClientMiddlewareFunction"];
1111
+ // clientMiddleware
1112
+ export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"];
1113
1113
 
1114
1114
  // loader
1115
1115
  export type LoaderArgs = Annotations["LoaderArgs"];
@@ -2210,7 +2210,7 @@ function detectRouteChunks(code, cache, cacheKey) {
2210
2210
  var routeChunkExportNames = [
2211
2211
  "clientAction",
2212
2212
  "clientLoader",
2213
- "unstable_clientMiddleware",
2213
+ "clientMiddleware",
2214
2214
  "HydrateFallback"
2215
2215
  ];
2216
2216
  var mainChunkName = "main";
@@ -2226,7 +2226,7 @@ var routeChunkQueryStrings = {
2226
2226
  main: `${routeChunkQueryStringPrefix}main`,
2227
2227
  clientAction: `${routeChunkQueryStringPrefix}clientAction`,
2228
2228
  clientLoader: `${routeChunkQueryStringPrefix}clientLoader`,
2229
- unstable_clientMiddleware: `${routeChunkQueryStringPrefix}unstable_clientMiddleware`,
2229
+ clientMiddleware: `${routeChunkQueryStringPrefix}clientMiddleware`,
2230
2230
  HydrateFallback: `${routeChunkQueryStringPrefix}HydrateFallback`
2231
2231
  };
2232
2232
  function getRouteChunkModuleId(filePath, chunkName) {
@@ -2359,16 +2359,11 @@ function validatePluginOrder() {
2359
2359
  function extractPluginContext(viteConfig) {
2360
2360
  return viteConfig["__reactRouterPluginContext"];
2361
2361
  }
2362
- var SERVER_ONLY_ROUTE_EXPORTS = [
2363
- "loader",
2364
- "action",
2365
- "unstable_middleware",
2366
- "headers"
2367
- ];
2362
+ var SERVER_ONLY_ROUTE_EXPORTS = ["loader", "action", "middleware", "headers"];
2368
2363
  var CLIENT_NON_COMPONENT_EXPORTS = [
2369
2364
  "clientAction",
2370
2365
  "clientLoader",
2371
- "unstable_clientMiddleware",
2366
+ "clientMiddleware",
2372
2367
  "handle",
2373
2368
  "meta",
2374
2369
  "links",
@@ -2851,9 +2846,7 @@ var reactRouterVitePlugin = () => {
2851
2846
  let sourceExports = routeManifestExports[route.id];
2852
2847
  let hasClientAction = sourceExports.includes("clientAction");
2853
2848
  let hasClientLoader = sourceExports.includes("clientLoader");
2854
- let hasClientMiddleware = sourceExports.includes(
2855
- "unstable_clientMiddleware"
2856
- );
2849
+ let hasClientMiddleware = sourceExports.includes("clientMiddleware");
2857
2850
  let hasHydrateFallback = sourceExports.includes("HydrateFallback");
2858
2851
  let { hasRouteChunkByExportName } = await detectRouteChunksIfEnabled(
2859
2852
  cache,
@@ -2868,7 +2861,7 @@ var reactRouterVitePlugin = () => {
2868
2861
  valid: {
2869
2862
  clientAction: !hasClientAction || hasRouteChunkByExportName.clientAction,
2870
2863
  clientLoader: !hasClientLoader || hasRouteChunkByExportName.clientLoader,
2871
- unstable_clientMiddleware: !hasClientMiddleware || hasRouteChunkByExportName.unstable_clientMiddleware,
2864
+ clientMiddleware: !hasClientMiddleware || hasRouteChunkByExportName.clientMiddleware,
2872
2865
  HydrateFallback: !hasHydrateFallback || hasRouteChunkByExportName.HydrateFallback
2873
2866
  }
2874
2867
  });
@@ -2902,10 +2895,10 @@ var reactRouterVitePlugin = () => {
2902
2895
  viteManifest,
2903
2896
  getRouteChunkModuleId(routeFile, "clientLoader")
2904
2897
  ) : void 0,
2905
- clientMiddlewareModule: hasRouteChunkByExportName.unstable_clientMiddleware ? getPublicModulePathForEntry(
2898
+ clientMiddlewareModule: hasRouteChunkByExportName.clientMiddleware ? getPublicModulePathForEntry(
2906
2899
  ctx,
2907
2900
  viteManifest,
2908
- getRouteChunkModuleId(routeFile, "unstable_clientMiddleware")
2901
+ getRouteChunkModuleId(routeFile, "clientMiddleware")
2909
2902
  ) : void 0,
2910
2903
  hydrateFallbackModule: hasRouteChunkByExportName.HydrateFallback ? getPublicModulePathForEntry(
2911
2904
  ctx,
@@ -2964,9 +2957,7 @@ var reactRouterVitePlugin = () => {
2964
2957
  let sourceExports = routeManifestExports[key];
2965
2958
  let hasClientAction = sourceExports.includes("clientAction");
2966
2959
  let hasClientLoader = sourceExports.includes("clientLoader");
2967
- let hasClientMiddleware = sourceExports.includes(
2968
- "unstable_clientMiddleware"
2969
- );
2960
+ let hasClientMiddleware = sourceExports.includes("clientMiddleware");
2970
2961
  let hasHydrateFallback = sourceExports.includes("HydrateFallback");
2971
2962
  let routeModulePath = combineURLs(
2972
2963
  ctx.publicPath,
@@ -2988,7 +2979,7 @@ var reactRouterVitePlugin = () => {
2988
2979
  valid: {
2989
2980
  clientAction: !hasClientAction || hasRouteChunkByExportName.clientAction,
2990
2981
  clientLoader: !hasClientLoader || hasRouteChunkByExportName.clientLoader,
2991
- unstable_clientMiddleware: !hasClientMiddleware || hasRouteChunkByExportName.unstable_clientMiddleware,
2982
+ clientMiddleware: !hasClientMiddleware || hasRouteChunkByExportName.clientMiddleware,
2992
2983
  HydrateFallback: !hasHydrateFallback || hasRouteChunkByExportName.HydrateFallback
2993
2984
  }
2994
2985
  });
@@ -3656,9 +3647,7 @@ var reactRouterVitePlugin = () => {
3656
3647
  valid: {
3657
3648
  clientAction: !exportNames.includes("clientAction"),
3658
3649
  clientLoader: !exportNames.includes("clientLoader"),
3659
- unstable_clientMiddleware: !exportNames.includes(
3660
- "unstable_clientMiddleware"
3661
- ),
3650
+ clientMiddleware: !exportNames.includes("clientMiddleware"),
3662
3651
  HydrateFallback: !exportNames.includes("HydrateFallback")
3663
3652
  }
3664
3653
  });
@@ -4085,13 +4074,13 @@ async function getRouteMetadata(cache, ctx, viteChildCompiler, route, readRouteF
4085
4074
  // Ensure the Vite dev server responds with a JS module
4086
4075
  clientActionModule: hasRouteChunkByExportName.clientAction ? `${getRouteChunkModuleId(moduleUrl, "clientAction")}` : void 0,
4087
4076
  clientLoaderModule: hasRouteChunkByExportName.clientLoader ? `${getRouteChunkModuleId(moduleUrl, "clientLoader")}` : void 0,
4088
- clientMiddlewareModule: hasRouteChunkByExportName.unstable_clientMiddleware ? `${getRouteChunkModuleId(moduleUrl, "unstable_clientMiddleware")}` : void 0,
4077
+ clientMiddlewareModule: hasRouteChunkByExportName.clientMiddleware ? `${getRouteChunkModuleId(moduleUrl, "clientMiddleware")}` : void 0,
4089
4078
  hydrateFallbackModule: hasRouteChunkByExportName.HydrateFallback ? `${getRouteChunkModuleId(moduleUrl, "HydrateFallback")}` : void 0,
4090
4079
  hasAction: sourceExports.includes("action"),
4091
4080
  hasClientAction: sourceExports.includes("clientAction"),
4092
4081
  hasLoader: sourceExports.includes("loader"),
4093
4082
  hasClientLoader: sourceExports.includes("clientLoader"),
4094
- hasClientMiddleware: sourceExports.includes("unstable_clientMiddleware"),
4083
+ hasClientMiddleware: sourceExports.includes("clientMiddleware"),
4095
4084
  hasErrorBoundary: sourceExports.includes("ErrorBoundary"),
4096
4085
  imports: []
4097
4086
  };
@@ -4539,7 +4528,7 @@ async function detectRouteChunksIfEnabled(cache, ctx, id, input) {
4539
4528
  hasRouteChunkByExportName: {
4540
4529
  clientAction: false,
4541
4530
  clientLoader: false,
4542
- unstable_clientMiddleware: false,
4531
+ clientMiddleware: false,
4543
4532
  HydrateFallback: false
4544
4533
  }
4545
4534
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-router/dev",
3
- "version": "0.0.0-experimental-7ed11be",
3
+ "version": "0.0.0-experimental-795b50c5b",
4
4
  "description": "Dev tools and CLI for React Router",
5
5
  "homepage": "https://reactrouter.com",
6
6
  "bugs": {
@@ -73,7 +73,7 @@
73
73
  "@babel/traverse": "^7.27.7",
74
74
  "@babel/types": "^7.27.7",
75
75
  "@npmcli/package-json": "^4.0.1",
76
- "@vitejs/plugin-rsc": "0.4.11",
76
+ "@vitejs/plugin-rsc": "0.4.25",
77
77
  "arg": "^5.0.1",
78
78
  "babel-dead-code-elimination": "^1.0.6",
79
79
  "chokidar": "^4.0.0",
@@ -91,7 +91,7 @@
91
91
  "tinyglobby": "^0.2.14",
92
92
  "valibot": "^0.41.0",
93
93
  "vite-node": "^3.2.2",
94
- "@react-router/node": "0.0.0-experimental-7ed11be"
94
+ "@react-router/node": "0.0.0-experimental-795b50c5b"
95
95
  },
96
96
  "devDependencies": {
97
97
  "@types/babel__core": "^7.20.5",
@@ -114,15 +114,15 @@
114
114
  "vite": "^6.1.0",
115
115
  "wireit": "0.14.9",
116
116
  "wrangler": "^4.23.0",
117
- "@react-router/serve": "0.0.0-experimental-7ed11be",
118
- "react-router": "^0.0.0-experimental-7ed11be"
117
+ "@react-router/serve": "0.0.0-experimental-795b50c5b",
118
+ "react-router": "^0.0.0-experimental-795b50c5b"
119
119
  },
120
120
  "peerDependencies": {
121
121
  "typescript": "^5.1.0",
122
122
  "vite": "^5.1.0 || ^6.0.0 || ^7.0.0",
123
123
  "wrangler": "^3.28.2 || ^4.0.0",
124
- "@react-router/serve": "^0.0.0-experimental-7ed11be",
125
- "react-router": "^0.0.0-experimental-7ed11be"
124
+ "@react-router/serve": "^0.0.0-experimental-795b50c5b",
125
+ "react-router": "^0.0.0-experimental-795b50c5b"
126
126
  },
127
127
  "peerDependenciesMeta": {
128
128
  "@react-router/serve": {