-
Notifications
You must be signed in to change notification settings - Fork 277
fix(deps): update react-router monorepo to v6 (major) #635
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
Conversation
980d9f7
to
721aba2
Compare
721aba2
to
dd51b8b
Compare
dd51b8b
to
2807348
Compare
Current dependencies on/for this PR:
This comment was auto-generated by Graphite. |
The tests still mock out history directly; will have to change that approach |
23967bd
to
9732ce4
Compare
2807348
to
697fff0
Compare
9732ce4
to
b456361
Compare
697fff0
to
57e5cc3
Compare
57e5cc3
to
0de6abe
Compare
@bmulholland I believe that renovate discarded your changes. If you have changes saved locally, try to save them beforehand! |
Think I've managed to get the changes back. |
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. ⚠ Warning: custom changes will be lost. |
What to feel about what? The bundled app size increasing? |
Yeah, but it shouldn't be a problem here. We're shipping an electron app either way. |
Yep, agreed. It'll all be local. |
Re: createMemoryHistory, the equivalent that I've found in the v6+ docs is https://reactrouter.com/en/main/routers/create-memory-router That mocking seems to be at a different level, though -- would have to pass in the route configuration, I think? Probably don't want to go to the trouble of re-architecting the route setup just for the upgrade. |
I'll fix the test I broke |
5791cca
to
8deaa9d
Compare
8deaa9d
to
22b489a
Compare
It is not too different from what we currently have set up I think. |
This PR contains the following updates:
5.3.4
->6.16.0
5.3.4
->6.16.0
Release Notes
remix-run/react-router (react-router)
v6.16.0
Compare Source
Minor Changes
any
withunknown
on exposed typings for user-provided data. To do this in Remix v2 without introducing breaking changes in React Router v6, we have added generics to a number of shared types. These continue to default toany
in React Router and are overridden withunknown
in Remix. In React Router v7 we plan to move these tounknown
as a breaking change. (#10843)Location
now accepts a generic for thelocation.state
valueActionFunctionArgs
/ActionFunction
/LoaderFunctionArgs
/LoaderFunction
now accept a generic for thecontext
parameter (only used in SSR usages viacreateStaticHandler
)useMatches
(now exported asUIMatch
) accepts generics formatch.data
andmatch.handle
- both of which were already set tounknown
@private
class exportErrorResponse
to anUNSAFE_ErrorResponseImpl
export since it is an implementation detail and there should be no construction ofErrorResponse
instances in userland. This frees us up to export atype ErrorResponse
which correlates to an instance of the class viaInstanceType
. Userland code should only ever be usingErrorResponse
as a type and should be type-narrowing viaisRouteErrorResponse
. (#10811)ShouldRevalidateFunctionArgs
interface (#10797)_isFetchActionRedirect
,_hasFetcherDoneAnything
) (#10715)Patch Changes
@remix-run/[email protected]
v6.15.0
Compare Source
Minor Changes
redirectDocument()
function which allows users to specify that a redirect from aloader
/action
should trigger a document reload (viawindow.location
) instead of attempting to navigate to the redirected location via React Router (#10705)Patch Changes
useRevalidator
is referentially stable across re-renders if revalidations are not actively occurring (#10707)@remix-run/[email protected]
v6.14.2
Compare Source
Patch Changes
@remix-run/[email protected]
v6.14.1
Compare Source
Patch Changes
unstable_useBlocker
when used with an unstable blocker function (#10652)@remix-run/[email protected]
v6.14.0
Compare Source
Patch Changes
basename
from locations provided tounstable_useBlocker
functions to matchuseLocation
(#10573)generatePath
when passed a numeric0
value parameter (#10612)unstable_useBlocker
key issues inStrictMode
(#10573)tsc --skipLibCheck:false
issues on React 17 (#10622)typescript
to 5.1 (#10581)@remix-run/[email protected]
v6.13.0
Compare Source
Minor Changes
Move
React.startTransition
usage behind a future flag to avoid issues with existing incompatibleSuspense
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 ofstartTransition
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 auseMemo
. (#10596)Existing behavior will no longer include
React.startTransition
:If you wish to enable
React.startTransition
, pass the future flag to your component:Patch Changes
React.startTransition
minification bug in production mode (#10588)v6.12.1
Compare Source
Patch Changes
React.startTransition
to fix webpack + react 17 compilation error (#10569)v6.12.0
Compare Source
Minor Changes
React.startTransition
if it exists (#10438)Patch Changes
@remix-run/[email protected]
v6.11.2
Compare Source
Patch Changes
basename
duplication in descendant<Routes>
inside a<RouterProvider>
(#10492)@remix-run/[email protected]
v6.11.1
Compare Source
Patch Changes
Component
API within descendant<Routes>
(#10434)useNavigate
from<Routes>
inside a<RouterProvider>
(#10432)<Navigate>
in strict mode when using a data router (#10435)@remix-run/[email protected]
v6.11.0
Compare Source
Patch Changes
<Routes>
whenRouterProvider
errors existed (#10374)Component
instead ofelement
on a route definition (#10287)useNavigate
in the render cycle by setting theactiveRef
in a layout effect, allowing thenavigate
function to be passed to child components and called in auseEffect
there. (#10394)useSyncExternalStore
touseState
for internal@remix-run/router
router state syncing in<RouterProvider>
. We found some subtle bugs where router state updates got propagated before other normaluseState
updates, which could lead to footguns inuseEffect
calls. (#10377, #10409)useRevalidator()
to resolve a loader-driven error boundary scenario (#10369)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 onuseLocation()
. When usingBrowserRouter
, these hooks remain unstable across location changes because they still rely onuseLocation()
. (#10336)@remix-run/[email protected]
v6.10.0
Compare Source
Minor Changes
Added support for Future Flags in React Router. The first flag being introduced is
future.v7_normalizeFormMethod
which will normalize the exposeduseNavigation()/useFetcher()
formMethod
fields as uppercase HTTP methods to align with thefetch()
behavior. (#10207)future.v7_normalizeFormMethod === false
(default v6 behavior),useNavigation().formMethod
is lowercaseuseFetcher().formMethod
is lowercasefuture.v7_normalizeFormMethod === true
:useNavigation().formMethod
is uppercaseuseFetcher().formMethod
is uppercasePatch Changes
createRoutesFromElements
(#10193)@remix-run/[email protected]
v6.9.0
Compare Source
Minor Changes
React Router now supports an alternative way to define your route
element
anderrorElement
fields as React Components instead of React Elements. You can instead pass a React Component to the newComponent
andErrorBoundary
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 doComponent
/ErrorBoundary
will "win". (#10045)Example JSON Syntax
Example JSX Syntax
Introducing Lazy Route Modules! (#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
orsubmitting
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.Then in your lazy route modules, export the properties you want defined for the route:
An example of this in action can be found in the
examples/lazy-loading-router-provider
directory of the repository.🙌 Huge thanks to @rossipedia for the Initial Proposal and POC Implementation.
Updated dependencies:
@remix-run/[email protected]
Patch Changes
generatePath
incorrectly applying parameters in some cases (#10078)v6.8.2
Compare Source
Patch Changes
@remix-run/[email protected]
v6.8.1
Compare Source
Patch Changes
@remix-run/[email protected]
v6.8.0
Compare Source
Patch Changes
@remix-run/[email protected]
v6.7.0
Compare Source
Minor Changes
unstable_useBlocker
hook for blocking navigations within the app's location origin (#9709)Patch Changes
generatePath
when optional params are present (#9764)<Await>
to acceptReactNode
as children function return result (#9896)@remix-run/[email protected]
v6.6.2
Compare Source
Patch Changes
useId
consistency during SSR (#9805)v6.6.1
Compare Source
Patch Changes
@remix-run/[email protected]
v6.6.0
Compare Source
Patch Changes
useLoaderData
usage inerrorElement
(#9735)@remix-run/[email protected]
v6.5.0
Compare Source
This release introduces support for Optional Route Segments. Now, adding a
?
to the end of any path segment will make that entire segment optional. This works for both static segments and dynamic parameters.Optional Params Examples
<Route path=":lang?/about>
will match:/:lang/about
/about
<Route path="/multistep/:widget1?/widget2?/widget3?">
will match:/multistep
/multistep/:widget1
/multistep/:widget1/:widget2
/multistep/:widget1/:widget2/:widget3
Optional Static Segment Example
<Route path="/home?">
will match:/
/home
<Route path="/fr?/about">
will match:/about
/fr/about
Minor Changes
Patch Changes
<Route path="prefix-:param">
, to align with how splat parameters work. If you were previously relying on this behavior then it's recommended to extract the static portion of the path at theuseParams
call site: (#9506)@remix-run/[email protected]
v6.4.5
Compare Source
Patch Changes
@remix-run/[email protected]
v6.4.4
Compare Source
Patch Changes
@remix-run/[email protected]
v6.4.3
Compare Source
Patch Changes
useRoutes
should be able to returnnull
when passinglocationArg
(#9485)initialEntries
type increateMemoryRouter
(#9498)@remix-run/[email protected]
v6.4.2
Compare Source
Patch Changes
IndexRouteObject
andNonIndexRouteObject
types to makehasErrorElement
optional (#9394)RouteObject
/RouteProps
types to surface the error in TypeScript. (#9366)@remix-run/[email protected]
v6.4.1
Compare Source
Patch Changes
initialEntries
(#9288)@remix-run/[email protected]
v6.4.0
Compare Source
Whoa this is a big one!
6.4.0
brings all the data loading and mutation APIs over from Remix. Here's a quick high level overview, but it's recommended you go check out the docs, especially the feature overview and the tutorial.New APIs
createMemoryRouter
<RouterProvider>
loader
and mutate with a Routeaction
errorElement
defer
andAwait
Bug Fixes
useLocation
returns the scoped location inside a<Routes location>
component (#9094)Updated Dependencies
@remix-run/[email protected]
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
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 to5.2.0
.Full Changelog: remix-run/react-router@v6.2.0...v6.2.1
v6.2.0
Compare Source
🐛 Bug fixes
RouteProps
element
type, which should be aReactNode
(#8473)useOutlet
for top-level routes (#8483)✨ Features
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
asunstable_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
✨ Features
<Outlet>
can now receive acontext
prop. This value is passed to child routes and is accessible via the newuseOutletContext
hook. See the API docs for details. (#8461)<NavLink>
can now receive a child function for access to its props. (#8164)💅 Enhancements
useMatch
andmatchPath
. For example, when you calluseMatch("foo/:bar/:baz")
, the path is parsed and the return type will bePathMatch<"bar" | "baz">
. (#8030)New Contributors
Full Changelog: remix-run/react-router@v6.0.1...v6.1.0
v6.0.2
Compare Source
✨ Features
reloadDocument
prop to<Link>
. This allows<Link>
to function like a normal anchor tag by reloading the document after navigation while maintaining the relativeto
resolution.🗒️ Docs
🤝 New Contributors
Full Changelog
v6.0.1
Compare Source
🐛 Bug Fixes
<StaticRouter location>
value (#8243)<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.
remix-run/react-router (react-router-dom)
v6.16.0
Compare Source
Minor Changes
@remix-run/[email protected]
[email protected]
Patch Changes
v6.15.0
Compare Source
Minor Changes
redirectDocument()
function which allows users to specify that a redirect from aloader
/action
should trigger a document reload (viawindow.location
) instead of attempting to navigate to the redirected location via React Router (#10705)Patch Changes
URLSearchParams
and theuseSearchParams
hook. (#10620)useFormAction()
for unspecified actions since it cannot be determined on the server and causes hydration issues (#10758)unstable_usePrompt
to avoid throwing an exception if the prompt is unblocked and a navigation is performed synchronously (#10687, #10718)@remix-run/[email protected]
[email protected]
v6.14.2
Compare Source
Patch Changes
<ScrollRestoration>
(#10682)<Form state>
prop to populatehistory.state
on submission navigations (#10630)Error
subclasses such asReferenceError
/TypeError
(#10633)@remix-run/[email protected]
[email protected]
v6.14.1
Compare Source
Patch Changes
[email protected]
@remix-run/[email protected]
v6.14.0
Compare Source
Minor Changes
Add support for
application/json
andtext/plain
encodings foruseSubmit
/fetcher.submit
. To reflect these additional types,useNavigation
/useFetcher
now also containnavigation.json
/navigation.text
andfetcher.json
/fetcher.text
which include the json/text submission if applicable (#10413)Patch Changes
submitter
element, prefer the built-innew FormData(form, submitter)
instead of the previous manual approach in modern browsers (those that support the newsubmitter
parameter) (#9865, #10627)type="image"
buttonsformdata-submitter-polyfill
window.history.pushState/replaceState
before updating React Router state (instead of after) so thatwindow.location
matchesuseLocation
during synchronous React 17 rendering (#10448)window.location
and should always referenceuseLocation
when possible, aswindow.location
will not be in sync 100% of the time (due topopstate
events, concurrent mode, etc.)tsc --skipLibCheck:false
issues on React 17 (#10622)typescript
to 5.1 (#10581)[email protected]
@remix-run/[email protected]
v6.13.0
Compare Source
Minor Changes
Move
React.startTransition
usage behind a future flag to avoid issues with existing incompatibleSuspense
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 ofstartTransition
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 auseMemo
. (#10596)Existing behavior will no longer include
React.startTransition
:If you wish to enable
React.startTransition
, pass the future flag to your component:Patch Changes
React.startTransition
minification bug in production mode (#10588)[email protected]
v6.12.1
Compare Source
Patch Changes
React.startTransition
to fix webpack + react 17 compilation error (#10569)[email protected]
v6.12.0
Compare Source
Minor Changes
React.startTransition
if it exists (#10438)Patch Changes
DOMException
(DataCloneError
) when attempting to perform aPUSH
navigation with non-serializable state. (#10427)@remix-run/[email protected]
[email protected]
v6.11.2
Compare Source
Patch Changes
SetURLSearchParams
type (#10444)[email protected]
@remix-run/[email protected]
v6.11.1
Compare Source
Patch Changes
[email protected]
@remix-run/[email protected]
v6.11.0
Compare Source
Minor Changes
basename
support inuseFetcher
(#10336)basename
then you will need to remove the manually prependedbasename
from yourfetcher
calls (fetcher.load('/basename/route') -> fetcher.load('/route')
)Patch Changes
Component
instead ofelement
on a route definition (#10287)<Link to="//">
and other invalid URL values (#10367)useSyncExternalStore
touseState
for internal@remix-run/router
router state syncing in<RouterProvider>
. We found some subtle bugs where router state updates got propagated before other normaluseState
updates, which could lead to footguns inuseEffect
calls. (#10377, #10409)StaticRouterProvider
's internalRouter
component (#10401)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 onuseLocation()
. When usingBrowserRouter
, these hooks remain unstable acrosConfiguration
📅 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.
This PR has been generated by Mend Renovate. View repository job log here.