Skip to content

Commit

Permalink
fix(deps): update react-router monorepo to v7 (major) (#184)
Browse files Browse the repository at this point in the history
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [react-router](https://redirect.github.com/remix-run/react-router) ([source](https://redirect.github.com/remix-run/react-router/tree/HEAD/packages/react-router)) | [`6.28.0` -> `7.0.1`](https://renovatebot.com/diffs/npm/react-router/6.28.0/7.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-router/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-router/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-router/6.28.0/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-router/6.28.0/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [react-router-dom](https://redirect.github.com/remix-run/react-router) ([source](https://redirect.github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom)) | [`6.28.0` -> `7.0.1`](https://renovatebot.com/diffs/npm/react-router-dom/6.28.0/7.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-router-dom/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-router-dom/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-router-dom/6.28.0/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-router-dom/6.28.0/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>remix-run/react-router (react-router)</summary>

### [`v7.0.1`](https://redirect.github.com/remix-run/react-router/blob/HEAD/packages/react-router/CHANGELOG.md#701)

[Compare Source](https://redirect.github.com/remix-run/react-router/compare/react-router@7.0.0...react-router@7.0.1)

### [`v7.0.0`](https://redirect.github.com/remix-run/react-router/blob/HEAD/packages/react-router/CHANGELOG.md#700)

[Compare Source](https://redirect.github.com/remix-run/react-router/compare/react-router@6.28.0...react-router@7.0.0)

##### Major Changes

-   Remove the original `defer` implementation in favor of using raw promises via single fetch and `turbo-stream`. This removes these exports from React Router: ([#&#8203;11744](https://redirect.github.com/remix-run/react-router/pull/11744))

    -   `defer`
    -   `AbortedDeferredError`
    -   `type TypedDeferredData`
    -   `UNSAFE_DeferredData`
    -   `UNSAFE_DEFERRED_SYMBOL`,

-   -   Collapse `@remix-run/router` into `react-router` ([#&#8203;11505](https://redirect.github.com/remix-run/react-router/pull/11505))
    -   Collapse `react-router-dom` into `react-router`
    -   Collapse `@remix-run/server-runtime` into `react-router`
    -   Collapse `@remix-run/testing` into `react-router`

-   Remove single_fetch future flag. ([#&#8203;11522](https://redirect.github.com/remix-run/react-router/pull/11522))

-   Drop support for Node 16, React Router SSR now requires Node 18 or higher ([#&#8203;11391](https://redirect.github.com/remix-run/react-router/pull/11391))

-   Remove `future.v7_startTransition` flag ([#&#8203;11696](https://redirect.github.com/remix-run/react-router/pull/11696))

-   -   Expose the underlying router promises from the following APIs for compsition in React 19 APIs: ([#&#8203;11521](https://redirect.github.com/remix-run/react-router/pull/11521))
        -   `useNavigate()`
        -   `useSubmit`
        -   `useFetcher().load`
        -   `useFetcher().submit`
        -   `useRevalidator.revalidate`

-   Remove `future.v7_normalizeFormMethod` future flag ([#&#8203;11697](https://redirect.github.com/remix-run/react-router/pull/11697))

-   For Remix consumers migrating to React Router, the `crypto` global from the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) is now required when using cookie and session APIs. This means that the following APIs are provided from `react-router` rather than platform-specific packages: ([#&#8203;11837](https://redirect.github.com/remix-run/react-router/pull/11837))

    -   `createCookie`
    -   `createCookieSessionStorage`
    -   `createMemorySessionStorage`
    -   `createSessionStorage`

    For consumers running older versions of Node, the `installGlobals` function from `@remix-run/node` has been updated to define `globalThis.crypto`, using [Node's `require('node:crypto').webcrypto` implementation.](https://nodejs.org/api/webcrypto.html)

    Since platform-specific packages no longer need to implement this API, the following low-level APIs have been removed:

    -   `createCookieFactory`
    -   `createSessionStorageFactory`
    -   `createCookieSessionStorageFactory`
    -   `createMemorySessionStorageFactory`

-   Imports/Exports cleanup ([#&#8203;11840](https://redirect.github.com/remix-run/react-router/pull/11840))

    -   Removed the following exports that were previously public API from `@remix-run/router`
        -   types
            -   `AgnosticDataIndexRouteObject`
            -   `AgnosticDataNonIndexRouteObject`
            -   `AgnosticDataRouteMatch`
            -   `AgnosticDataRouteObject`
            -   `AgnosticIndexRouteObject`
            -   `AgnosticNonIndexRouteObject`
            -   `AgnosticRouteMatch`
            -   `AgnosticRouteObject`
            -   `TrackedPromise`
            -   `unstable_AgnosticPatchRoutesOnMissFunction`
            -   `Action` -> exported as `NavigationType` via `react-router`
            -   `Router` exported as `DataRouter` to differentiate from RR's `<Router>`
        -   API
            -   `getToPathname` (`@private`)
            -   `joinPaths` (`@private`)
            -   `normalizePathname` (`@private`)
            -   `resolveTo` (`@private`)
            -   `stripBasename` (`@private`)
            -   `createBrowserHistory` -> in favor of `createBrowserRouter`
            -   `createHashHistory` -> in favor of `createHashRouter`
            -   `createMemoryHistory` -> in favor of `createMemoryRouter`
            -   `createRouter`
            -   `createStaticHandler` -> in favor of wrapper `createStaticHandler` in RR Dom
            -   `getStaticContextFromError`
    -   Removed the following exports that were previously public API from `react-router`
        -   `Hash`
        -   `Pathname`
        -   `Search`

-   update minimum node version to 18 ([#&#8203;11690](https://redirect.github.com/remix-run/react-router/pull/11690))

-   Remove `future.v7_prependBasename` from the ionternalized `@remix-run/router` package ([#&#8203;11726](https://redirect.github.com/remix-run/react-router/pull/11726))

-   Migrate Remix type generics to React Router ([#&#8203;12180](https://redirect.github.com/remix-run/react-router/pull/12180))

    -   These generics are provided for Remix v2 migration purposes
    -   These generics and the APIs they exist on should be considered informally deprecated in favor of the new `Route.*` types
    -   Anyone migrating from React Router v6 should probably not leverage these new generics and should migrate straight to the `Route.*` types
    -   For React Router v6 users, these generics are new and should not impact your app, with one exception
        -   `useFetcher` previously had an optional generic (used primarily by Remix v2) that expected the data type
        -   This has been updated in v7 to expect the type of the function that generates the data (i.e., `typeof loader`/`typeof action`)
        -   Therefore, you should update your usages:
            -   ❌ `useFetcher<LoaderData>()`
            -   ✅ `useFetcher<typeof loader>()`

-   Remove `future.v7_throwAbortReason` from internalized `@remix-run/router` package ([#&#8203;11728](https://redirect.github.com/remix-run/react-router/pull/11728))

-   Add `exports` field to all packages ([#&#8203;11675](https://redirect.github.com/remix-run/react-router/pull/11675))

-   node package no longer re-exports from react-router ([#&#8203;11702](https://redirect.github.com/remix-run/react-router/pull/11702))

-   renamed RemixContext to FrameworkContext ([#&#8203;11705](https://redirect.github.com/remix-run/react-router/pull/11705))

-   updates the minimum React version to 18 ([#&#8203;11689](https://redirect.github.com/remix-run/react-router/pull/11689))

-   PrefetchPageDescriptor replaced by PageLinkDescriptor ([#&#8203;11960](https://redirect.github.com/remix-run/react-router/pull/11960))

-   -   Consolidate types previously duplicated across `@remix-run/router`, `@remix-run/server-runtime`, and `@remix-run/react` now that they all live in `react-router` ([#&#8203;12177](https://redirect.github.com/remix-run/react-router/pull/12177))
        -   Examples: `LoaderFunction`, `LoaderFunctionArgs`, `ActionFunction`, `ActionFunctionArgs`, `DataFunctionArgs`, `RouteManifest`, `LinksFunction`, `Route`, `EntryRoute`
        -   The `RouteManifest` type used by the "remix" code is now slightly stricter because it is using the former `@remix-run/router` `RouteManifest`
            -   `Record<string, Route> -> Record<string, Route | undefined>`
        -   Removed `AppData` type in favor of inlining `unknown` in the few locations it was used
        -   Removed `ServerRuntimeMeta*` types in favor of the `Meta*` types they were duplicated from

-   -   Remove the `future.v7_partialHydration` flag ([#&#8203;11725](https://redirect.github.com/remix-run/react-router/pull/11725))
        -   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

-   Remove `v7_relativeSplatPath` future flag ([#&#8203;11695](https://redirect.github.com/remix-run/react-router/pull/11695))

-   Drop support for Node 18, update minimum Node vestion to 20 ([#&#8203;12171](https://redirect.github.com/remix-run/react-router/pull/12171))

    -   Remove `installGlobals()` as this should no longer be necessary

-   Remove remaining future flags ([#&#8203;11820](https://redirect.github.com/remix-run/react-router/pull/11820))

    -   React Router `v7_skipActionErrorRevalidation`
    -   Remix `v3_fetcherPersist`, `v3_relativeSplatPath`, `v3_throwAbortReason`

-   rename createRemixStub to createRoutesStub ([#&#8203;11692](https://redirect.github.com/remix-run/react-router/pull/11692))

-   Remove `@remix-run/router` deprecated `detectErrorBoundary` option in favor of `mapRouteProperties` ([#&#8203;11751](https://redirect.github.com/remix-run/react-router/pull/11751))

-   Add `react-router/dom` subpath export to properly enable `react-dom` as an optional `peerDependency` ([#&#8203;11851](https://redirect.github.com/remix-run/react-router/pull/11851))

    -   This ensures that we don't blindly `import ReactDOM from "react-dom"` in `<RouterProvider>` in order to access `ReactDOM.flushSync()`, since that would break `createMemoryRouter` use cases in non-DOM environments
    -   DOM environments should import from `react-router/dom` to get the proper component that makes `ReactDOM.flushSync()` available:
        -   If you are using the Vite plugin, use this in your `entry.client.tsx`:
            -   `import { HydratedRouter } from 'react-router/dom'`
        -   If you are not using the Vite plugin and are manually calling `createBrowserRouter`/`createHashRouter`:
            -   `import { RouterProvider } from "react-router/dom"`

-   Remove `future.v7_fetcherPersist` flag ([#&#8203;11731](https://redirect.github.com/remix-run/react-router/pull/11731))

-   Update `cookie` dependency to `^1.0.1` - please see the [release notes](https://redirect.github.com/jshttp/cookie/releases) for any breaking changes ([#&#8203;12172](https://redirect.github.com/remix-run/react-router/pull/12172))

##### Minor Changes

-   -   Add support for `prerender` config in the React Router vite plugin, to support existing SSG use-cases ([#&#8203;11539](https://redirect.github.com/remix-run/react-router/pull/11539))
        -   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
    // react-router.config.ts
    import type { Config } from "@&#8203;react-router/dev/config";

    export default {
      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}`)];
      },
    } satisfies Config;

    async function fakeGetSlugsFromCms() {
      await new Promise((r) => setTimeout(r, 1000));
      return ["shirt", "hat"];
    }
    ```

-   Params, loader data, and action data as props for route component exports ([#&#8203;11961](https://redirect.github.com/remix-run/react-router/pull/11961))

    ```tsx
    export default function Component({ params, loaderData, actionData }) {}

    export function HydrateFallback({ params }) {}
    export function ErrorBoundary({ params, loaderData, actionData }) {}
    ```

-   Remove duplicate `RouterProvider` impliementations ([#&#8203;11679](https://redirect.github.com/remix-run/react-router/pull/11679))

-   ### Typesafety improvements ([#&#8203;12019](https://redirect.github.com/remix-run/react-router/pull/12019))

    React Router now generates types for each of your route modules.
    You can access those types by importing them from `./+types.<route filename without extension>`.
    For example:

    ```ts
    // app/routes/product.tsx
    import type * as Route from "./+types.product";

    export function loader({ params }: Route.LoaderArgs) {}

    export default function Component({ loaderData }: Route.ComponentProps) {}
    ```

    This initial implementation targets type inference for:

    -   `Params` : Path parameters from your routing config in `routes.ts` including file-based routing
    -   `LoaderData` : Loader data from `loader` and/or `clientLoader` within your route module
    -   `ActionData` : Action data from `action` and/or `clientAction` within your route module

    In the future, we plan to add types for the rest of the route module exports: `meta`, `links`, `headers`, `shouldRevalidate`, etc.
    We also plan to generate types for typesafe `Link`s:

    ```tsx
    <Link to="/products/:id" params={{ id: 1 }} />
    //        ^^^^^^^^^^^^^          ^^^^^^^^^
    // typesafe `to` and `params` based on the available routes in your app
    ```

    Check out our docs for more:

    -   [*Explanations > Type Safety*](https://reactrouter.com/dev/guides/explanation/type-safety)
    -   [*How-To > Setting up type safety*](https://reactrouter.com/dev/guides/how-to/setting-up-type-safety)

-   Stabilize `unstable_dataStrategy` ([#&#8203;11969](https://redirect.github.com/remix-run/react-router/pull/11969))

-   Stabilize `unstable_patchRoutesOnNavigation` ([#&#8203;11970](https://redirect.github.com/remix-run/react-router/pull/11970))

##### Patch Changes

-   No changes ([`506329c4e`](https://redirect.github.com/remix-run/react-router/commit/506329c4e2e7aba9837cbfa44df6103b49423745))

-   chore: re-enable development warnings through a `development` exports condition. ([#&#8203;12269](https://redirect.github.com/remix-run/react-router/pull/12269))

-   Remove unstable upload handler. ([#&#8203;12015](https://redirect.github.com/remix-run/react-router/pull/12015))

-   Remove unneeded dependency on [@&#8203;web3-storage/multipart-parser](https://redirect.github.com/web3-storage/multipart-parser) ([#&#8203;12274](https://redirect.github.com/remix-run/react-router/pull/12274))

-   Fix redirects returned from loaders/actions using `data()` ([#&#8203;12021](https://redirect.github.com/remix-run/react-router/pull/12021))

-   fix(react-router): (v7) fix static prerender of non-ascii characters ([#&#8203;12161](https://redirect.github.com/remix-run/react-router/pull/12161))

-   Replace `substr` with `substring` ([#&#8203;12080](https://redirect.github.com/remix-run/react-router/pull/12080))

-   Remove the deprecated `json` utility ([#&#8203;12146](https://redirect.github.com/remix-run/react-router/pull/12146))

    -   You can use [`Response.json`](https://developer.mozilla.org/en-US/docs/Web/API/Response/json_static) if you still need to construct JSON responses in your app

-   Remove unneeded dependency on source-map ([#&#8203;12275](https://redirect.github.com/remix-run/react-router/pull/12275))

</details>

<details>
<summary>remix-run/react-router (react-router-dom)</summary>

### [`v7.0.1`](https://redirect.github.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#701)

[Compare Source](https://redirect.github.com/remix-run/react-router/compare/react-router-dom@7.0.0...react-router-dom@7.0.1)

##### Patch Changes

-   Updated dependencies:
    -   `react-router@7.0.1`

### [`v7.0.0`](https://redirect.github.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#700)

[Compare Source](https://redirect.github.com/remix-run/react-router/compare/react-router-dom@6.28.0...react-router-dom@7.0.0)

##### Major Changes

-   Remove the original `defer` implementation in favor of using raw promises via single fetch and `turbo-stream`. This removes these exports from React Router: ([#&#8203;11744](https://redirect.github.com/remix-run/react-router/pull/11744))

    -   `defer`
    -   `AbortedDeferredError`
    -   `type TypedDeferredData`
    -   `UNSAFE_DeferredData`
    -   `UNSAFE_DEFERRED_SYMBOL`,

-   Use `createRemixRouter`/`RouterProvider` in `entry.client` instead of `RemixBrowser` ([#&#8203;11469](https://redirect.github.com/remix-run/react-router/pull/11469))

-   Remove single_fetch future flag. ([#&#8203;11522](https://redirect.github.com/remix-run/react-router/pull/11522))

-   Remove `future.v7_startTransition` flag ([#&#8203;11696](https://redirect.github.com/remix-run/react-router/pull/11696))

-   Remove `future.v7_normalizeFormMethod` future flag ([#&#8203;11697](https://redirect.github.com/remix-run/react-router/pull/11697))

-   Allow returning `undefined` from actions and loaders ([#&#8203;11680](https://redirect.github.com/remix-run/react-router/pull/11680))

-   update minimum node version to 18 ([#&#8203;11690](https://redirect.github.com/remix-run/react-router/pull/11690))

-   Remove `future.v7_prependBasename` from the ionternalized `@remix-run/router` package ([#&#8203;11726](https://redirect.github.com/remix-run/react-router/pull/11726))

-   Remove `future.v7_throwAbortReason` from internalized `@remix-run/router` package ([#&#8203;11728](https://redirect.github.com/remix-run/react-router/pull/11728))

-   Add `exports` field to all packages ([#&#8203;11675](https://redirect.github.com/remix-run/react-router/pull/11675))

-   node package no longer re-exports from react-router ([#&#8203;11702](https://redirect.github.com/remix-run/react-router/pull/11702))

-   updates the minimum React version to 18 ([#&#8203;11689](https://redirect.github.com/remix-run/react-router/pull/11689))

-   -   Remove the `future.v7_partialHydration` flag ([#&#8203;11725](https://redirect.github.com/remix-run/react-router/pull/11725))
        -   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

-   Remove `future.v7_fetcherPersist` flag ([#&#8203;11731](https://redirect.github.com/remix-run/react-router/pull/11731))

##### Minor Changes

-   Add prefetching support to `Link`/`NavLink` when using Remix SSR ([#&#8203;11402](https://redirect.github.com/remix-run/react-router/pull/11402))
-   Enhance `ScrollRestoration` so it can restore properly on an SSR'd document load ([#&#8203;11401](https://redirect.github.com/remix-run/react-router/pull/11401))
-   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. ([#&#8203;11396](https://redirect.github.com/remix-run/react-router/pull/11396)) ([#&#8203;11400](https://redirect.github.com/remix-run/react-router/pull/11400))

##### Patch Changes

-   Memoize some `RouterProvider` internals to reduce uneccesary re-renders ([#&#8203;11817](https://redirect.github.com/remix-run/react-router/pull/11817))
-   Updated dependencies:
    -   `react-router@7.0.0`

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/SvenKirschbaum/aws-utils).
  • Loading branch information
renovate[bot] authored Nov 29, 2024
1 parent 9038e3c commit 39cb398
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 30 deletions.
76 changes: 51 additions & 25 deletions frontend/character-list/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions frontend/character-list/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-error-boundary": "4.1.2",
"react-router": "6.28.0",
"react-router-dom": "6.28.0",
"react-router": "7.0.1",
"react-router-dom": "7.0.1",
"@mui/material": "^6.0.0",
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.5",
Expand Down
4 changes: 1 addition & 3 deletions frontend/character-list/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import {DateTime} from "luxon";
const router = createBrowserRouter([
{
Component: LoadingWrapper,
hydrateFallbackElement: <LoadingIndicator />,
children: [
{
path: '/:region?',
Expand Down Expand Up @@ -86,9 +87,6 @@ function App() {
}}>
<RouterProvider
router={router}
fallbackElement={
<LoadingIndicator />
}
/>
</Container>
</ThemeProvider>
Expand Down

0 comments on commit 39cb398

Please sign in to comment.