Skip to content

Commit

Permalink
Update dependency react-router-dom to v6.22.3 (#21)
Browse files Browse the repository at this point in the history
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

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

---

### Release Notes

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

###
[`v6.22.3`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6223)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.22.2...react-router-dom@6.22.3)

##### Patch Changes

-   Updated dependencies:
    -   `@remix-run/router@1.15.3`
    -   `react-router@6.22.3`

###
[`v6.22.2`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6222)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.22.1...react-router-dom@6.22.2)

##### Patch Changes

-   Updated dependencies:
    -   `@remix-run/router@1.15.2`
    -   `react-router@6.22.2`

###
[`v6.22.1`](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.22.0...react-router-dom@6.22.1)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.22.0...react-router-dom@6.22.1)

###
[`v6.22.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6220)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.21.3...react-router-dom@6.22.0)

##### Minor Changes

- Include a `window__reactRouterVersion` tag for CWV Report detection
([#&#8203;11222](https://togithub.com/remix-run/react-router/pull/11222))

##### Patch Changes

-   Updated dependencies:
    -   `@remix-run/router@1.15.0`
    -   `react-router@6.22.0`

###
[`v6.21.3`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6213)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.21.2...react-router-dom@6.21.3)

##### Patch Changes

- Fix `NavLink` `isPending` when a `basename` is used
([#&#8203;11195](https://togithub.com/remix-run/react-router/pull/11195))
- Remove leftover `unstable_` prefix from `Blocker`/`BlockerFunction`
types
([#&#8203;11187](https://togithub.com/remix-run/react-router/pull/11187))
-   Updated dependencies:
    -   `react-router@6.21.3`

###
[`v6.21.2`](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.21.1...react-router-dom@6.21.2)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.21.1...react-router-dom@6.21.2)

###
[`v6.21.1`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6211)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.21.0...react-router-dom@6.21.1)

##### Patch Changes

-   Updated dependencies:
    -   `react-router@6.21.1`
    -   `@remix-run/router@1.14.1`

###
[`v6.21.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6210)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.20.1...react-router-dom@6.21.0)

##### Minor Changes

- Add a new `future.v7_relativeSplatPath` flag to implement a breaking
bug fix to relative routing when inside a splat route.
([#&#8203;11087](https://togithub.com/remix-run/react-router/pull/11087))

This fix was originally added in
[#&#8203;10983](https://togithub.com/remix-run/react-router/issues/10983)
and was later reverted in
[#&#8203;11078](https://togithub.com/remix-run/react-router/pull/11078)
because it was determined that a large number of existing applications
were relying on the buggy behavior (see
[#&#8203;11052](https://togithub.com/remix-run/react-router/issues/11052))

    **The Bug**
The buggy behavior is that without this flag, the default behavior when
resolving relative paths is to *ignore* any splat (`*`) portion of the
current route path.

    **The Background**
This decision was originally made thinking that it would make the
concept of nested different sections of your apps in `<Routes>` easier
if relative routing would *replace* the current splat:

    ```jsx
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="dashboard/*" element={<Dashboard />} />
      </Routes>
    </BrowserRouter>
    ```

Any paths like `/dashboard`, `/dashboard/team`, `/dashboard/projects`
will match the `Dashboard` route. The dashboard component itself can
then render nested `<Routes>`:

    ```jsx
    function Dashboard() {
      return (
        <div>
          <h2>Dashboard</h2>
          <nav>
            <Link to="/">Dashboard Home</Link>
            <Link to="team">Team</Link>
            <Link to="projects">Projects</Link>
          </nav>

          <Routes>
            <Route path="/" element={<DashboardHome />} />
            <Route path="team" element={<DashboardTeam />} />
            <Route path="projects" element={<DashboardProjects />} />
          </Routes>
        </div>
      );
    }
    ```

Now, all links and route paths are relative to the router above them.
This makes code splitting and compartmentalizing your app really easy.
You could render the `Dashboard` as its own independent app, or embed it
into your large app without making any changes to it.

    **The Problem**

The problem is that this concept of ignoring part of a path breaks a lot
of other assumptions in React Router - namely that `"."` always means
the current location pathname for that route. When we ignore the splat
portion, we start getting invalid paths when using `"."`:

    ```jsx
// If we are on URL /dashboard/team, and we want to link to
/dashboard/team:
    function DashboardTeam() {
      // ❌ This is broken and results in <a href="/dashboard">
      return <Link to=".">A broken link to the Current URL</Link>;

// ✅ This is fixed but super unintuitive since we're already at
/dashboard/team!
      return <Link to="./team">A broken link to the Current URL</Link>;
    }
    ```

We've also introduced an issue that we can no longer move our
`DashboardTeam` component around our route hierarchy easily - since it
behaves differently if we're underneath a non-splat route, such as
`/dashboard/:widget`. Now, our `"."` links will, properly point to
ourself *inclusive of the dynamic param value* so behavior will break
from it's corresponding usage in a `/dashboard/*` route.

    Even worse, consider a nested splat route configuration:

    ```jsx
    <BrowserRouter>
      <Routes>
        <Route path="dashboard">
          <Route path="*" element={<Dashboard />} />
        </Route>
      </Routes>
    </BrowserRouter>
    ```

Now, a `<Link to=".">` and a `<Link to="..">` inside the `Dashboard`
component go to the same place! That is definitely not correct!

Another common issue arose in Data Routers (and Remix) where any
`<Form>` should post to it's own route `action` if you the user doesn't
specify a form action:

    ```jsx
    let router = createBrowserRouter({
      path: "/dashboard",
      children: [
        {
          path: "*",
          action: dashboardAction,
          Component() {
// ❌ This form is broken! It throws a 405 error when it submits because
// it tries to submit to /dashboard (without the splat value) and the
parent
            // `/dashboard` route doesn't have an action
            return <Form method="post">...</Form>;
          },
        },
      ],
    });
    ```

This is just a compounded issue from the above because the default
location for a `Form` to submit to is itself (`"."`) - and if we ignore
the splat portion, that now resolves to the parent route.

    **The Solution**
If you are leveraging this behavior, it's recommended to enable the
future flag, move your splat to it's own route, and leverage `../` for
any links to "sibling" pages:

    ```jsx
    <BrowserRouter>
      <Routes>
        <Route path="dashboard">
          <Route index path="*" element={<Dashboard />} />
        </Route>
      </Routes>
    </BrowserRouter>

    function Dashboard() {
      return (
        <div>
          <h2>Dashboard</h2>
          <nav>
            <Link to="..">Dashboard Home</Link>
            <Link to="../team">Team</Link>
            <Link to="../projects">Projects</Link>
          </nav>

          <Routes>
            <Route path="/" element={<DashboardHome />} />
            <Route path="team" element={<DashboardTeam />} />
            <Route path="projects" element={<DashboardProjects />} />
          </Router>
        </div>
      );
    }
    ```

This way, `.` means "the full current pathname for my route" in all
cases (including static, dynamic, and splat routes) and `..` always
means "my parents pathname".

##### Patch Changes

-   Updated dependencies:
    -   `@remix-run/router@1.14.0`
    -   `react-router@6.21.0`

###
[`v6.20.1`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6201)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.20.0...react-router-dom@6.20.1)

##### Patch Changes

- Revert the `useResolvedPath` fix for splat routes due to a large
number of applications that were relying on the buggy behavior (see
[remix-run/react-router#11052 (comment)).
We plan to re-introduce this fix behind a future flag in the next minor
version.
([#&#8203;11078](https://togithub.com/remix-run/react-router/pull/11078))
-   Updated dependencies:
    -   `react-router@6.20.1`
    -   `@remix-run/router@1.13.1`

###
[`v6.20.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6200)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.19.0...react-router-dom@6.20.0)

##### Minor Changes

- Export the `PathParam` type from the public API
([#&#8203;10719](https://togithub.com/remix-run/react-router/pull/10719))

##### Patch Changes

-   Updated dependencies:
    -   `react-router@6.20.0`
    -   `@remix-run/router@1.13.0`

###
[`v6.19.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6190)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.18.0...react-router-dom@6.19.0)

##### Minor Changes

- Add `unstable_flushSync` option to
`useNavigate`/`useSumbit`/`fetcher.load`/`fetcher.submit` to opt-out of
`React.startTransition` and into `ReactDOM.flushSync` for state updates
([#&#8203;11005](https://togithub.com/remix-run/react-router/pull/11005))
- Allow `unstable_usePrompt` to accept a `BlockerFunction` in addition
to a `boolean`
([#&#8203;10991](https://togithub.com/remix-run/react-router/pull/10991))

##### Patch Changes

- Fix issue where a changing fetcher `key` in a `useFetcher` that
remains mounted wasn't getting picked up
([#&#8203;11009](https://togithub.com/remix-run/react-router/pull/11009))
- Fix `useFormAction` which was incorrectly inheriting the `?index`
query param from child route `action` submissions
([#&#8203;11025](https://togithub.com/remix-run/react-router/pull/11025))
- Fix `NavLink` `active` logic when `to` location has a trailing slash
([#&#8203;10734](https://togithub.com/remix-run/react-router/pull/10734))
-   Updated dependencies:
    -   `react-router@6.19.0`
    -   `@remix-run/router@1.12.0`

###
[`v6.18.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6180)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.17.0...react-router-dom@6.18.0)

##### Minor Changes

- Add support for manual fetcher key specification via `useFetcher({
key: string })` so you can access the same fetcher instance from
different components in your application without prop-drilling
([RFC](https://togithub.com/remix-run/remix/discussions/7698))
([#&#8203;10960](https://togithub.com/remix-run/react-router/pull/10960))

- Fetcher keys are now also exposed on the fetchers returned from
`useFetchers` so that they can be looked up by `key`

- Add `navigate`/`fetcherKey` params/props to `useSumbit`/`Form` to
support kicking off a fetcher submission under the hood with an
optionally user-specified `key`
([#&#8203;10960](https://togithub.com/remix-run/react-router/pull/10960))

    -   Invoking a fetcher in this way is ephemeral and stateless
- If you need to access the state of one of these fetchers, you will
need to leverage `useFetcher({ key })` to look it up elsewhere

##### Patch Changes

- Adds a fetcher context to `RouterProvider` that holds completed
fetcher data, in preparation for the upcoming future flag that will
change the fetcher persistence/cleanup behavior
([#&#8203;10961](https://togithub.com/remix-run/react-router/pull/10961))
- Fix the `future` prop on `BrowserRouter`, `HashRouter` and
`MemoryRouter` so that it accepts a `Partial<FutureConfig>` instead of
requiring all flags to be included.
([#&#8203;10962](https://togithub.com/remix-run/react-router/pull/10962))
-   Updated dependencies:
    -   `@remix-run/router@1.11.0`
    -   `react-router@6.18.0`

###
[`v6.17.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6170)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.16.0...react-router-dom@6.17.0)

##### Minor Changes

- Add experimental support for the [View Transitions
API](https://developer.mozilla.org/en-US/docs/Web/API/ViewTransition)
via `document.startViewTransition` to enable CSS animated transitions on
SPA navigations in your application.
([#&#8203;10916](https://togithub.com/remix-run/react-router/pull/10916))

The simplest approach to enabling a View Transition in your React Router
app is via the new `<Link unstable_viewTransition>` prop. This will
cause the navigation DOM update to be wrapped in
`document.startViewTransition` which will enable transitions for the DOM
update. Without any additional CSS styles, you'll get a basic cross-fade
animation for your page.

If you need to apply more fine-grained styles for your animations, you
can leverage the `unstable_useViewTransitionState` hook which will tell
you when a transition is in progress and you can use that to apply
classes or styles:

    ```jsx
    function ImageLink(to, src, alt) {
      let isTransitioning = unstable_useViewTransitionState(to);
      return (
        <Link to={to} unstable_viewTransition>
          <img
            src={src}
            alt={alt}
            style={{
              viewTransitionName: isTransitioning ? "image-expand" : "",
            }}
          />
        </Link>
      );
    }
    ```

You can also use the `<NavLink unstable_viewTransition>` shorthand which
will manage the hook usage for you and automatically add a
`transitioning` class to the `<a>` during the transition:

    ```css
    a.transitioning img {
      view-transition-name: "image-expand";
    }
    ```

    ```jsx
    <NavLink to={to} unstable_viewTransition>
      <img src={src} alt={alt} />
    </NavLink>
    ```

For an example usage of View Transitions with React Router, check out
[our fork](https://togithub.com/brophdawg11/react-router-records) of the
[Astro Records](https://togithub.com/Charca/astro-records) demo.

For more information on using the View Transitions API, please refer to
the [Smooth and simple transitions with the View Transitions
API](https://developer.chrome.com/docs/web-platform/view-transitions/)
guide from the Google Chrome team.

Please note, that because the `ViewTransition` API is a DOM API, we now
export a specific `RouterProvider` from `react-router-dom` with this
functionality. If you are importing `RouterProvider` from
`react-router`, then it will not support view transitions.
([#&#8203;10928](https://togithub.com/remix-run/react-router/pull/10928)

##### Patch Changes

- Log a warning and fail gracefully in `ScrollRestoration` when
`sessionStorage` is unavailable
([#&#8203;10848](https://togithub.com/remix-run/react-router/pull/10848))
-   Updated dependencies:
    -   `@remix-run/router@1.10.0`
    -   `react-router@6.17.0`

###
[`v6.16.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6160)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.15.0...react-router-dom@6.16.0)

##### Minor Changes

-   Updated dependencies:
    -   `@remix-run/router@1.9.0`
    -   `react-router@6.16.0`

##### Patch Changes

- Properly encode rendered URIs in server rendering to avoid hydration
errors
([#&#8203;10769](https://togithub.com/remix-run/react-router/pull/10769))

###
[`v6.15.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6150)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.14.2...react-router-dom@6.15.0)

##### Minor Changes

- Add's a new `redirectDocument()` function which allows users to
specify that a redirect from a `loader`/`action` should trigger a
document reload (via `window.location`) instead of attempting to
navigate to the redirected location via React Router
([#&#8203;10705](https://togithub.com/remix-run/react-router/pull/10705))

##### Patch Changes

- Fixes an edge-case affecting web extensions in Firefox that use
`URLSearchParams` and the `useSearchParams` hook.
([#&#8203;10620](https://togithub.com/remix-run/react-router/pull/10620))
- Do not include hash in `useFormAction()` for unspecified actions since
it cannot be determined on the server and causes hydration issues
([#&#8203;10758](https://togithub.com/remix-run/react-router/pull/10758))
- Reorder effects in `unstable_usePrompt` to avoid throwing an exception
if the prompt is unblocked and a navigation is performed synchronously
([#&#8203;10687](https://togithub.com/remix-run/react-router/pull/10687),
[#&#8203;10718](https://togithub.com/remix-run/react-router/pull/10718))
-   Updated dependencies:
    -   `@remix-run/router@1.8.0`
    -   `react-router@6.15.0`

###
[`v6.14.2`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6142)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.14.1...react-router-dom@6.14.2)

##### Patch Changes

- Properly decode element id when emulating hash scrolling via
`<ScrollRestoration>`
([#&#8203;10682](https://togithub.com/remix-run/react-router/pull/10682))
- Add missing `<Form state>` prop to populate `history.state` on
submission navigations
([#&#8203;10630](https://togithub.com/remix-run/react-router/pull/10630))
- Support proper hydration of `Error` subclasses such as
`ReferenceError`/`TypeError`
([#&#8203;10633](https://togithub.com/remix-run/react-router/pull/10633))
-   Updated dependencies:
    -   `@remix-run/router@1.7.2`
    -   `react-router@6.14.2`

###
[`v6.14.1`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6141)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.14.0...react-router-dom@6.14.1)

##### Patch Changes

-   Updated dependencies:
    -   `react-router@6.14.1`
    -   `@remix-run/router@1.7.1`

###
[`v6.14.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6140)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.13.0...react-router-dom@6.14.0)

##### Minor Changes

- Add support for `application/json` and `text/plain` encodings for
`useSubmit`/`fetcher.submit`. To reflect these additional types,
`useNavigation`/`useFetcher` now also contain
`navigation.json`/`navigation.text` and `fetcher.json`/`fetcher.text`
which include the json/text submission if applicable
([#&#8203;10413](https://togithub.com/remix-run/react-router/pull/10413))

    ```jsx
    // The default behavior will still serialize as FormData
    function Component() {
      let navigation = useNavigation();
      let submit = useSubmit();
      submit({ key: "value" }, { method: "post" });
      // navigation.formEncType => "application/x-www-form-urlencoded"
      // navigation.formData    => FormData instance
    }

    async function action({ request }) {
// request.headers.get("Content-Type") =>
"application/x-www-form-urlencoded"
      // await request.formData()            => FormData instance
    }
    ```

    ```js
    // Opt-into JSON encoding with `encType: "application/json"`
    function Component() {
      let navigation = useNavigation();
      let submit = useSubmit();
submit({ key: "value" }, { method: "post", encType: "application/json"
});
      // navigation.formEncType => "application/json"
      // navigation.json        => { key: "value" }
    }

    async function action({ request }) {
      // request.headers.get("Content-Type") => "application/json"
      // await request.json()                => { key: "value" }
    }
    ```

    ```js
    // Opt-into text encoding with `encType: "text/plain"`
    function Component() {
      let navigation = useNavigation();
      let submit = useSubmit();
submit("Text submission", { method: "post", encType: "text/plain" });
      // navigation.formEncType => "text/plain"
      // navigation.text        => "Text submission"
    }

    async function action({ request }) {
      // request.headers.get("Content-Type") => "text/plain"
      // await request.text()                => "Text submission"
    }
    ```

##### Patch Changes

- When submitting a form from a `submitter` element, prefer the built-in
`new FormData(form, submitter)` instead of the previous manual approach
in modern browsers (those that support the new `submitter` parameter)
([#&#8203;9865](https://togithub.com/remix-run/react-router/pull/9865),
[#&#8203;10627](https://togithub.com/remix-run/react-router/pull/10627))
- For browsers that don't support it, we continue to just append the
submit button's entry to the end, and we also add rudimentary support
for `type="image"` buttons
- If developers want full spec-compliant support for legacy browsers,
they can use the `formdata-submitter-polyfill`
- Call `window.history.pushState/replaceState` before updating React
Router state (instead of after) so that `window.location` matches
`useLocation` during synchronous React 17 rendering
([#&#8203;10448](https://togithub.com/remix-run/react-router/pull/10448))
- ⚠️ However, generally apps should not be relying on `window.location`
and should always reference `useLocation` when possible, as
`window.location` will not be in sync 100% of the time (due to
`popstate` events, concurrent mode, etc.)
- Fix `tsc --skipLibCheck:false` issues on React 17
([#&#8203;10622](https://togithub.com/remix-run/react-router/pull/10622))
- Upgrade `typescript` to 5.1
([#&#8203;10581](https://togithub.com/remix-run/react-router/pull/10581))
-   Updated dependencies:
    -   `react-router@6.14.0`
    -   `@remix-run/router@1.7.0`

###
[`v6.13.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6130)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.12.1...react-router-dom@6.13.0)

##### Minor Changes

- Move
[`React.startTransition`](https://react.dev/reference/react/startTransition)
usage behind a [future
flag](https://reactrouter.com/en/main/guides/api-development-strategy)
to avoid issues with existing incompatible `Suspense` usages. We
recommend folks adopting this flag to be better compatible with React
concurrent mode, but if you run into issues you can continue without the
use of `startTransition` until v7. Issues usually boils down to creating
net-new promises during the render cycle, so if you run into issues you
should either lift your promise creation out of the render cycle or put
it behind a `useMemo`.
([#&#8203;10596](https://togithub.com/remix-run/react-router/pull/10596))

    Existing behavior will no longer include `React.startTransition`:

    ```jsx
    <BrowserRouter>
      <Routes>{/*...*/}</Routes>
    </BrowserRouter>

    <RouterProvider router={router} />
    ```

If you wish to enable `React.startTransition`, pass the future flag to
your component:

    ```jsx
    <BrowserRouter future={{ v7_startTransition: true }}>
      <Routes>{/*...*/}</Routes>
    </BrowserRouter>

<RouterProvider router={router} future={{ v7_startTransition: true }}/>
    ```

##### Patch Changes

- Work around webpack/terser `React.startTransition` minification bug in
production mode
([#&#8203;10588](https://togithub.com/remix-run/react-router/pull/10588))
-   Updated dependencies:
    -   `react-router@6.13.0`

###
[`v6.12.1`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6121)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.12.0...react-router-dom@6.12.1)

> **Warning**
> Please use version `6.13.0` or later instead of `6.12.1`. This version
suffers from a `webpack`/`terser` minification issue resulting in
invalid minified code in your resulting production bundles which can
cause issues in your application. See
[#&#8203;10579](https://togithub.com/remix-run/react-router/issues/10579)
for more details.

##### Patch Changes

- Adjust feature detection of `React.startTransition` to fix webpack +
react 17 compilation error
([#&#8203;10569](https://togithub.com/remix-run/react-router/pull/10569))
-   Updated dependencies:
    -   `react-router@6.12.1`

###
[`v6.12.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6120)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.11.2...react-router-dom@6.12.0)

##### Minor Changes

- Wrap internal router state updates with `React.startTransition` if it
exists
([#&#8203;10438](https://togithub.com/remix-run/react-router/pull/10438))

##### Patch Changes

- Re-throw `DOMException` (`DataCloneError`) when attempting to perform
a `PUSH` navigation with non-serializable state.
([#&#8203;10427](https://togithub.com/remix-run/react-router/pull/10427))
-   Updated dependencies:
    -   `@remix-run/router@1.6.3`
    -   `react-router@6.12.0`

###
[`v6.11.2`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6112)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.11.1...react-router-dom@6.11.2)

##### Patch Changes

- Export `SetURLSearchParams` type
([#&#8203;10444](https://togithub.com/remix-run/react-router/pull/10444))
-   Updated dependencies:
    -   `react-router@6.11.2`
    -   `@remix-run/router@1.6.2`

###
[`v6.11.1`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6111)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.11.0...react-router-dom@6.11.1)

##### Patch Changes

-   Updated dependencies:
    -   `react-router@6.11.1`
    -   `@remix-run/router@1.6.1`

###
[`v6.11.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6110)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.10.0...react-router-dom@6.11.0)

##### Minor Changes

- Enable `basename` support in `useFetcher`
([#&#8203;10336](https://togithub.com/remix-run/react-router/pull/10336))
- If you were previously working around this issue by manually
prepending the `basename` then you will need to remove the manually
prepended `basename` from your `fetcher` calls
(`fetcher.load('/basename/route') -> fetcher.load('/route')`)

##### Patch Changes

- Fix inadvertent re-renders when using `Component` instead of `element`
on a route definition
([#&#8203;10287](https://togithub.com/remix-run/react-router/pull/10287))
- Fail gracefully on `<Link to="//">` and other invalid URL values
([#&#8203;10367](https://togithub.com/remix-run/react-router/pull/10367))
- Switched from `useSyncExternalStore` to `useState` for internal
`@remix-run/router` router state syncing in `<RouterProvider>`. We found
some [subtle
bugs](https://codesandbox.io/s/use-sync-external-store-loop-9g7b81)
where router state updates got propagated *before* other normal
`useState` updates, which could lead to footguns in `useEffect` calls.
([#&#8203;10377](https://togithub.com/remix-run/react-router/pull/10377),
[#&#8203;10409](https://togithub.com/remix-run/react-router/pull/10409))
- Add static prop to `StaticRouterProvider`'s internal `Router`
component
([#&#8203;10401](https://togithub.com/remix-run/react-router/pull/10401))
- When using a `RouterProvider`,
`useNavigate`/`useSubmit`/`fetcher.submit` are now stable across
location changes, since we can handle relative routing via the
`@remix-run/router` instance and get rid of our dependence on
`useLocation()`. When using `BrowserRouter`, these hooks remain unstable
across location changes because they still rely on `useLocation()`.
([#&#8203;10336](https://togithub.com/remix-run/react-router/pull/10336))
-   Updated dependencies:
    -   `react-router@6.11.0`
    -   `@remix-run/router@1.6.0`

###
[`v6.10.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#6100)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.9.0...react-router-dom@6.10.0)

##### Minor Changes

- Added support for [**Future
Flags**](https://reactrouter.com/en/main/guides/api-development-strategy)
in React Router. The first flag being introduced is
`future.v7_normalizeFormMethod` which will normalize the exposed
`useNavigation()/useFetcher()` `formMethod` fields as uppercase HTTP
methods to align with the `fetch()` behavior.
([#&#8203;10207](https://togithub.com/remix-run/react-router/pull/10207))

- When `future.v7_normalizeFormMethod === false` (default v6 behavior),
        -   `useNavigation().formMethod` is lowercase
        -   `useFetcher().formMethod` is lowercase
    -   When `future.v7_normalizeFormMethod === true`:
        -   `useNavigation().formMethod` is uppercase
        -   `useFetcher().formMethod` is uppercase

##### Patch Changes

- Fix `createStaticHandler` to also check for `ErrorBoundary` on routes
in addition to `errorElement`
([#&#8203;10190](https://togithub.com/remix-run/react-router/pull/10190))
-   Updated dependencies:
    -   `@remix-run/router@1.5.0`
    -   `react-router@6.10.0`

###
[`v6.9.0`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#690)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.8.2...react-router-dom@6.9.0)

##### Minor Changes

- React Router now supports an alternative way to define your route
`element` and `errorElement` fields as React Components instead of React
Elements. You can instead pass a React Component to the new `Component`
and `ErrorBoundary` fields if you choose. There is no functional
difference between the two, so use whichever approach you prefer 😀. You
shouldn't be defining both, but if you do `Component`/`ErrorBoundary`
will "win".
([#&#8203;10045](https://togithub.com/remix-run/react-router/pull/10045))

    **Example JSON Syntax**

    ```jsx
    // Both of these work the same:
    const elementRoutes = [{
      path: '/',
      element: <Home />,
      errorElement: <HomeError />,
    }]

    const componentRoutes = [{
      path: '/',
      Component: Home,
      ErrorBoundary: HomeError,
    }]

    function Home() { ... }
    function HomeError() { ... }
    ```

    **Example JSX Syntax**

    ```jsx
    // Both of these work the same:
    const elementRoutes = createRoutesFromElements(
<Route path='/' element={<Home />} errorElement={<HomeError /> } />
    );

    const componentRoutes = createRoutesFromElements(
      <Route path='/' Component={Home} ErrorBoundary={HomeError} />
    );

    function Home() { ... }
    function HomeError() { ... }
    ```

- **Introducing Lazy Route Modules!**
([#&#8203;10045](https://togithub.com/remix-run/react-router/pull/10045))

In order to keep your application bundles small and support
code-splitting of your routes, we've introduced a new `lazy()` route
property. This is an async function that resolves the non-route-matching
portions of your route definition (`loader`, `action`,
`element`/`Component`, `errorElement`/`ErrorBoundary`,
`shouldRevalidate`, `handle`).

Lazy routes are resolved on initial load and during the `loading` or
`submitting` phase of a navigation or fetcher call. You cannot lazily
define route-matching properties (`path`, `index`, `children`) since we
only execute your lazy route functions after we've matched known routes.

Your `lazy` functions will typically return the result of a dynamic
import.

    ```jsx
// In this example, we assume most folks land on the homepage so we
include that
// in our critical-path bundle, but then we lazily load modules for /a
and /b so
    // they don't load until the user navigates to those routes
    let routes = createRoutesFromElements(
      <Route path="/" element={<Layout />}>
        <Route index element={<Home />} />
        <Route path="a" lazy={() => import("./a")} />
        <Route path="b" lazy={() => import("./b")} />
      </Route>
    );
    ```

Then in your lazy route modules, export the properties you want defined
for the route:

    ```jsx
    export async function loader({ request }) {
      let data = await fetchData(request);
      return json(data);
    }

// Export a `Component` directly instead of needing to create a React
Element from it
    export function Component() {
      let data = useLoaderData();

      return (
        <>
          <h1>You made it!</h1>
          <p>{data}</p>
        </>
      );
    }

// Export an `ErrorBoundary` directly instead of needing to create a
React Element from it
    export function ErrorBoundary() {
      let error = useRouteError();
      return isRouteErrorResponse(error) ? (
        <h1>
          {error.status} {error.statusText}
        </h1>
      ) : (
        <h1>{error.message || error}</h1>
      );
    }
    ```

An example of this in action can be found in the
[`examples/lazy-loading-router-provider`](https://togithub.com/remix-run/react-router/tree/main/examples/lazy-loading-router-provider)
directory of the repository.

🙌 Huge thanks to [@&#8203;rossipedia](https://togithub.com/rossipedia)
for the [Initial
Proposal](https://togithub.com/remix-run/react-router/discussions/9826)
and [POC
Implementation](https://togithub.com/remix-run/react-router/pull/9830).

-   Updated dependencies:
    -   `react-router@6.9.0`
    -   `@remix-run/router@1.4.0`

###
[`v6.8.2`](https://togithub.com/remix-run/react-router/blob/HEAD/packages/react-router-dom/CHANGELOG.md#682)

[Compare
Source](https://togithub.com/remix-run/react-router/compare/react-router-dom@6.8.1...react-router-dom@6.8.2)

##### Patch Changes

- Treat same-origin absolute URLs in `<Link to>` as external if they are
outside of the router `basename`
([#&#8203;10135](https://togithub.com/remix-run/react-router/pull/10135))
- Fix `useBlocker` to return `IDLE_BLOCKER` during SSR
([#&#8203;10046](https://togithub.com/remix-run/react-router/pull/10046))
- Fix SSR of absolute `<Link to>` urls
([#&#8203;10112](https://togithub.com/remix-run/react-router/pull/10112))
- Properly escape HTML characters in `StaticRouterProvider` serialized
hydration data
([#&#8203;10068](https://togithub.com/remix-run/react-router/pull/10068))
-   Updated dependencies:
    -   `@remix-run/router@1.3.3`
    -   `react-router@6.8.2`

</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 this update
again.

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/realbrodiwhite/royalgames-client).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI2MS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
  • Loading branch information
realbrodiwhite committed Mar 21, 2024
2 parents e4b0e18 + 0e584b1 commit c5644d9
Showing 1 changed file with 27 additions and 27 deletions.
54 changes: 27 additions & 27 deletions package-lock.json

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

0 comments on commit c5644d9

Please sign in to comment.