treeherder icon indicating copy to clipboard operation
treeherder copied to clipboard

Update dependency react-router-dom to v7

Open renovate[bot] opened this issue 2 years ago • 11 comments

This PR contains the following updates:

Package Change Age Confidence
react-router-dom (source) 5.1.2 -> 7.10.1 age confidence

Release Notes

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

v7.10.1

Compare Source

Patch Changes

v7.10.0

Compare Source

Patch Changes

v7.9.6

Compare Source

Patch Changes

v7.9.5

Compare Source

Patch Changes

v7.9.4

Compare Source

Patch Changes

v7.9.3

Compare Source

Patch Changes

v7.9.2

Compare Source

Patch Changes

v7.9.1

Compare Source

Patch Changes

v7.9.0

Compare Source

Patch Changes

v7.8.2

Compare Source

Patch Changes

v7.8.1

Compare Source

Patch Changes

v7.8.0

Compare Source

Patch Changes

v7.7.1

Compare Source

Patch Changes

v7.7.0

Compare Source

Patch Changes

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.2

Compare Source

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: https://github.com/remix-run/react-router/compare/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: https://github.com/remix-run/react-router/compare/v6.2.1...v6.2.2

v6.2.1

Compare Source

This release updates the internal history dependency to 5.2.0.

Full Changelog: https://github.com/remix-run/react-router/compare/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: https://github.com/remix-run/react-router/compare/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: https://github.com/remix-run/react-router/compare/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: https://github.com/remix-run/react-router/compare/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: https://github.com/remix-run/react-router/compare/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 #​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[bot] avatar Apr 10 '23 01:04 renovate[bot]

@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?

jmaher avatar Apr 10 '23 15:04 jmaher

@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?

jmaher avatar Oct 23 '23 13:10 jmaher

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

alexandru-io avatar Oct 24 '23 09:10 alexandru-io

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

beatrice-acasandrei avatar Oct 27 '23 11:10 beatrice-acasandrei

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 avatar Oct 27 '23 12:10 jmaher

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.

beatrice-acasandrei avatar Oct 27 '23 12:10 beatrice-acasandrei

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 avatar Oct 27 '23 13:10 jmaher

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 avatar Oct 27 '23 20:10 jmaher

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 avatar Oct 30 '23 09:10 beatrice-acasandrei

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.

beatrice-acasandrei avatar Oct 30 '23 09:10 beatrice-acasandrei

got it, this does reproduce and I removed the perfherder tag as the need to be fixed first across the board

jmaher avatar Oct 31 '23 15:10 jmaher