Skip to content

Commit

Permalink
Merge pull request #11768 from remix-run/v7
Browse files Browse the repository at this point in the history
Merge v7 to dev
  • Loading branch information
brophdawg11 committed Jul 16, 2024
2 parents 90541d9 + 7281167 commit eed3ebd
Show file tree
Hide file tree
Showing 724 changed files with 72,811 additions and 32,935 deletions.
5 changes: 5 additions & 0 deletions .changeset/calm-frogs-tie.md
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.
12 changes: 12 additions & 0 deletions .changeset/chilled-masks-search.md
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`,
8 changes: 8 additions & 0 deletions .changeset/collapse-packages.md
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`
11 changes: 8 additions & 3 deletions .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,19 @@
[
"react-router",
"react-router-dom",
"react-router-dom-v5-compat",
"react-router-native"
"@react-router/dev",
"@react-router/express",
"@react-router/node",
"@react-router/serve"
]
],
"linked": [],
"access": "public",
"baseBranch": "dev",
"updateInternalDependencies": "patch",
"bumpVersionsWithWorkspaceProtocolOnly": true,
"ignore": []
"ignore": ["integration", "integration-*", "@playground/*"],
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
"onlyUpdatePeerDependentsWhenOutOfRange": true
}
}
5 changes: 5 additions & 0 deletions .changeset/create-remix-router.md
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`
11 changes: 11 additions & 0 deletions .changeset/curvy-teachers-explain.md
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.
5 changes: 5 additions & 0 deletions .changeset/drop-node-16.md
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
6 changes: 6 additions & 0 deletions .changeset/early-beds-obey.md
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
10 changes: 10 additions & 0 deletions .changeset/expose-promises.md
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`
5 changes: 5 additions & 0 deletions .changeset/fair-beans-design.md
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.
6 changes: 6 additions & 0 deletions .changeset/fair-cheetahs-hope.md
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
5 changes: 5 additions & 0 deletions .changeset/fluffy-ducks-try.md
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
11 changes: 11 additions & 0 deletions .changeset/kind-timers-refuse.md
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
6 changes: 6 additions & 0 deletions .changeset/late-buckets-turn.md
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
5 changes: 5 additions & 0 deletions .changeset/link-prefetching.md
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
6 changes: 6 additions & 0 deletions .changeset/moody-kids-count.md
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
10 changes: 10 additions & 0 deletions .changeset/nice-pillows-hunt.md
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
10 changes: 10 additions & 0 deletions .changeset/nine-ravens-work.md
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
5 changes: 5 additions & 0 deletions .changeset/odd-beds-behave.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"react-router": major
---

renamed RemixContext to FrameworkContext
28 changes: 28 additions & 0 deletions .changeset/prerendering.md
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"];
}
```
6 changes: 6 additions & 0 deletions .changeset/red-olives-compare.md
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
5 changes: 5 additions & 0 deletions .changeset/remix-scroll-restoration.md
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
5 changes: 5 additions & 0 deletions .changeset/remove-build-end-public-path.md
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.
28 changes: 28 additions & 0 deletions .changeset/remove-manifest-option.md
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"
);
},
}),
],
};
```
5 changes: 5 additions & 0 deletions .changeset/router-provider-hydration.md
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))
13 changes: 13 additions & 0 deletions .changeset/stupid-days-heal.md
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`
5 changes: 5 additions & 0 deletions .changeset/tall-mangos-add.md
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
11 changes: 11 additions & 0 deletions .changeset/tasty-penguins-live.md
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
5 changes: 5 additions & 0 deletions .changeset/thin-nails-turn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"react-router": minor
---

Remove duplicate `RouterProvider` impliementations
5 changes: 5 additions & 0 deletions .changeset/tidy-clouds-lay.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"react-router": major
---

Remove `v7_relativeSplatPath` future flag
10 changes: 10 additions & 0 deletions .changeset/tough-pens-brush.md
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
5 changes: 5 additions & 0 deletions .changeset/twenty-carrots-yawn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"react-router": major
---

rename createRemixStub to createRoutesStub
5 changes: 5 additions & 0 deletions .changeset/two-countries-yell.md
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`
7 changes: 7 additions & 0 deletions .changeset/vite-manifest-location.md
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.
6 changes: 6 additions & 0 deletions .changeset/weak-otters-dance.md
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
2 changes: 2 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ node_modules/
pnpm-lock.yaml
/docs/api
examples/**/dist/
/playground/
/playground-local/
packages/**/dist/
packages/react-router-dom/server.d.ts
packages/react-router-dom/server.js
Expand Down
12 changes: 11 additions & 1 deletion .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,16 @@
"files": ["**/__tests__/**"],
"plugins": ["jest"],
"extends": ["plugin:jest/recommended"]
},
{
"files": ["integration/**/*.*"],
"rules": {
"react-hooks/rules-of-hooks": "off"
},
"env": {
"jest/globals": false
}
}
]
],
"reportUnusedDisableDirectives": true
}
2 changes: 1 addition & 1 deletion .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ jobs:
- name: ⎔ Setup node
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: ".nvmrc"
cache: pnpm

- name: 📥 Install deps
run: pnpm install --frozen-lockfile
Expand Down
Loading

0 comments on commit eed3ebd

Please sign in to comment.