@react-router/dev 7.5.0 → 7.5.1-pre.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,15 @@
1
1
  # `@react-router/dev`
2
2
 
3
+ ## 7.5.1-pre.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Fix prerendering when a loader returns a redirect ([#13365](https://github.com/remix-run/react-router/pull/13365))
8
+ - Updated dependencies:
9
+ - `react-router@7.5.1-pre.0`
10
+ - `@react-router/node@7.5.1-pre.0`
11
+ - `@react-router/serve@7.5.1-pre.0`
12
+
3
13
  ## 7.5.0
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 v7.5.0
3
+ * @react-router/dev v7.5.1-pre.0
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
@@ -1169,27 +1169,28 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
1169
1169
  function getBaseOptions({
1170
1170
  viteUserConfig
1171
1171
  }) {
1172
+ const rollupOptions = {
1173
+ preserveEntrySignatures: "exports-only",
1174
+ // Silence Rollup "use client" warnings
1175
+ // Adapted from https://github.com/vitejs/vite-plugin-react/pull/144
1176
+ onwarn(warning, defaultHandler) {
1177
+ if (warning.code === "MODULE_LEVEL_DIRECTIVE" && warning.message.includes("use client")) {
1178
+ return;
1179
+ }
1180
+ let userHandler = viteUserConfig.build?.rollupOptions?.onwarn;
1181
+ if (userHandler) {
1182
+ userHandler(warning, defaultHandler);
1183
+ } else {
1184
+ defaultHandler(warning);
1185
+ }
1186
+ }
1187
+ };
1172
1188
  return {
1173
1189
  build: {
1174
1190
  cssMinify: viteUserConfig.build?.cssMinify ?? true,
1175
1191
  manifest: true,
1176
1192
  // The manifest is enabled for all builds to detect SSR-only assets
1177
- rollupOptions: {
1178
- preserveEntrySignatures: "exports-only",
1179
- // Silence Rollup "use client" warnings
1180
- // Adapted from https://github.com/vitejs/vite-plugin-react/pull/144
1181
- onwarn(warning, defaultHandler) {
1182
- if (warning.code === "MODULE_LEVEL_DIRECTIVE" && warning.message.includes("use client")) {
1183
- return;
1184
- }
1185
- let userHandler = viteUserConfig.build?.rollupOptions?.onwarn;
1186
- if (userHandler) {
1187
- userHandler(warning, defaultHandler);
1188
- } else {
1189
- defaultHandler(warning);
1190
- }
1191
- }
1192
- }
1193
+ rollupOptions
1193
1194
  }
1194
1195
  };
1195
1196
  }
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v7.5.0
2
+ * @react-router/dev v7.5.1-pre.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.5.0
2
+ * @react-router/dev v7.5.1-pre.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v7.5.0
2
+ * @react-router/dev v7.5.1-pre.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/vite.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v7.5.0
2
+ * @react-router/dev v7.5.1-pre.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -3854,7 +3854,7 @@ async function prerenderData(handler, prerenderPath, onlyRoutes, clientBuildDire
3854
3854
  let request = new Request(url2, requestInit);
3855
3855
  let response = await handler(request);
3856
3856
  let data = await response.text();
3857
- if (response.status !== 200) {
3857
+ if (response.status !== 200 && response.status !== 202) {
3858
3858
  throw new Error(
3859
3859
  `Prerender (data): Received a ${response.status} status code from \`entry.server.tsx\` while prerendering the \`${prerenderPath}\` path.
3860
3860
  ${normalizedPath}`
@@ -3869,6 +3869,7 @@ ${normalizedPath}`
3869
3869
  );
3870
3870
  return data;
3871
3871
  }
3872
+ var redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
3872
3873
  async function prerenderRoute(handler, prerenderPath, clientBuildDirectory, reactRouterConfig, viteConfig, requestInit) {
3873
3874
  let normalizedPath = `${reactRouterConfig.basename}${prerenderPath}/`.replace(
3874
3875
  /\/\/+/g,
@@ -3877,7 +3878,22 @@ async function prerenderRoute(handler, prerenderPath, clientBuildDirectory, reac
3877
3878
  let request = new Request(`http://localhost${normalizedPath}`, requestInit);
3878
3879
  let response = await handler(request);
3879
3880
  let html = await response.text();
3880
- if (response.status !== 200) {
3881
+ if (redirectStatusCodes.has(response.status)) {
3882
+ let location = response.headers.get("Location");
3883
+ let delay = response.status === 302 ? 2 : 0;
3884
+ html = `<!doctype html>
3885
+ <head>
3886
+ <title>Redirecting to: ${location}</title>
3887
+ <meta http-equiv="refresh" content="${delay};url=${location}">
3888
+ <meta name="robots" content="noindex">
3889
+ </head>
3890
+ <body>
3891
+ <a href="${location}">
3892
+ Redirecting from <code>${normalizedPath}</code> to <code>${location}</code>
3893
+ </a>
3894
+ </body>
3895
+ </html>`;
3896
+ } else if (response.status !== 200) {
3881
3897
  throw new Error(
3882
3898
  `Prerender (html): Received a ${response.status} status code from \`entry.server.tsx\` while prerendering the \`${normalizedPath}\` path.
3883
3899
  ${html}`
@@ -4275,27 +4291,28 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
4275
4291
  function getBaseOptions({
4276
4292
  viteUserConfig
4277
4293
  }) {
4294
+ const rollupOptions = {
4295
+ preserveEntrySignatures: "exports-only",
4296
+ // Silence Rollup "use client" warnings
4297
+ // Adapted from https://github.com/vitejs/vite-plugin-react/pull/144
4298
+ onwarn(warning, defaultHandler) {
4299
+ if (warning.code === "MODULE_LEVEL_DIRECTIVE" && warning.message.includes("use client")) {
4300
+ return;
4301
+ }
4302
+ let userHandler = viteUserConfig.build?.rollupOptions?.onwarn;
4303
+ if (userHandler) {
4304
+ userHandler(warning, defaultHandler);
4305
+ } else {
4306
+ defaultHandler(warning);
4307
+ }
4308
+ }
4309
+ };
4278
4310
  return {
4279
4311
  build: {
4280
4312
  cssMinify: viteUserConfig.build?.cssMinify ?? true,
4281
4313
  manifest: true,
4282
4314
  // The manifest is enabled for all builds to detect SSR-only assets
4283
- rollupOptions: {
4284
- preserveEntrySignatures: "exports-only",
4285
- // Silence Rollup "use client" warnings
4286
- // Adapted from https://github.com/vitejs/vite-plugin-react/pull/144
4287
- onwarn(warning, defaultHandler) {
4288
- if (warning.code === "MODULE_LEVEL_DIRECTIVE" && warning.message.includes("use client")) {
4289
- return;
4290
- }
4291
- let userHandler = viteUserConfig.build?.rollupOptions?.onwarn;
4292
- if (userHandler) {
4293
- userHandler(warning, defaultHandler);
4294
- } else {
4295
- defaultHandler(warning);
4296
- }
4297
- }
4298
- }
4315
+ rollupOptions
4299
4316
  }
4300
4317
  };
4301
4318
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-router/dev",
3
- "version": "7.5.0",
3
+ "version": "7.5.1-pre.0",
4
4
  "description": "Dev tools and CLI for React Router",
5
5
  "homepage": "https://reactrouter.com",
6
6
  "bugs": {
@@ -86,7 +86,7 @@
86
86
  "set-cookie-parser": "^2.6.0",
87
87
  "valibot": "^0.41.0",
88
88
  "vite-node": "3.0.0-beta.2",
89
- "@react-router/node": "7.5.0"
89
+ "@react-router/node": "7.5.1-pre.0"
90
90
  },
91
91
  "devDependencies": {
92
92
  "@types/babel__core": "^7.20.5",
@@ -110,15 +110,15 @@
110
110
  "vite": "^6.1.0",
111
111
  "wireit": "0.14.9",
112
112
  "wrangler": "^4.2.0",
113
- "@react-router/serve": "7.5.0",
114
- "react-router": "^7.5.0"
113
+ "@react-router/serve": "7.5.1-pre.0",
114
+ "react-router": "^7.5.1-pre.0"
115
115
  },
116
116
  "peerDependencies": {
117
117
  "typescript": "^5.1.0",
118
118
  "vite": "^5.1.0 || ^6.0.0",
119
119
  "wrangler": "^3.28.2 || ^4.0.0",
120
- "@react-router/serve": "^7.5.0",
121
- "react-router": "^7.5.0"
120
+ "@react-router/serve": "^7.5.1-pre.0",
121
+ "react-router": "^7.5.1-pre.0"
122
122
  },
123
123
  "peerDependenciesMeta": {
124
124
  "@react-router/serve": {