Repository navigation
Update react-router monorepo to v8 - #956
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
from
June 29, 2026 21:02
b199962 to
b109dec
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
2 times, most recently
from
July 12, 2026 17:48
33e9995 to
c948b83
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
2 times, most recently
from
July 22, 2026 18:08
6371f72 to
9354920
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
3 times, most recently
from
July 30, 2026 16:18
bb74555 to
ee5f587
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
from
August 7, 2026 18:35
ee5f587 to
0096440
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
4 times, most recently
from
September 2, 2026 19:03
89b1c2b to
3d73773
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
11 times, most recently
from
September 9, 2026 20:05
44a2549 to
e8c7387
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
5 times, most recently
from
September 16, 2026 11:02
8a329ae to
a69a7a0
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
from
September 24, 2026 21:13
a69a7a0 to
fb65034
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
3 times, most recently
from
October 1, 2026 06:16
f6acde2 to
7fe2457
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
4 times, most recently
from
October 8, 2026 18:44
69c027a to
09e96f4
Compare
renovate
Bot
force-pushed
the
renovate/major-react-router-monorepo
branch
from
October 8, 2026 21:12
09e96f4 to
c6b12ae
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^7.12.0→^8.0.0^7.12.0→^8.0.0^7.12.0→^8.0.0^7.12.0→^8.0.0^7.12.0→^8.0.0Release Notes
remix-run/react-router (@react-router/dev)
v8.4.0Compare Source
Patch Changes
react-router devandvite previewby usingX-Forwarded-Protowhen constructingrequest.url(#15466)Host, notX-Forwarded-HostX-Forwarded-ProtoheadersreactRouterVite plugin (#15440)react-router@8.4.0@react-router/node@8.4.0@react-router/serve@8.4.0v8.3.1Compare Source
Patch Changes
@remix-run/node-fetch-serverdependency (#15447)react-router reveal --no-typescriptdoes not require Prettier at runtime (#15373)--no-typescriptflag ahead of its removal in React Router v9react-router@8.3.1@react-router/node@8.3.1@react-router/serve@8.3.1v8.3.0Compare Source
Minor Changes
react-router devwith--conditions=developmentwhen not already configured (#15291)Patch Changes
typescript@7to be used (#15317)Unstable Changes
Add
unstable_rsc/client-versionclient build version virtual module (#15318)Support the
subResourceIntegrityconfig option in RSC Framework Mode (#15321)Migration guide
No changes are required when using the default RSC SSR entry. If you maintain a custom
app/entry.ssr.tsx, import the new virtual module and pass its hashes to React'simportMaprender option:react-router@8.3.0@react-router/node@8.3.0@react-router/serve@8.3.0v8.2.0Compare Source
Minor Changes
@react-router/node,@react-router/express, or@react-router/servecontinue to use therenderToPipeableStreamdefault server entryrenderToReadableStreamdefault server entryentry.server.tsxmay be able to remove it in favor of the default if it is not doing anything customnubas a supported package manager when installing framework dependencies (#15276)Patch Changes
rolldownOptionsconfig in Vite 8+ (#15278)Unstable Changes
future.unstable_enableNodeReadableStreamflag to opt Node Framework mode apps into usingrenderToReadableStreaminstead ofrenderToPipeableStream(#15290)entry.server.tsxreact-router@8.2.0@react-router/node@8.2.0@react-router/serve@8.2.0v8.1.0Compare Source
Patch Changes
react-router.config.tsbuildEndhook would run before prerendering was completed (#15211)react-router typegencrashes under the Bun runtime when Babel default imports are already unwrapped (#15214)envFile:falseVite config withenvDir:falseto eliminate a deprecation warning when using vite@8.1.0+ (#15230)"node"Vite server condition for Framework mode apps that declare a Node server adapter dependency (#15242)react-router@8.1.0@react-router/node@8.1.0@react-router/serve@8.1.0v8.0.1Compare Source
Patch Changes
react-router@8.0.1@react-router/node@8.0.1@react-router/serve@8.0.1v8.0.0Compare Source
Major Changes
@react-router/dev/vite/cloudflaredev proxy export; use@cloudflare/vite-plugininstead (#15077)wrangler@3as a peer dependency of@react-router/devfuture.v8_trailingSlashAwareDataRequestsflag (#15100)future.v8_passThroughRequestsflag - the raw incomingrequestis now always passed through toloader/action. (#15079)future.v8_splitRouteModulesto a top-levelsplitRouteModulesconfig option and change the default behavior totrue(#15086)splitRouteModules: falseto keep route modules in a single chunksplitRouteModules: "enforce"to require all routes to be splittablefuture.v8_viteEnvironmentApiflag because the Vite Environment API is always enabled (#15077)future.unstable_previewServerPrerenderingflag and make prerendering with the Vite Environment API the default. (#15077)Minor Changes
@babel/corefrom^7.27.7to^7.29.7@babel/generatorfrom^7.27.5to^7.29.7@babel/parserfrom^7.27.7to^7.29.7@babel/plugin-syntax-jsxfrom^7.27.1to^7.29.7@babel/preset-typescriptfrom^7.27.1to^7.29.7@babel/traversefrom^7.27.7to^7.29.7@babel/typesfrom^7.27.7to^7.29.7dedentfrom^1.5.3to^1.7.2jsescfrom3.0.2to3.1.0lodashfrom^4.17.21to^4.18.1prettierfrom^3.6.2to^3.8.3@remix-run/node-fetch-serverfrom^0.13.0to^0.13.3react-refreshfrom^0.14.0to^0.18.0semverfrom^7.3.7to^7.8.1tinyglobbyfrom^0.2.14to^0.2.16valibotfrom^1.2.0to^1.4.1cookieandset-cookie-parserwithcookie-es(#15109)vite-nodedependency in favor of Vite's native module runner APIs (#15104)Patch Changes
@babel/corefrom^7.29.0to^7.29.7@babel/generatorfrom^7.29.1to^7.29.7@babel/parserfrom^7.29.3to^7.29.7@babel/plugin-syntax-jsxfrom^7.28.6to^7.29.7@babel/preset-typescriptfrom^7.28.5to^7.29.7@babel/traversefrom^7.29.0to^7.29.7@babel/typesfrom^7.29.0to^7.29.7babel-dead-code-eliminationfrom^1.0.6to^1.0.12chokidarfrom^4.0.0to^5.0.0es-module-lexerfrom^1.3.1to^2.1.0exit-hookfrom2.2.1to5.1.0isbotfrom^5.1.11to^5.1.40p-mapfrom^7.0.3to^7.0.4pathefrom^1.1.2to^2.0.3pkg-typesfrom^2.3.0to^2.3.1react-refreshfrom^0.14.0to^0.18.0semverfrom^7.8.0to^7.8.1tinyglobbyfrom^0.2.14to^0.2.16valibotfrom^1.4.0to^1.4.1!(handle->flags & UV_HANDLE_CLOSING)insrc/win/async.c) during prerendering by usingnode:httpinstead offetchfor internal prerender requests against the Vite preview server (#15077)react-router@8.0.0@react-router/node@8.0.0@react-router/serve@8.0.0remix-run/react-router (@react-router/express)
v8.4.0Compare Source
Patch Changes
react-router@8.4.0@react-router/node@8.4.0v8.3.1Compare Source
Patch Changes
react-router@8.3.1@react-router/node@8.3.1v8.3.0Compare Source
Patch Changes
typescript@7to be used (#15317)react-router@8.3.0@react-router/node@8.3.0v8.2.0Compare Source
Patch Changes
react-router@8.2.0@react-router/node@8.2.0v8.1.0Compare Source
Patch Changes
react-router@8.1.0@react-router/node@8.1.0v8.0.1Compare Source
Patch Changes
react-router@8.0.1@react-router/node@8.0.1v8.0.0Compare Source
Major Changes
expressfrom^4.19.2to^4.22.2expresspeer dependency from^4.17.1 || ^5to^4.22.2 || ^5@types/expressfrom^4.17.9to^4.17.25Patch Changes
react-router@8.0.0@react-router/node@8.0.0remix-run/react-router (@react-router/node)
v8.4.0Compare Source
Patch Changes
writeReadableStreamToWritableandwriteAsyncIterableToWritablethat retained memory for the lifetime of a long-running stream (#15500)react-router@8.4.0v8.3.1Compare Source
Patch Changes
@remix-run/node-fetch-serverdependency (#15447)react-router@8.3.1v8.3.0Compare Source
Patch Changes
typescript@7to be used (#15317)react-router@8.3.0v8.2.0Compare Source
Patch Changes
react-router@8.2.0v8.1.0Compare Source
Patch Changes
react-router@8.1.0v8.0.1Compare Source
Patch Changes
react-router@8.0.1v8.0.0Compare Source
Major Changes
@mjackson/node-fetch-serverto@remix-run/node-fetch-servernow that we can directly use ESM-only packages (#14930)Patch Changes
@remix-run/node-fetch-serverfrom^0.13.0to^0.13.3react-router@8.0.0remix-run/react-router (@react-router/serve)
v8.4.0Compare Source
Patch Changes
react-router@8.4.0@react-router/express@8.4.0@react-router/node@8.4.0v8.3.1Compare Source
Patch Changes
@remix-run/node-fetch-serverdependency (#15447)/.well-known/*files from the client build directory. Express 5's static middleware ignores every dot-segment path by default, so RFC 8615 well-known URIs — ACME challenges, Android'sassetlinks.json, Apple'sapple-app-site-association— fell through to the request handler and came back as app-rendered HTML instead of the static file. Other dotfiles remain hidden. (#15340)react-router@8.3.1@react-router/express@8.3.1@react-router/node@8.3.1v8.3.0Compare Source
Patch Changes
react-router@8.3.0@react-router/express@8.3.0@react-router/node@8.3.0v8.2.0Compare Source
Patch Changes
react-router@8.2.0@react-router/express@8.2.0@react-router/node@8.2.0v8.1.0Compare Source
Patch Changes
get-portdependency (#15239)react-router@8.1.0@react-router/express@8.1.0@react-router/node@8.1.0v8.0.1Compare Source
Patch Changes
react-router@8.0.1@react-router/express@8.0.1@react-router/node@8.0.1v8.0.0Compare Source
Major Changes
@mjackson/node-fetch-serverto@remix-run/node-fetch-servernow that we can directly use ESM-only packages (#14930)Minor Changes
expressfrom4.21.2to5.2.1Patch Changes
@remix-run/node-fetch-serverfrom^0.13.0to^0.13.3get-portfrom5.1.1to7.2.0react-router@8.0.0@react-router/express@8.0.0@react-router/node@8.0.0remix-run/react-router (react-router)
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
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
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)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 these updates again.
This PR was generated by Mend Renovate. View the repository job log.