-
-
Notifications
You must be signed in to change notification settings - Fork 10.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #11768 from remix-run/v7
Merge v7 to dev
- Loading branch information
Showing
724 changed files
with
72,811 additions
and
32,935 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"@react-router/cloudflare": major | ||
--- | ||
|
||
For Remix consumers migrating to React Router, all exports from `@remix-run/cloudflare-pages` are now provided for React Router consumers in the `@react-router/cloudflare` package. There is no longer a separate package for Cloudflare Pages. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
--- | ||
"react-router-dom": major | ||
"react-router": major | ||
--- | ||
|
||
Remove the original `defer` implementation in favor of using raw promises via single fetch and `turbo-stream`. This removes these exports from React Router: | ||
|
||
- `defer` | ||
- `AbortedDeferredError` | ||
- `type TypedDeferredData` | ||
- `UNSAFE_DeferredData` | ||
- `UNSAFE_DEFERRED_SYMBOL`, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
--- | ||
"react-router": major | ||
--- | ||
|
||
- Collapse `@remix-run/router` into `react-router` | ||
- Collapse `react-router-dom` into `react-router` | ||
- Collapse `@remix-run/server-runtime` into `react-router` | ||
- Collapse `@remix-run/testing` into `react-router` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router-dom": major | ||
--- | ||
|
||
Use `createRemixRouter`/`RouterProvider` in `entry.client` instead of `RemixBrowser` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- | ||
"@react-router/server-runtime": major | ||
"react-router-dom": major | ||
"@react-router/express": major | ||
"react-router": major | ||
"@react-router/serve": major | ||
"@react-router/node": major | ||
"@react-router/dev": major | ||
--- | ||
|
||
Remove single_fetch future flag. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router": major | ||
--- | ||
|
||
Drop support for Node 16, React Router SSR now requires Node 18 or higher |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--- | ||
"react-router-dom": major | ||
"react-router": major | ||
--- | ||
|
||
Remove `future.v7_startTransition` flag |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
"react-router": major | ||
--- | ||
|
||
- Expose the underlying router promises from the following APIs for compsition in React 19 APIs: | ||
- `useNavigate()` | ||
- `useSubmit` | ||
- `useFetcher().load` | ||
- `useFetcher().submit` | ||
- `useRevalidator.revalidate` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"@react-router/cloudflare": minor | ||
--- | ||
|
||
The `@remix-run/cloudflare-workers` package has been deprecated. Remix consumers migrating to React Router should use the `@react-router/cloudflare` package directly. For guidance on how to use `@react-router/cloudflare` within a Cloudflare Workers context, refer to the Cloudflare Workers template. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--- | ||
"react-router-dom": major | ||
"react-router": major | ||
--- | ||
|
||
Remove `future.v7_normalizeFormMethod` future flag |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router-dom": major | ||
--- | ||
|
||
Allow returning `undefined` from actions and loaders |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- | ||
"@react-router/server-runtime": major | ||
"react-router-dom": major | ||
"@react-router/express": major | ||
"react-router": major | ||
"@react-router/serve": major | ||
"@react-router/node": major | ||
"@react-router/dev": major | ||
--- | ||
|
||
update minimum node version to 18 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--- | ||
"react-router-dom": major | ||
"react-router": major | ||
--- | ||
|
||
Remove `future.v7_prependBasename` from the ionternalized `@remix-run/router` package |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router-dom": minor | ||
--- | ||
|
||
Add prefetching support to `Link`/`NavLink` when using Remix SSR |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--- | ||
"react-router-dom": major | ||
"react-router": major | ||
--- | ||
|
||
Remove `future.v7_throwAbortReason` from internalized `@remix-run/router` package |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
"@react-router/express": major | ||
"@react-router/serve": major | ||
"@react-router/node": major | ||
"@react-router/dev": major | ||
"react-router-dom": major | ||
"react-router": major | ||
--- | ||
|
||
Add `exports` field to all packages |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
"react-router-dom": major | ||
"@react-router/express": major | ||
"react-router": major | ||
"@react-router/serve": major | ||
"@react-router/node": major | ||
"@react-router/dev": major | ||
--- | ||
|
||
node package no longer re-exports from react-router |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router": major | ||
--- | ||
|
||
renamed RemixContext to FrameworkContext |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
--- | ||
"react-router": minor | ||
--- | ||
|
||
- Add support for `prerender` config in the React Router vite plugin, to support existing SSG use-cases | ||
- You can use the `prerender` config to pre-render your `.html` and `.data` files at build time and then serve them statically at runtime (either from a running server or a CDN) | ||
- `prerender` can either be an array of string paths, or a function (sync or async) that returns an array of strings so that you can dynamically generate the paths by talking to your CMS, etc. | ||
|
||
```ts | ||
export default defineConfig({ | ||
plugins: [ | ||
reactRouter({ | ||
async prerender() { | ||
let slugs = await fakeGetSlugsFromCms(); | ||
// Prerender these paths into `.html` files at build time, and `.data` | ||
// files if they have loaders | ||
return ["/", "/about", ...slugs.map((slug) => `/product/${slug}`)]; | ||
}, | ||
}), | ||
tsconfigPaths(), | ||
], | ||
}); | ||
|
||
async function fakeGetSlugsFromCms() { | ||
await new Promise((r) => setTimeout(r, 1000)); | ||
return ["shirt", "hat"]; | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--- | ||
"react-router-dom": major | ||
"react-router": major | ||
--- | ||
|
||
updates the minimum React version to 18 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router-dom": minor | ||
--- | ||
|
||
Enhance `ScrollRestoration` so it can restore properly on an SSR'd document load |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"@react-router/dev": major | ||
--- | ||
|
||
For Remix consumers migrating to React Router who used the Vite plugin's `buildEnd` hook, the resolved `reactRouterConfig` object no longer contains a `publicPath` property since this belongs to Vite, not React Router. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
--- | ||
"@react-router/dev": major | ||
--- | ||
|
||
For Remix consumers migrating to React Router, the Vite plugin's `manifest` option has been removed. | ||
|
||
The `manifest` option been superseded by the more powerful `buildEnd` hook since it's passed the `buildManifest` argument. You can still write the build manifest to disk if needed, but you'll most likely find it more convenient to write any logic depending on the build manifest within the `buildEnd` hook itself. | ||
|
||
If you were using the `manifest` option, you can replace it with a `buildEnd` hook that writes the manifest to disk like this: | ||
|
||
```js | ||
import { vitePlugin as reactRouter } from "@react-router/dev"; | ||
import { writeFile } from "node:fs/promises"; | ||
|
||
export default { | ||
plugins: [ | ||
reactRouter({ | ||
async buildEnd({ buildManifest }) { | ||
await writeFile( | ||
"build/manifest.json", | ||
JSON.stringify(buildManifest, null, 2), | ||
"utf-8" | ||
); | ||
}, | ||
}), | ||
], | ||
}; | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router-dom": minor | ||
--- | ||
|
||
Add built-in Remix-style hydration support to `RouterProvider`. When running from a Remix-SSR'd HTML payload with the proper `window` variables (`__remixContext`, `__remixManifest`, `__remixRouteModules`), you don't need to pass a `router` prop and `RouterProvider` will create the `router` for you internally. ([#11396](https://github.com/remix-run/react-router/pull/11396)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
--- | ||
"@react-router/dev": major | ||
--- | ||
|
||
Update default `isbot` version to v5 and drop support for `isbot@3` | ||
|
||
- If you have `isbot@4` or `isbot@5` in your `package.json`: | ||
- You do not need to make any changes | ||
- If you have `isbot@3` in your `package.json` and you have your own `entry.server.tsx` file in your repo | ||
- You do not need to make any changes | ||
- You can upgrade to `isbot@5` independent of the React Router v7 upgrade | ||
- If you have `isbot@3` in your `package.json` and you do not have your own `entry.server.tsx` file in your repo | ||
- You are using the internal default entry provided by React Router v7 and you will need to upgrade to `isbot@5` in your `package.json` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"@react-router/dev": minor | ||
--- | ||
|
||
Remove internal entry.server.spa.tsx implementation |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- | ||
"react-router-dom": major | ||
"react-router": major | ||
--- | ||
|
||
- Remove the `future.v7_partialHydration` flag | ||
- This also removes the `<RouterProvider fallbackElement>` prop | ||
- To migrate, move the `fallbackElement` to a `hydrateFallbackElement`/`HydrateFallback` on your root route | ||
- Also worth nothing there is a related breaking changer with this future flag: | ||
- Without `future.v7_partialHydration` (when using `fallbackElement`), `state.navigation` was populated during the initial load | ||
- With `future.v7_partialHydration`, `state.navigation` remains in an `"idle"` state during the initial load |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router": minor | ||
--- | ||
|
||
Remove duplicate `RouterProvider` impliementations |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router": major | ||
--- | ||
|
||
Remove `v7_relativeSplatPath` future flag |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
"@react-router/serve": patch | ||
--- | ||
|
||
Update `express.static` configurations to support prerendering | ||
|
||
- Assets in the `build/client/assets` folder are served as before, with a 1-year immutable `Cache-Control` header | ||
- Static files outside of assets, such as pre-rendered `.html` and `.data` files are not served with a specific `Cache-Control` header | ||
- `.data` files are served with `Content-Type: text/x-turbo` | ||
- For some reason, when adding this via `express.static`, it seems to also add a `Cache-Control: public, max-age=0` to `.data` files |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router": major | ||
--- | ||
|
||
rename createRemixStub to createRoutesStub |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"react-router": major | ||
--- | ||
|
||
Remove `@remix-run/router` deprecated `detectErrorBoundary` option in favor of `mapRouteProperties` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
"@react-router/dev": major | ||
--- | ||
|
||
For Remix consumers migrating to React Router, Vite manifests (i.e. `.vite/manifest.json`) are now written within each build subdirectory, e.g. `build/client/.vite/manifest.json` and `build/server/.vite/manifest.json` instead of `build/.vite/client-manifest.json` and `build/.vite/server-manifest.json`. This means that the build output is now much closer to what you'd expect from a typical Vite project. | ||
|
||
Originally the Remix Vite plugin moved all Vite manifests to a root-level `build/.vite` directory to avoid accidentally serving them in production, particularly from the client build. This was later improved with additional logic that deleted these Vite manifest files at the end of the build process unless Vite's `build.manifest` had been enabled within the app's Vite config. This greatly reduced the risk of accidentally serving the Vite manifests in production since they're only present when explicitly asked for. As a result, we can now assume that consumers will know that they need to manage these additional files themselves, and React Router can safely generate a more standard Vite build output. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--- | ||
"react-router-dom": major | ||
"react-router": major | ||
--- | ||
|
||
Remove `future.v7_fetcherPersist` flag |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.