Skip to content

Update dependency react-router-dom to v7 #7683

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Apr 10, 2023

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
react-router-dom (source) 5.1.2 -> 7.6.3 age adoption passing confidence

Release Notes

remix-run/react-router (react-router-dom)

v7.6.3

Compare Source

Patch Changes

v7.6.2

Compare Source

Patch Changes

v7.6.1

Compare Source

Patch Changes

v7.6.0

Compare Source

Patch Changes

v7.5.3

Compare Source

Patch Changes

v7.5.2

Compare Source

Patch Changes

v7.5.1

Compare Source

Patch Changes

v7.5.0

Compare Source

Patch Changes

v7.4.1

Compare Source

Patch Changes

v7.4.0

Compare Source

Patch Changes

v7.3.0

Compare Source

Patch Changes

v7.2.0

Compare Source

Patch Changes

v7.1.5

Compare Source

Patch Changes

v7.1.4

Compare Source

Patch Changes

v7.1.3

Compare Source

Patch Changes

v7.1.2

Compare Source

Patch Changes

v7.1.1

Compare Source

Patch Changes

v7.1.0

Compare Source

Patch Changes

v7.0.2

Compare Source

Patch Changes

v7.0.1

Compare Source

Patch Changes

v7.0.0

Compare Source

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: (#​11744)

    • defer
    • AbortedDeferredError
    • type TypedDeferredData
    • UNSAFE_DeferredData
    • UNSAFE_DEFERRED_SYMBOL,
  • Use createRemixRouter/RouterProvider in entry.client instead of RemixBrowser (#​11469)

  • Remove single fetch future flag. (#​11522)

  • Remove future.v7_startTransition flag (#​11696)

  • Remove future.v7_normalizeFormMethod future flag (#​11697)

  • Allow returning undefined from actions and loaders (#​11680)

  • update minimum node version to 18 (#​11690)

  • Remove future.v7_prependBasename from the ionternalized @remix-run/router package (#​11726)

  • Remove future.v7_throwAbortReason from internalized @remix-run/router package (#​11728)

  • Add exports field to all packages (#​11675)

  • node package no longer re-exports from react-router (#​11702)

  • updates the minimum React version to 18 (#​11689)

    • Remove the future.v7_partialHydration flag (#​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 (#​11731)

Minor Changes
  • Add prefetching support to Link/NavLink when using Remix SSR (#​11402)
  • Enhance ScrollRestoration so it can restore properly on an SSR'd document load (#​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. (#​11396) (#​11400)
Patch Changes

v6.30.1

Compare Source

v6.30.0

Compare Source

v6.29.0

Compare Source

v6.28.2

Compare Source

v6.28.1

Compare Source

v6.28.0

Compare Source

v6.27.0

Compare Source

v6.26.2

Compare Source

v6.26.1

Compare Source

v6.26.0

Compare Source

v6.25.1

Compare Source

v6.25.0

Compare Source

v6.24.1

Compare Source

v6.24.0

Compare Source

v6.23.1

Compare Source

v6.23.0

Compare Source

v6.22.3

Compare Source

v6.22.2

Compare Source

v6.22.1

Compare Source

v6.22.0

Compare Source

v6.21.3

Compare Source

v6.21.2

Compare Source

v6.21.1

Compare Source

v6.21.0

Compare Source

v6.20.1

Compare Source

v6.20.0

Compare Source

v6.19.0

Compare Source

v6.18.0

Compare Source

v6.17.0

Compare Source

v6.16.0

Compare Source

v6.15.0

Compare Source

v6.14.2

Compare Source

v6.14.1

Compare Source

v6.14.0

Compare Source

v6.13.0

Compare Source

v6.12.1

Compare Source

v6.12.0

Compare Source

v6.11.2

Compare Source

v6.11.1

Compare Source

v6.11.0

Compare Source

v6.10.0

Compare Source

v6.9.0

Compare Source

v6.8.2

Compare Source

v6.8.1

Compare Source

v6.8.0

Compare Source

v6.7.0

Compare Source

v6.6.2

Compare Source

v6.6.1

Compare Source

v6.6.0

Compare Source

v6.5.0

Compare Source

v6.4.5

Compare Source

v6.4.4: v6.4.4

Compare Source

What's Changed

  • Throw an error if an action/loader function returns undefined as revalidations need to know whether the loader has previously been executed. undefined also causes issues during SSR stringification for hydration. You should always ensure your loader/action returns a value, and you may return null if you don't wish to return anything. (#​9511)
  • Properly handle redirects to external domains (#​9590, #​9654)
  • Preserve the HTTP method on 307/308 redirects (#​9597)
  • Support basename in static data routers (#​9591)
  • Enhanced ErrorResponse bodies to contain more descriptive text in internal 403/404/405 scenarios
  • Fix issues with encoded characters in NavLink and descendant <Routes> (#​9589, #​9647)
  • Properly serialize/deserialize ErrorResponse instances when using built-in hydration (#​9593)
  • Support basename in static data routers (#​9591)
  • Updated dependencies:

Full Changelog: https://github.com/remix-run/react-router/compare/[email protected]@6.4.4

v6.4.3

Compare Source

v6.4.2

Compare Source

v6.4.1

Compare Source

v6.4.0

Compare Source

v6.3.0: [email protected]

Compare Source

What's Changed

New Contributors

Full Changelog: remix-run/react-router@v6.2.2...v6.3.0

v6.2.2

Compare Source

What's Changed

🐛 Bug Fixes
  • Fixed nested splat routes that begin with special URL-safe characters (#​8563)
  • Fixed a bug where index routes were missing route context in some cases (#​8497)

New Contributors

Full Changelog: remix-run/react-router@v6.2.1...v6.2.2

v6.2.1

Compare Source

This release updates the internal history dependency to 5.2.0.

Full Changelog: remix-run/react-router@v6.2.0...v6.2.1

v6.2.0

Compare Source

🐛 Bug fixes

  • Fixed the RouteProps element type, which should be a ReactNode (#​8473)
  • Fixed a bug with useOutlet for top-level routes (#​8483)

✨ Features

  • We now use statically analyzable CJS exports. This enables named imports in Node ESM scripts (See the commit).

New Contributors

Full Changelog: remix-run/react-router@v6.1.1...v6.2.0

v6.1.1

Compare Source

In v6.1.0 we inadvertently shipped a new, undocumented API that will likely introduce bugs (#​7586). We have flagged HistoryRouter as unstable_HistoryRouter, as this API will likely need to change before a new major release.

Full Changelog: remix-run/react-router@v6.1.0...v6.1.1

v6.1.0

Compare Source

🐛 Bug fixes

  • Fixed a bug that broke support for base64 encoded IDs on nested routes (#​8291)

✨ Features

  • <Outlet> can now receive a context prop. This value is passed to child routes and is accessible via the new useOutletContext hook. See the API docs for details. (#​8461)
  • <NavLink> can now receive a child function for access to its props. (#​8164)

💅 Enhancements

  • Improved TypeScript signature for useMatch and matchPath. For example, when you call useMatch("foo/:bar/:baz"), the path is parsed and the return type will be PathMatch<"bar" | "baz">. (#​8030)
  • A few error message improvements (#​8202)

New Contributors

Full Changelog: remix-run/react-router@v6.0.1...v6.1.0

v6.0.2

Compare Source

✨ Features

  • Added the reloadDocument prop to <Link>. This allows <Link> to function like a normal anchor tag by reloading the document after navigation while maintaining the relative to resolution.

🗒️ Docs

  • Fixed several issues in docblocks and the docs themselves. See the full changelog for the deets!

🤝 New Contributors

Full Changelog

v6.0.1

Compare Source

🐛 Bug Fixes

  • Add a default <StaticRouter location> value (#​8243)
  • Add invariant for using <Route> inside <Routes> to help people make the change (#​8238)

v6.0.0

Compare Source

React Router v6 is here!

Please go read our blog post for more information on all the great stuff in v6 including notes about how to upgrade from React Router v5 and Reach Router.

v5.3.4

Compare Source

We removed the mini-create-react-context dependency, moving it into an internal module to eliminate peer dependency warnings for users on React 18 (#​9382).

Full Changelog: remix-run/react-router@v5.3.3...v5.3.4

v5.3.3

Compare Source

This release fixes a bad version selector in react-router-native.

v5.3.2

Compare Source

v5.3.1

Compare Source

This release adds missing LICENSE files to the published build.

v5.3.0

Compare Source

This release of react-router-dom adds support for passing a function to either the className or style props to conditionally apply values based on the link's active state.

This provides similar functionality as the existing activeClassName and activeStyle props, but is a bit more powerful. For example, you can now easily apply styles exclusively to an inactive NavLink as well. This offers a nicer experience for folks who use utility class-based CSS tools such as Tailwind.

function Comp() {
  return (
    <NavLink
      to="/"
      className={isActive =>
        `px-3 py-2 ${isActive ? 'text-gray-200' : 'text-gray-800'}`
      }
    >
      Home
    </NavLink>
  );
}

Note that as of v6.0.0-beta.3, the activeClassName and activeStyle props are removed completely. Adding support for functional className and style props to both v5 and v6 will give v5 users an easier upgrade path.

Thanks to @​tim-phillips for raising the issue that inspired the change! 🥳

v5.2.1

Compare Source

This release fixes a bug with <Link> so that, when the to location is the same as the current, the history state entry is replaced instead of pushed to the stack. See https://github.com/remix-run/react-router/issues/5362 for details. 🥳

Thanks to @​guidobouman for the PR and for everyone else who weighed in for the fix!

v5.2.0

Compare Source

This release includes a notable performance boost by separating the "Router" context from the "History" context internally. We also allow every element type for Link's component prop and support a sensitive prop on NavLink for control over case sensitive matching.

Enjoy!

Changes


Configuration

📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), 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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added dependencies Bot PRs that update dependencies javascript labels Apr 10, 2023
@jmaher
Copy link
Collaborator

jmaher commented Apr 10, 2023

@beatrice-acasandrei @alexandru-io this is failing on a perf test, can you put this in the perfherder queue to fix the test and upgrade the package?

@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 2 times, most recently from 031ccbd to 019d024 Compare April 10, 2023 21:44
@jmaher jmaher added the perfherder perfherder related PR for the Perf team to work on label Apr 11, 2023
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 2 times, most recently from bd1dfe9 to 27f4ee0 Compare May 6, 2023 20:51
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 27f4ee0 to c8f2ee8 Compare May 20, 2023 20:06
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 2 times, most recently from 81db26e to d99ea73 Compare June 17, 2023 18:27
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from d99ea73 to 2d027bd Compare June 26, 2023 20:03
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 2d027bd to 9579a40 Compare July 3, 2023 22:47
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 9579a40 to 674349d Compare July 20, 2023 21:01
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 2 times, most recently from 4580697 to 68c8022 Compare August 13, 2023 16:56
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 68c8022 to a533b36 Compare September 5, 2023 14:10
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from a533b36 to c1cc855 Compare September 16, 2023 17:25
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from c1cc855 to 07a2076 Compare October 20, 2023 05:00
@jmaher
Copy link
Collaborator

jmaher commented Oct 23, 2023

@alexandru-io I asked 6 months ago for this to be looked into as it is blocked on a perfherder test, can we make this a higher priority?

@alexandru-io
Copy link
Contributor

Sorry @jmaher we'll look into it with higher priority.
cc @beatrice-acasandrei

@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 07a2076 to 9e133ce Compare October 24, 2023 09:06
@beatrice-acasandrei
Copy link
Collaborator

Hi @jmaher! We looked into upgrading React Router Dom to V6, but we have some concerns.
There are many breaking changes, one that stands out the most is that React Router Dom isn't able to support class components because they can't use React hooks. Unfortunately for us in the codebase most of the react components are classes. It affects both Treeherder and Perfherder and it’s not trivial to fix. At the end it should be deployed to prototype and tested rigorously by us and perhaps multiple users. Because of this we are also trying to establish a migration strategy.

Because it’s not trivial and it also affects Treeherder, is there maybe someone that can help us with the upgrade? We think this will take some time to accomplish and we’ll need to prioritize our tasks. Please let us know what your thoughts are.

Files that need to be updated:
ui/App.jsx
ui/intermittent-failures/App.jsx
ui/perfherder/App.jsx
ui/push-health/App.jsx

Some resources:
https://reactrouter.com/en/main/upgrading/v5
https://stackoverflow.com/questions/74239145/react-router-dom-v6-does-v6-support-for-class-components
https://stackoverflow.com/questions/70443591/how-to-pass-props-using-element-in-react-router-v6

@jmaher
Copy link
Collaborator

jmaher commented Oct 27, 2023

thanks for reaching out, Right now this patch is failing on perfherder tests, so possibly if you could add a fix for the perfherder tests (and code as needed), we could pick up the related work/testing for treeherder proper.

@beatrice-acasandrei
Copy link
Collaborator

beatrice-acasandrei commented Oct 27, 2023

thanks for reaching out, Right now this patch is failing on perfherder tests, so possibly if you could add a fix for the perfherder tests (and code as needed), we could pick up the related work/testing for treeherder proper.

@jmaher There's no quick fix for this, the tests are not the issue here. The update from V6 affects the routes, without fixing them properly everything is busted.

We tried locally to upgrade to v6 and fixing the errors, that's when we realized all of the above. Currently we are looking into a compatibility package that will allow us to migrate incrementally to V6.

@jmaher
Copy link
Collaborator

jmaher commented Oct 27, 2023

are you saying in order to get the tests working for perfherder you need to fix treeherder routes as well, not just perfherder routes? I would expect some other tests to fail if there were more fixes, but that could be a sign of poor tests

@jmaher
Copy link
Collaborator

jmaher commented Oct 27, 2023

testing this current PR locally (via yarn start) yields a treeherder that I can view results and add/remove filters as well as annotate failures. While I didn't test everything, it seems that the large majority of the functionality works. I suspect all that needs to happen is fix the perfherder tests and maybe a route or two within perfherder.

@beatrice-acasandrei
Copy link
Collaborator

testing this current PR locally (via yarn start) yields a treeherder that I can view results and add/remove filters as well as annotate failures. While I didn't test everything, it seems that the large majority of the functionality works. I suspect all that needs to happen is fix the perfherder tests and maybe a route or two within perfherder.

@jmaher Because package.json is affected I recommend deleting node_modules and then running yarn install. Currently everything is working for you because you have the react router dom v5 installed I assume, not v6. You could also check the version installed before running yarn start to make sure the changes from this PR are applied.

@beatrice-acasandrei
Copy link
Collaborator

are you saying in order to get the tests working for perfherder you need to fix treeherder routes as well, not just perfherder routes? I would expect some other tests to fail if there were more fixes, but that could be a sign of poor tests

Yes, that's what I was trying to explain. I'm not sure why the other tests are not failing.

@jmaher jmaher removed the perfherder perfherder related PR for the Perf team to work on label Oct 31, 2023
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from b7e1593 to 1f71e17 Compare November 10, 2024 01:42
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 1f71e17 to 7f5f713 Compare November 25, 2024 09:50
@renovate renovate bot changed the title Update dependency react-router-dom to v6 Update dependency react-router-dom to v7 Nov 25, 2024
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 7f5f713 to efa58d6 Compare November 25, 2024 18:00
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 2 times, most recently from 6dd95eb to 3b5bba0 Compare December 6, 2024 02:22
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 2 times, most recently from a316560 to ae40dee Compare December 26, 2024 18:24
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from ae40dee to 98536fa Compare January 6, 2025 10:30
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 4 times, most recently from a23d0d7 to be7ccd6 Compare January 21, 2025 00:39
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 2 times, most recently from f6bc2dd to 35f158f Compare February 2, 2025 17:48
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 35f158f to 8cd914a Compare February 4, 2025 01:50
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 8cd914a to 9ad64ac Compare February 21, 2025 22:05
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 9ad64ac to cce5879 Compare March 9, 2025 21:51
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 2 times, most recently from 838ff42 to d7b9106 Compare March 22, 2025 17:53
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 2 times, most recently from 2dafc82 to d0f0aea Compare April 7, 2025 18:59
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch 2 times, most recently from 4e740c4 to f52d7d4 Compare April 27, 2025 15:22
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from f52d7d4 to d849eb3 Compare May 1, 2025 21:56
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from d849eb3 to 998bed2 Compare May 11, 2025 17:55
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 998bed2 to 3087348 Compare May 28, 2025 14:11
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from 3087348 to b657175 Compare June 6, 2025 22:30
@renovate renovate bot force-pushed the renovate/major-react-router-monorepo branch from b657175 to 3b10f21 Compare June 30, 2025 19:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Bot PRs that update dependencies javascript
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants