@react-router/dev 0.0.0-experimental-303421afa → 0.0.0-experimental-112589a91

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/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-303421afa
3
+ * @react-router/dev v0.0.0-experimental-112589a91
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
@@ -492,12 +492,23 @@ async function resolveConfig({
492
492
  );
493
493
  }
494
494
  }
495
+ 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
+ );
505
+ }
495
506
  let future = {
496
- v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
497
507
  unstable_optimizeDeps: userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
498
- unstable_splitRouteModules: userAndPresetConfigs.future?.unstable_splitRouteModules ?? false,
499
508
  unstable_subResourceIntegrity: userAndPresetConfigs.future?.unstable_subResourceIntegrity ?? false,
500
- unstable_viteEnvironmentApi: userAndPresetConfigs.future?.unstable_viteEnvironmentApi ?? false
509
+ v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
510
+ v8_splitRouteModules: userAndPresetConfigs.future?.v8_splitRouteModules ?? false,
511
+ v8_viteEnvironmentApi: userAndPresetConfigs.future?.v8_viteEnvironmentApi ?? false
501
512
  };
502
513
  let reactRouterConfig = deepFreeze({
503
514
  appDirectory,
@@ -1673,8 +1684,8 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
1673
1684
  return mergeEnvironmentOptions(getBaseOptions({ viteUserConfig }), {
1674
1685
  resolve: {
1675
1686
  external: (
1676
- // If `unstable_viteEnvironmentApi` is `true`, `resolve.external` is set in the `configEnvironment` hook
1677
- ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? void 0 : ssrExternals
1687
+ // If `v8_viteEnvironmentApi` is `true`, `resolve.external` is set in the `configEnvironment` hook
1688
+ ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? void 0 : ssrExternals
1678
1689
  ),
1679
1690
  conditions: [...baseConditions, ...maybeDefaultServerConditions],
1680
1691
  externalConditions: [...baseConditions, ...defaultExternalConditions]
@@ -1689,7 +1700,7 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
1689
1700
  copyPublicDir: false,
1690
1701
  // The client only uses assets in the public directory
1691
1702
  rollupOptions: {
1692
- input: (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? viteUserConfig.environments?.ssr?.build?.rollupOptions?.input : viteUserConfig.build?.rollupOptions?.input) ?? virtual.serverBuild.id,
1703
+ input: (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig.environments?.ssr?.build?.rollupOptions?.input : viteUserConfig.build?.rollupOptions?.input) ?? virtual.serverBuild.id,
1693
1704
  output: {
1694
1705
  entryFileNames: serverBuildFile,
1695
1706
  format: serverModuleFormat
@@ -1714,14 +1725,14 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
1714
1725
  let code = (0, import_node_fs3.readFileSync)(routeFilePath, "utf-8");
1715
1726
  return [
1716
1727
  `${routeFilePath}${BUILD_CLIENT_ROUTE_QUERY_STRING}`,
1717
- ...ctx.reactRouterConfig.future.unstable_splitRouteModules && !isRootRoute ? routeChunkExportNames.map(
1728
+ ...ctx.reactRouterConfig.future.v8_splitRouteModules && !isRootRoute ? routeChunkExportNames.map(
1718
1729
  (exportName) => code.includes(exportName) ? getRouteChunkModuleId(routeFilePath, exportName) : null
1719
1730
  ) : []
1720
1731
  ].filter(isNonNullable);
1721
1732
  }
1722
1733
  )
1723
1734
  ],
1724
- output: (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? viteUserConfig?.environments?.client?.build?.rollupOptions?.output : viteUserConfig?.build?.rollupOptions?.output) ?? {
1735
+ output: (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig?.environments?.client?.build?.rollupOptions?.output : viteUserConfig?.build?.rollupOptions?.output) ?? {
1725
1736
  entryFileNames: ({ moduleIds }) => {
1726
1737
  let routeChunkModuleId = moduleIds.find(isRouteChunkModuleId);
1727
1738
  let routeChunkName = routeChunkModuleId ? getRouteChunkNameFromModuleId(routeChunkModuleId)?.replace(
@@ -1729,7 +1740,7 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
1729
1740
  ""
1730
1741
  ) : null;
1731
1742
  let routeChunkSuffix = routeChunkName ? `-${(0, import_kebabCase.default)(routeChunkName)}` : "";
1732
- let assetsDir = (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? viteUserConfig?.environments?.client?.build?.assetsDir : null) ?? viteUserConfig?.build?.assetsDir ?? "assets";
1743
+ let assetsDir = (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig?.environments?.client?.build?.assetsDir : null) ?? viteUserConfig?.build?.assetsDir ?? "assets";
1733
1744
  return path7.posix.join(
1734
1745
  assetsDir,
1735
1746
  `[name]${routeChunkSuffix}-[hash].js`
@@ -1902,12 +1913,12 @@ async function build(root, viteBuildOptions) {
1902
1913
  }
1903
1914
  let config = configResult.value;
1904
1915
  let viteMajor = parseInt(vite2.version.split(".")[0], 10);
1905
- if (config.future.unstable_viteEnvironmentApi && viteMajor === 5) {
1916
+ if (config.future.v8_viteEnvironmentApi && viteMajor === 5) {
1906
1917
  throw new Error(
1907
- "The future.unstable_viteEnvironmentApi option is not supported in Vite 5"
1918
+ "The future.v8_viteEnvironmentApi option is not supported in Vite 5"
1908
1919
  );
1909
1920
  }
1910
- const useViteEnvironmentApi = config.future.unstable_viteEnvironmentApi || await hasReactRouterRscPlugin({ root, viteBuildOptions });
1921
+ const useViteEnvironmentApi = config.future.v8_viteEnvironmentApi || await hasReactRouterRscPlugin({ root, viteBuildOptions });
1911
1922
  return await (useViteEnvironmentApi ? viteAppBuild(root, viteBuildOptions) : viteBuild(root, viteBuildOptions));
1912
1923
  }
1913
1924
  async function viteAppBuild(root, {
@@ -37,7 +37,7 @@ export default async function handler(request: Request) {
37
37
  const ssr = await import.meta.viteRsc.loadModule<
38
38
  typeof import("./entry.ssr")
39
39
  >("ssr", "index");
40
- return ssr.default(request, await fetchServer(request));
40
+ return ssr.default(request, fetchServer);
41
41
  }
42
42
 
43
43
  if (import.meta.hot) {
@@ -8,14 +8,14 @@ import {
8
8
 
9
9
  export default async function handler(
10
10
  request: Request,
11
- serverResponse: Response,
11
+ fetchServer: (request: Request) => Promise<Response>,
12
12
  ) {
13
13
  const bootstrapScriptContent =
14
14
  await import.meta.viteRsc.loadBootstrapScriptContent("index");
15
15
 
16
16
  return routeRSCServerRequest({
17
17
  request,
18
- serverResponse,
18
+ fetchServer,
19
19
  createFromReadableStream,
20
20
  async renderHTML(getPayload) {
21
21
  const payload = getPayload();
package/dist/config.d.ts CHANGED
@@ -37,20 +37,20 @@ type ServerBundlesBuildManifest = BaseBuildManifest & {
37
37
  };
38
38
  type ServerModuleFormat = "esm" | "cjs";
39
39
  interface FutureConfig {
40
+ unstable_optimizeDeps: boolean;
41
+ unstable_subResourceIntegrity: boolean;
40
42
  /**
41
43
  * Enable route middleware
42
44
  */
43
45
  v8_middleware: boolean;
44
- unstable_optimizeDeps: boolean;
45
46
  /**
46
47
  * Automatically split route modules into multiple chunks when possible.
47
48
  */
48
- unstable_splitRouteModules: boolean | "enforce";
49
- unstable_subResourceIntegrity: boolean;
49
+ v8_splitRouteModules: boolean | "enforce";
50
50
  /**
51
- * Use Vite Environment API (experimental)
51
+ * Use Vite Environment API
52
52
  */
53
- unstable_viteEnvironmentApi: boolean;
53
+ v8_viteEnvironmentApi: boolean;
54
54
  }
55
55
  type BuildManifest = DefaultBuildManifest | ServerBundlesBuildManifest;
56
56
  type BuildEndHook = (args: {
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-303421afa
2
+ * @react-router/dev v0.0.0-experimental-112589a91
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 v0.0.0-experimental-303421afa
2
+ * @react-router/dev v0.0.0-experimental-112589a91
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-303421afa
2
+ * @react-router/dev v0.0.0-experimental-112589a91
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -522,12 +522,23 @@ async function resolveConfig({
522
522
  );
523
523
  }
524
524
  }
525
+ let futureConfig = userAndPresetConfigs.future;
526
+ if (futureConfig?.unstable_splitRouteModules !== void 0) {
527
+ return err(
528
+ 'The "future.unstable_splitRouteModules" flag has been stabilized as "future.v8_splitRouteModules"'
529
+ );
530
+ }
531
+ if (futureConfig?.unstable_viteEnvironmentApi !== void 0) {
532
+ return err(
533
+ 'The "future.unstable_viteEnvironmentApi" flag has been stabilized as "future.v8_viteEnvironmentApi"'
534
+ );
535
+ }
525
536
  let future = {
526
- v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
527
537
  unstable_optimizeDeps: userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
528
- unstable_splitRouteModules: userAndPresetConfigs.future?.unstable_splitRouteModules ?? false,
529
538
  unstable_subResourceIntegrity: userAndPresetConfigs.future?.unstable_subResourceIntegrity ?? false,
530
- unstable_viteEnvironmentApi: userAndPresetConfigs.future?.unstable_viteEnvironmentApi ?? false
539
+ v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
540
+ v8_splitRouteModules: userAndPresetConfigs.future?.v8_splitRouteModules ?? false,
541
+ v8_viteEnvironmentApi: userAndPresetConfigs.future?.v8_viteEnvironmentApi ?? false
531
542
  };
532
543
  let reactRouterConfig = deepFreeze({
533
544
  appDirectory,
@@ -786,7 +797,7 @@ var cloudflareDevProxyVitePlugin = (options = {}) => {
786
797
  };
787
798
  },
788
799
  configEnvironment: async (name, options2) => {
789
- if (!future.unstable_viteEnvironmentApi) {
800
+ if (!future.v8_viteEnvironmentApi) {
790
801
  return;
791
802
  }
792
803
  if (name !== "client") {
package/dist/vite.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-303421afa
2
+ * @react-router/dev v0.0.0-experimental-112589a91
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -549,12 +549,23 @@ async function resolveConfig({
549
549
  );
550
550
  }
551
551
  }
552
+ let futureConfig = userAndPresetConfigs.future;
553
+ if (futureConfig?.unstable_splitRouteModules !== void 0) {
554
+ return err(
555
+ 'The "future.unstable_splitRouteModules" flag has been stabilized as "future.v8_splitRouteModules"'
556
+ );
557
+ }
558
+ if (futureConfig?.unstable_viteEnvironmentApi !== void 0) {
559
+ return err(
560
+ 'The "future.unstable_viteEnvironmentApi" flag has been stabilized as "future.v8_viteEnvironmentApi"'
561
+ );
562
+ }
552
563
  let future = {
553
- v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
554
564
  unstable_optimizeDeps: userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
555
- unstable_splitRouteModules: userAndPresetConfigs.future?.unstable_splitRouteModules ?? false,
556
565
  unstable_subResourceIntegrity: userAndPresetConfigs.future?.unstable_subResourceIntegrity ?? false,
557
- unstable_viteEnvironmentApi: userAndPresetConfigs.future?.unstable_viteEnvironmentApi ?? false
566
+ v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
567
+ v8_splitRouteModules: userAndPresetConfigs.future?.v8_splitRouteModules ?? false,
568
+ v8_viteEnvironmentApi: userAndPresetConfigs.future?.v8_viteEnvironmentApi ?? false
558
569
  };
559
570
  let reactRouterConfig = deepFreeze({
560
571
  appDirectory,
@@ -2735,7 +2746,7 @@ var getServerBundleRouteIds = (vitePluginContext, ctx) => {
2735
2746
  if (!ctx.buildManifest) {
2736
2747
  return void 0;
2737
2748
  }
2738
- let environmentName = ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? vitePluginContext.environment.name : ctx.environmentBuildContext?.name;
2749
+ let environmentName = ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? vitePluginContext.environment.name : ctx.environmentBuildContext?.name;
2739
2750
  if (!environmentName || !isSsrBundleEnvironmentName(environmentName)) {
2740
2751
  return void 0;
2741
2752
  }
@@ -2785,7 +2796,7 @@ var reactRouterVitePlugin = () => {
2785
2796
  }
2786
2797
  return;
2787
2798
  }
2788
- let injectedPluginContext = !reactRouterConfig.future.unstable_viteEnvironmentApi && viteCommand === "build" ? extractPluginContext(viteUserConfig) : void 0;
2799
+ let injectedPluginContext = !reactRouterConfig.future.v8_viteEnvironmentApi && viteCommand === "build" ? extractPluginContext(viteUserConfig) : void 0;
2789
2800
  let { entryClientFilePath, entryServerFilePath } = await resolveEntryFiles({
2790
2801
  rootDirectory,
2791
2802
  reactRouterConfig
@@ -2879,7 +2890,7 @@ var reactRouterVitePlugin = () => {
2879
2890
  }`;
2880
2891
  }).join(",\n ")}
2881
2892
  };
2882
- ${ctx.reactRouterConfig.future.unstable_viteEnvironmentApi && viteCommand === "serve" ? `
2893
+ ${ctx.reactRouterConfig.future.v8_viteEnvironmentApi && viteCommand === "serve" ? `
2883
2894
  export const unstable_getCriticalCss = ({ pathname }) => {
2884
2895
  return {
2885
2896
  rel: "stylesheet",
@@ -2957,7 +2968,7 @@ var reactRouterVitePlugin = () => {
2957
2968
  viteChildCompiler,
2958
2969
  ctx
2959
2970
  );
2960
- let enforceSplitRouteModules = ctx.reactRouterConfig.future.unstable_splitRouteModules === "enforce";
2971
+ let enforceSplitRouteModules = ctx.reactRouterConfig.future.v8_splitRouteModules === "enforce";
2961
2972
  for (let route of Object.values(ctx.reactRouterConfig.routes)) {
2962
2973
  let routeFile = path6.join(ctx.reactRouterConfig.appDirectory, route.file);
2963
2974
  let sourceExports = routeManifestExports[route.id];
@@ -3069,7 +3080,7 @@ var reactRouterVitePlugin = () => {
3069
3080
  viteChildCompiler,
3070
3081
  ctx
3071
3082
  );
3072
- let enforceSplitRouteModules = ctx.reactRouterConfig.future.unstable_splitRouteModules === "enforce";
3083
+ let enforceSplitRouteModules = ctx.reactRouterConfig.future.v8_splitRouteModules === "enforce";
3073
3084
  for (let [key, route] of Object.entries(ctx.reactRouterConfig.routes)) {
3074
3085
  let routeFile = route.file;
3075
3086
  let sourceExports = routeManifestExports[key];
@@ -3264,7 +3275,7 @@ var reactRouterVitePlugin = () => {
3264
3275
  // will throw an error that the file is not allowed to be read.
3265
3276
  // https://vitejs.dev/config/server-options#server-fs-allow
3266
3277
  server: viteUserConfig.server?.fs?.allow ? { fs: { allow: defaultEntries } } : void 0,
3267
- ...ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? {
3278
+ ...ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? {
3268
3279
  environments,
3269
3280
  build: {
3270
3281
  // This isn't honored by the SSR environment config (which seems
@@ -3303,7 +3314,7 @@ var reactRouterVitePlugin = () => {
3303
3314
  };
3304
3315
  },
3305
3316
  configEnvironment(name, options) {
3306
- if (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi && (ctx.buildManifest?.serverBundles ? isSsrBundleEnvironmentName(name) : name === "ssr")) {
3317
+ if (ctx.reactRouterConfig.future.v8_viteEnvironmentApi && (ctx.buildManifest?.serverBundles ? isSsrBundleEnvironmentName(name) : name === "ssr")) {
3307
3318
  const vite2 = getVite();
3308
3319
  return {
3309
3320
  resolve: {
@@ -3439,7 +3450,7 @@ var reactRouterVitePlugin = () => {
3439
3450
  }
3440
3451
  }
3441
3452
  );
3442
- if (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi) {
3453
+ if (ctx.reactRouterConfig.future.v8_viteEnvironmentApi) {
3443
3454
  viteDevServer.middlewares.use(async (req, res, next) => {
3444
3455
  let [reqPathname, reqSearch] = (req.url ?? "").split("?");
3445
3456
  if (reqPathname.endsWith("/@react-router/critical.css")) {
@@ -3467,7 +3478,7 @@ var reactRouterVitePlugin = () => {
3467
3478
  viteDevServer.middlewares.use(async (req, res, next) => {
3468
3479
  try {
3469
3480
  let build;
3470
- if (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi) {
3481
+ if (ctx.reactRouterConfig.future.v8_viteEnvironmentApi) {
3471
3482
  let vite2 = getVite();
3472
3483
  let ssrEnvironment = viteDevServer.environments.ssr;
3473
3484
  if (!vite2.isRunnableDevEnvironment(ssrEnvironment)) {
@@ -3504,17 +3515,17 @@ var reactRouterVitePlugin = () => {
3504
3515
  // the SSR build and move server-only assets to client assets directory
3505
3516
  async handler() {
3506
3517
  let { future } = ctx.reactRouterConfig;
3507
- if (future.unstable_viteEnvironmentApi ? this.environment.name === "client" : !viteConfigEnv.isSsrBuild) {
3518
+ if (future.v8_viteEnvironmentApi ? this.environment.name === "client" : !viteConfigEnv.isSsrBuild) {
3508
3519
  return;
3509
3520
  }
3510
3521
  invariant(viteConfig);
3511
3522
  let clientBuildDirectory = getClientBuildDirectory(
3512
3523
  ctx.reactRouterConfig
3513
3524
  );
3514
- let serverBuildDirectory = future.unstable_viteEnvironmentApi ? this.environment.config?.build?.outDir : ctx.environmentBuildContext?.options.build?.outDir ?? getServerBuildDirectory(ctx.reactRouterConfig);
3525
+ let serverBuildDirectory = future.v8_viteEnvironmentApi ? this.environment.config?.build?.outDir : ctx.environmentBuildContext?.options.build?.outDir ?? getServerBuildDirectory(ctx.reactRouterConfig);
3515
3526
  let ssrViteManifest = await loadViteManifest(serverBuildDirectory);
3516
3527
  let ssrAssetPaths = getViteManifestAssetPaths(ssrViteManifest);
3517
- let userSsrEmitAssets = (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? viteUserConfig.environments?.ssr?.build?.ssrEmitAssets ?? viteUserConfig.environments?.ssr?.build?.emitAssets : null) ?? viteUserConfig.build?.ssrEmitAssets ?? false;
3528
+ let userSsrEmitAssets = (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig.environments?.ssr?.build?.ssrEmitAssets ?? viteUserConfig.environments?.ssr?.build?.emitAssets : null) ?? viteUserConfig.build?.ssrEmitAssets ?? false;
3518
3529
  let movedAssetPaths = [];
3519
3530
  let removedAssetPaths = [];
3520
3531
  let copiedAssetPaths = [];
@@ -3728,7 +3739,7 @@ var reactRouterVitePlugin = () => {
3728
3739
  reason: "Split round modules disabled"
3729
3740
  });
3730
3741
  }
3731
- let enforceSplitRouteModules = ctx.reactRouterConfig.future.unstable_splitRouteModules === "enforce";
3742
+ let enforceSplitRouteModules = ctx.reactRouterConfig.future.v8_splitRouteModules === "enforce";
3732
3743
  if (enforceSplitRouteModules && chunkName === "main" && chunk) {
3733
3744
  let exportNames = getExportNames(chunk.code);
3734
3745
  validateRouteChunks({
@@ -4640,7 +4651,7 @@ async function detectRouteChunksIfEnabled(cache, ctx, id, input) {
4640
4651
  }
4641
4652
  };
4642
4653
  }
4643
- if (!ctx.reactRouterConfig.future.unstable_splitRouteModules) {
4654
+ if (!ctx.reactRouterConfig.future.v8_splitRouteModules) {
4644
4655
  return noRouteChunks();
4645
4656
  }
4646
4657
  if (isRootRouteModuleId(ctx, id)) {
@@ -4654,7 +4665,7 @@ async function detectRouteChunksIfEnabled(cache, ctx, id, input) {
4654
4665
  return detectRouteChunks(code, cache, cacheKey);
4655
4666
  }
4656
4667
  async function getRouteChunkIfEnabled(cache, ctx, id, chunkName, input) {
4657
- if (!ctx.reactRouterConfig.future.unstable_splitRouteModules) {
4668
+ if (!ctx.reactRouterConfig.future.v8_splitRouteModules) {
4658
4669
  return null;
4659
4670
  }
4660
4671
  let code = await resolveRouteFileCode(ctx, input);
@@ -4758,7 +4769,7 @@ async function getBuildManifest({
4758
4769
  if (typeof serverBundleId !== "string") {
4759
4770
  throw new Error(`The "serverBundles" function must return a string`);
4760
4771
  }
4761
- if (reactRouterConfig.future.unstable_viteEnvironmentApi) {
4772
+ if (reactRouterConfig.future.v8_viteEnvironmentApi) {
4762
4773
  if (!/^[a-zA-Z0-9_]+$/.test(serverBundleId)) {
4763
4774
  throw new Error(
4764
4775
  `The "serverBundles" function must only return strings containing alphanumeric characters and underscores.`
@@ -4846,8 +4857,8 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
4846
4857
  return mergeEnvironmentOptions(getBaseOptions({ viteUserConfig }), {
4847
4858
  resolve: {
4848
4859
  external: (
4849
- // If `unstable_viteEnvironmentApi` is `true`, `resolve.external` is set in the `configEnvironment` hook
4850
- ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? void 0 : ssrExternals
4860
+ // If `v8_viteEnvironmentApi` is `true`, `resolve.external` is set in the `configEnvironment` hook
4861
+ ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? void 0 : ssrExternals
4851
4862
  ),
4852
4863
  conditions: [...baseConditions, ...maybeDefaultServerConditions],
4853
4864
  externalConditions: [...baseConditions, ...defaultExternalConditions]
@@ -4862,7 +4873,7 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
4862
4873
  copyPublicDir: false,
4863
4874
  // The client only uses assets in the public directory
4864
4875
  rollupOptions: {
4865
- input: (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? viteUserConfig.environments?.ssr?.build?.rollupOptions?.input : viteUserConfig.build?.rollupOptions?.input) ?? virtual.serverBuild.id,
4876
+ input: (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig.environments?.ssr?.build?.rollupOptions?.input : viteUserConfig.build?.rollupOptions?.input) ?? virtual.serverBuild.id,
4866
4877
  output: {
4867
4878
  entryFileNames: serverBuildFile,
4868
4879
  format: serverModuleFormat
@@ -4887,14 +4898,14 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
4887
4898
  let code = (0, import_node_fs2.readFileSync)(routeFilePath, "utf-8");
4888
4899
  return [
4889
4900
  `${routeFilePath}${BUILD_CLIENT_ROUTE_QUERY_STRING}`,
4890
- ...ctx.reactRouterConfig.future.unstable_splitRouteModules && !isRootRoute ? routeChunkExportNames.map(
4901
+ ...ctx.reactRouterConfig.future.v8_splitRouteModules && !isRootRoute ? routeChunkExportNames.map(
4891
4902
  (exportName) => code.includes(exportName) ? getRouteChunkModuleId(routeFilePath, exportName) : null
4892
4903
  ) : []
4893
4904
  ].filter(isNonNullable);
4894
4905
  }
4895
4906
  )
4896
4907
  ],
4897
- output: (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? viteUserConfig?.environments?.client?.build?.rollupOptions?.output : viteUserConfig?.build?.rollupOptions?.output) ?? {
4908
+ output: (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig?.environments?.client?.build?.rollupOptions?.output : viteUserConfig?.build?.rollupOptions?.output) ?? {
4898
4909
  entryFileNames: ({ moduleIds }) => {
4899
4910
  let routeChunkModuleId = moduleIds.find(isRouteChunkModuleId);
4900
4911
  let routeChunkName = routeChunkModuleId ? getRouteChunkNameFromModuleId(routeChunkModuleId)?.replace(
@@ -4902,7 +4913,7 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
4902
4913
  ""
4903
4914
  ) : null;
4904
4915
  let routeChunkSuffix = routeChunkName ? `-${(0, import_kebabCase.default)(routeChunkName)}` : "";
4905
- let assetsDir = (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? viteUserConfig?.environments?.client?.build?.assetsDir : null) ?? viteUserConfig?.build?.assetsDir ?? "assets";
4916
+ let assetsDir = (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig?.environments?.client?.build?.assetsDir : null) ?? viteUserConfig?.build?.assetsDir ?? "assets";
4906
4917
  return path6.posix.join(
4907
4918
  assetsDir,
4908
4919
  `[name]${routeChunkSuffix}-[hash].js`
@@ -5352,12 +5363,12 @@ function reactRouterRSCVitePlugin() {
5352
5363
  if (userConfig.routeDiscovery) errors.push("routeDiscovery");
5353
5364
  if (userConfig.serverBundles) errors.push("serverBundles");
5354
5365
  if (userConfig.ssr === false) errors.push("ssr: false");
5355
- if (userConfig.future?.unstable_splitRouteModules)
5356
- errors.push("future.unstable_splitRouteModules");
5357
- if (userConfig.future?.unstable_viteEnvironmentApi === false)
5358
- errors.push("future.unstable_viteEnvironmentApi: false");
5359
5366
  if (userConfig.future?.v8_middleware === false)
5360
5367
  errors.push("future.v8_middleware: false");
5368
+ if (userConfig.future?.v8_splitRouteModules)
5369
+ errors.push("future.v8_splitRouteModules");
5370
+ if (userConfig.future?.v8_viteEnvironmentApi === false)
5371
+ errors.push("future.v8_viteEnvironmentApi: false");
5361
5372
  if (userConfig.future?.unstable_subResourceIntegrity)
5362
5373
  errors.push("future.unstable_subResourceIntegrity");
5363
5374
  if (errors.length) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-router/dev",
3
- "version": "0.0.0-experimental-303421afa",
3
+ "version": "0.0.0-experimental-112589a91",
4
4
  "description": "Dev tools and CLI for React Router",
5
5
  "homepage": "https://reactrouter.com",
6
6
  "bugs": {
@@ -85,9 +85,9 @@
85
85
  "react-refresh": "^0.14.0",
86
86
  "semver": "^7.3.7",
87
87
  "tinyglobby": "^0.2.14",
88
- "valibot": "^1.1.0",
88
+ "valibot": "^1.2.0",
89
89
  "vite-node": "^3.2.2",
90
- "@react-router/node": "0.0.0-experimental-303421afa"
90
+ "@react-router/node": "0.0.0-experimental-112589a91"
91
91
  },
92
92
  "devDependencies": {
93
93
  "@types/babel__core": "^7.20.5",
@@ -110,16 +110,16 @@
110
110
  "vite": "^6.3.0",
111
111
  "wireit": "0.14.9",
112
112
  "wrangler": "^4.23.0",
113
- "react-router": "^0.0.0-experimental-303421afa",
114
- "@react-router/serve": "0.0.0-experimental-303421afa"
113
+ "@react-router/serve": "0.0.0-experimental-112589a91",
114
+ "react-router": "^0.0.0-experimental-112589a91"
115
115
  },
116
116
  "peerDependencies": {
117
117
  "@vitejs/plugin-rsc": "*",
118
118
  "typescript": "^5.1.0",
119
119
  "vite": "^5.1.0 || ^6.0.0 || ^7.0.0",
120
120
  "wrangler": "^3.28.2 || ^4.0.0",
121
- "@react-router/serve": "^0.0.0-experimental-303421afa",
122
- "react-router": "^0.0.0-experimental-303421afa"
121
+ "@react-router/serve": "^0.0.0-experimental-112589a91",
122
+ "react-router": "^0.0.0-experimental-112589a91"
123
123
  },
124
124
  "peerDependenciesMeta": {
125
125
  "@vitejs/plugin-rsc": {