Update dependency react-router to v8 #32
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "renovate/major-react-router-monorepo"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
^7.16.0→^8.0.0Release Notes
remix-run/react-router (react-router)
v8.5.0Compare Source
Minor Changes
<ViewTransition>component, available in React 19.3 and later (#15493)viewTransitionprops/options,useViewTransitionState, andNavLink'sisTransitioningrender prop andtransitioningclassPatch Changes
<Await>failing to server render promises decoded from an RSC payload, which caused the Suspense boundary to switch to client rendering (#15597)@types/reactand@types/react-domas optional peer dependencies so the shipped type definitions resolve React types under strict (non-hoisted) node_modules layouts (#15528)unstable_useRouterStatedocumentation example to call the imported alias (#15535)HydrateFallbackof a route discovered throughpatchRoutesOnNavigationduring initial hydration (#15537)state.matcheswhile their loaders run, so<RouterProvider>renders down to the discovered route'sHydrateFallbackinstead of rendering nothingRouterProvidersubscribes, including when other subscribers are already attached, and report current client errors once without replaying server errors during hydration (#15637)matchPathnot treating a static segment as optional when it contains characters outside[\w-](#15425)fetcher.reset(), so its cleared data no longer comes back on the next revalidation (#15633)Unstable Changes
⚠️ Unstable features are not recommended for production use
unstable_fetchprop to<HydratedRouter>to customize JavaScript-issued manifest and server data requests in conventional Framework Mode (#15586)navigationType("PUSH","REPLACE", or"POP"for navigation-initiated requests, including reloaded fetchers;nullotherwise)unstable_initiatorandunstable_navigationTypetypeto"navigation"guarantees a non-nullnavigationType, while other data requests have anullnavigationType"initialization"type and include their fetcher key<Link prefetch>use native<link rel="prefetch">elements and do not call the custom implementationunstable_useRouteDiscoveryfor application-controlled route discovery in conventional Framework Mode (#15602)loadAllRoutes()future.unstable_customRouteDiscoveryto opt inevent.defaultBehavior()from a custom mismatch handler to explicitly run built-in recoverynext()v8.4.0Compare Source
Minor Changes
createStaticRouter({ branches })option (#15297)createStaticRouternow caches route branches internally, ignoresbranches, and logs a deprecation warning when the option is providedEntryContext.branchesproperty remains available for compatibility but is always an empty arrayPatch Changes
dataStrategyresult error (#15464)UNSAFE_contexts, so please review carefully if you are using those unsafe exportsdocument.startViewTransitioncalls during initial hydration androuter.revalidate()calls (#15484)SingleFetchNoResultErrorthrown when a fetcher revalidates against a splat route during lazy route discovery (#15395)causeof theUnable to decode turbo-stream responseerror (#15450)Unstable Changes
⚠️ Unstable features are not recommended for production use
future.unstable_routePatternMatchingflag for more efficient route matching powered by@remix-run/route-pattern(#15298)unstable_validateParamsroute field to reject invalid parameter values and continue matchingv8.3.1Compare Source
Patch Changes
Expected fetcher: <key>error thrown on navigation when a fetcher is aborted during its post-action revalidation (#15365)<ScrollRestoration>leavinghistory.scrollRestorationset to"auto"after a bfcache restore, which let the browser restore scroll on subsequent history traversals before the destination route had rendered (#15397)relativeoption inuseSubmit/fetcher.submitwhen resolivng theactionpath (#15400)v8.3.0Compare Source
Patch Changes
href/generatePathper RFC 3986 path-segment rules instead ofencodeURIComponent(#15310)$ & + , ; = : @​— RFC 3986pchar) are no longer percent-encoded, so values like a semver build1.0.0+1interpolate unchanged instead of becoming1.0.0%2B1/ ? # %, whitespace, non-ASCII) are still escaped exactly as beforecrypto.randomUUID()forcreateMemorySessionStoragesession ids (#15302)createMemorySessionStorageis only intended for local development and testing - sessions are lost when the server restartsNavLinknot applying itspendingstate whentohas a trailing slash (#15300)clientLoadercan skip unnecessary server requests once their components have rendered while still fetching missing server-rendered elements (#15323)TypeError: Invalid state: Unable to enqueue) when a request is aborted while the RSC HTML stream has a pending flush (#15286)injectRSCPayloadreadable side, clear the pending flush, and cancel the underlying RSC payload streamUnstable Changes
⚠️ Unstable features are not recommended for production use
Migration
Apps using the default RSC Framework entry do not need to make any changes. Apps with a custom
entry.rsc.tsxshould import the generated client version and pass it tounstable_matchRSCServerRequest:Add CSP nonce support to RSC document rendering (#15320)
nonceoptions tounstable_routeRSCServerRequestandunstable_RSCStaticRouterTo adopt nonce-based CSP, update your
entry.ssr.tsx(runreact-router reveal entry.ssrfirst in RSC Framework Mode) to generate a fresh nonce for each request. Pass it torouteRSCServerRequest, spread therenderHTMLoptions into React's HTML renderer, passoptions.noncetoRSCStaticRouter, and use the same nonce in theContent-Security-Policyresponse header:v8.2.0Compare Source
Patch Changes
href()to properly stringify and URL-encode param values, matchinggeneratePath()(#15277)/school?/user/:id), the internal regex's incorrectly shifted parameter indices resulting in incorrect parameter extraction/one?/two?) were only partially handled/sitemap.xmland outrank them based on definition orderv8.1.0Compare Source
Minor Changes
v8.0.1Compare Source
Patch Changes
AppLoadContexttype export accidentally left over from v7 now that middleware is always enabled and server request context is provided throughRouterContextProvider. (#15207)v8.0.0Compare Source
Major Changes
future.v8_trailingSlashAwareDataRequestsflag (#15100)tsconfig.jsontarget/libfromES2020 -> ES2022(591853e)packages/to ESM-only. (#14895) (59ebcf1)dataparameter in favor ofloaderDataformetaAPIs (to align withRoute.ComponentProps) (#14931)Route.MetaArgs,Route.MetaMatch,MetaArgs,MetaMatch,Route.ComponentProps.matches,UIMatchfuture.v8_passThroughRequestsflag - the raw incomingrequestis now always passed through toloader/action. Useurlfor the normalized URL without React Router-specific implementation details (.datasuffixes,index/_routessearch params). (#15079)hasErrorBoundaryfield added torouter.routeswhen using a data router (#15074)ErrorBoundaryorerrorElementon your routehasErrorBoundaryis no longer accepted onRouteObject(IndexRouteObject/NonIndexRouteObject),DataRouteObject,<Route>JSX props, or as a key inlazyroute definitions.MapRoutePropertiesFunctionsignature no longer requires returninghasErrorBoundary; the router infers it directly.react-router-dompackage (#15076)react-router/domreact-router-domwas kept around as a convenience so existing v6 app imports would still workreact-router-domimports:RouterProvider/HydratedRoutershould be imported fromreact-router/domreact-routerfuture.v8_middlewareflag — middleware is always enabled in v8 (#15078)future.v8_middlewareflag has been removed; middleware is now always enabledcontextparameter passed toloader,action, andmiddlewarefunctions is always aRouterContextProviderinstancegetLoadContextfunctions in custom servers must return aRouterContextProvider— returning a plain object is no longer supportedMiddlewareEnabledtype (previously exported asUNSAFE_MiddlewareEnabled) has been removed since the conditional it gated is now unconditionalFuturemodule augmentation pattern (interface Future { v8_middleware: true }) is no longer needed to typecontextin Data ModeMinor Changes
cookiefrom^1.0.1to^1.1.1set-cookie-parserfrom^2.6.0to^3.1.0Patch Changes
onSubmittype override fromSharedFormPropsto fix deprecation warning with@types/react@19.x(#14932) (59ebcf1)tsuptotsdown. Published package entry points and public APIs are unchanged. (#15092)v7.18.5: v7.18.5Compare Source
See the changelog for release notes: https://github.com/remix-run/react-router/blob/v7/CHANGELOG.md#v7185
Configuration
📅 Schedule: (UTC)
🚦 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.
This PR has been generated by Mend Renovate.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.