Skip to content

fix(deps): update react-router monorepo to v8.5.1 - #2646

Open
renovate[bot] wants to merge 1 commit into
nextfrom
renovate/react-router-monorepo
Open

renovate[bot] wants to merge 1 commit into
nextfrom
renovate/react-router-monorepo

Conversation

@renovate

@renovate renovate Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@react-router/dev (source) 8.4.0 → 8.5.1 age confidence
@react-router/fs-routes (source) 8.4.0 → 8.5.1 age confidence
@react-router/node (source) 8.4.0 → 8.5.1 age confidence
@react-router/serve (source) 8.4.0 → 8.5.1 age confidence
react-router (source) 8.4.0 → 8.5.1 age confidence

Release Notes

remix-run/react-router (@​react-router/dev)

v8.5.1

Compare Source

Patch Changes
  • Use resolved Vite environment output directories when reading and writing build artifacts (#​15480)
    • Finalize server-bundle manifest paths after asynchronous Vite configuration hooks complete
    • Preserve output-directory overrides applied when creating a Vite build environment
  • Run prerendering after other Vite plugins finish their application build hooks (#​15481)
    • Close React Router's build resources when another plugin's application build hook fails during react-router build
  • Updated dependencies:

v8.5.0

Compare Source

Patch Changes
  • Fix critical CSS collection in dev registering server-only route imports as client dependencies, which triggered dependency re-optimization and full page reloads (#​15595)
  • Fix intermittent Prerender: Request failed for ... connect ECONNREFUSED errors during prerendering (#​15325)
    • Send requests to the address the Vite preview server bound to
    • Avoid re-resolving localhost for each request, which could select a different address family (127.0.0.1 vs ::1)
Unstable Changes

⚠️ Unstable features are not recommended for production use

  • Add ssr: "unstable_api-only" to retain a runtime server for loaders, actions, and route discovery while disabling production document rendering (#​15601)
    • Generate a root-only SPA shell when prerendering is disabled
    • Support prerendered pages and data files alongside runtime loaders and actions, with a SPA fallback for non-prerendered paths
    • Default API-only builds to lazy route discovery
    • Reject API-only configuration in RSC Framework Mode
    • Preserve server-only route exports in additional Vite server environments in both API-only and SSR modes
    • Serve prerendered pages and the SPA fallback in Vite preview while retaining live data requests and route discovery
  • Add the future.unstable_customRouteDiscovery flag to opt into application-controlled route discovery in conventional Framework Mode (#​15602)
  • Fix source maps for route modules in unstable RSC Framework Mode (#​15479)
  • Add unstable_apiServerOrigin to configure the origin for API-only loader, action, and route discovery requests (#​15601)
  • Updated dependencies:
remix-run/react-router (@​react-router/fs-routes)

v8.5.1

Compare Source

Patch Changes

v8.5.0

Compare Source

Patch Changes
remix-run/react-router (@​react-router/node)

v8.5.1

Compare Source

Patch Changes

v8.5.0

Compare Source

Patch Changes
  • Write file session data to a temporary file and rename it into place so concurrent commits of the same session can no longer corrupt its file (#​15620)
    • Preserve existing session file permissions when replacing the file
  • Updated dependencies:
remix-run/react-router (@​react-router/serve)

v8.5.1

Compare Source

Patch Changes

v8.5.0

Compare Source

Unstable Changes

⚠️ Unstable features are not recommended for production use

  • Support API-only builds in react-router-serve by serving client documents and forwarding data and route discovery requests to the React Router runtime (#​15601)
    • Serve prerendered documents when available and use the generated SPA fallback for non-prerendered paths
Patch Changes
remix-run/react-router (react-router)

v8.5.1

Compare Source

Patch Changes
  • Fix URIError: URI malformed when an ssr: false dev server receives a URL path with a malformed percent-encoding (#​15649)
  • Bound server route manifest processing for paths with expensive route expansion (#​15703)
    • Fall back to initial route discovery during server rendering and RSC document/data requests
    • Account for the number and depth of candidate branches when using regex matching
  • Encode commas within paths sent to the lazy route discovery manifest endpoint so routes with commas in their paths are discovered correctly (#​15640)
  • Fix fetcher revalidation errors bubbling to the root error boundary instead of the nearest boundary above the route that owns the fetcher (#​15676)
  • Avoid duplicate history entries when posting a <Form> to the current URL with an encoded action (#​15679)
    • Replace the current history entry when the action contains characters that get percent-encoded, such as spaces or non-ASCII characters
  • Fix an unhandled promise rejection when the browser skips a viewTransition navigation, for example in a hidden tab (#​15582)
  • Bubble rejected lazy.Component imports on loader-less routes to the nearest error boundary (#​15658)
    • Render the error boundary instead of a blank page
  • Preserve pending fetcher mutation revalidation when an older navigation or background reload completes to prevent stale loader data (#​15686)
    • Keep newer fetcher loads cancellable and preserve them when earlier revalidations finish or abort, preventing older responses from overwriting fresh fetcher data
  • Retry rejected lazy route imports instead of caching failures permanently (#​15689)
  • Revalidate loader data when a fetcher action redirect is not followed (#​15557)
    • Revalidate when an action redirect is ignored because a newer navigation started or the fetcher unmounted while the action was running
    • Include shared parent loaders when another navigation completed while the action was running
    • Continue to respect shouldRevalidate
    • Return fetchers to idle when a revalidation completes a pending navigation started by another fetcher's redirect
  • Avoid adding an incompatible document.startViewTransition() overload to the global Document type (#​15680)
    • Allow transition results to be assigned to the DOM ViewTransition type
  • Skip deleteData in destroySession when the session has no ID (#​15639)
    • Avoid failures when destroying a session without a cookie on storage that rejects an empty key
  • Surface the host's 404 response when a SPA fallback route has no prerendered data (#​15646)
    • Request single-fetch .data files for hydrating routes with a server loader in an ssr: false app with a prerender config
    • Avoid the internal "No result found for routeId" error for non-prerendered parameterized paths served via the SPA fallback
  • Improve turbo-stream decoding validation and object property handling (18e1fbd)
Unstable Changes

⚠️ Unstable features are not recommended for production use

  • Add an opt-in <Await unstable_promise={promise}> implementation based on React's use() API (#​15678)
    • Use React.use instead of React Router's internal promise tracking
    • Accept promise-like values and retain errorElement, useAsyncValue, and useAsyncError support
    • Handle only promise rejections with errorElement when using unstable_promise, allowing child render errors to bubble to the nearest React error boundary
    • Track streamed promises during decoding so settled server content stays visible during hydration updates with either Await API or direct React.use()
  • Fix URIError: URI malformed when an API-only (ssr: "unstable_api-only") server receives a URL path with a malformed percent-encoding (#​15649)
  • Fix duplicate headers when throwing a redirect from an RSC server function (#​15667)

v8.5.0

Compare Source

Minor Changes
  • Deprecate React Router's view transition APIs in favor of React's <ViewTransition> component, available in React 19.3 and later (#​15493)
    • Deprecate the viewTransition props/options, useViewTransitionState, and NavLink's isTransitioning render prop and transitioning class
    • Preserve existing behavior, including support for older React versions
    • See the migration guide for a navigation example and compatibility considerations
Patch Changes
  • Fix <Await> failing to server render promises decoded from an RSC payload, which caused the Suspense boundary to switch to client rendering (#​15597)
  • Declare @types/react and @types/react-dom as optional peer dependencies so the shipped type definitions resolve React types under strict (non-hoisted) node_modules layouts (#​15528)
  • Fix the unstable_useRouterState documentation example to call the imported alias (#​15535)
  • Render the HydrateFallback of a route discovered through patchRoutesOnNavigation during initial hydration (#​15537)
    • Routes discovered during initial hydration are now exposed in state.matches while their loaders run, so <RouterProvider> renders down to the discovered route's HydrateFallback instead of rendering nothing
  • Fix router state recovery when updates occur before RouterProvider subscribes, including when other subscribers are already attached, and report current client errors once without replaying server errors during hydration (#​15637)
  • Fix matchPath not treating a static segment as optional when it contains characters outside [\w-] (#​15425)
  • Fix an RSC server crash when a client aborts a document request while the HTML stream waits for the RSC payload (#​15612)
  • Stop revalidating a fetcher after 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

  • Add an unstable_fetch prop to <HydratedRouter> to customize JavaScript-issued manifest and server data requests in conventional Framework Mode (#​15586)
    • The function receives the intended request as well as context identifying the type of request
    • Data request context includes navigationType ("PUSH", "REPLACE", or "POP" for navigation-initiated requests, including reloaded fetchers; null otherwise)
      • Data strategies receive equivalent metadata through unstable_initiator and unstable_navigationType
    • The custom fetch context is a discriminated union, so narrowing type to "navigation" guarantees a non-null navigationType, while other data requests have a null navigationType
      • Fetchers reloaded after an initialization redirect retain the "initialization" type and include their fetcher key
    • Like other router initialization options, the implementation is captured when the singleton router is created and thus subsequent prop changes are ignored
    • Browser-managed data prefetches from <Link prefetch> use native <link rel="prefetch"> elements and do not call the custom implementation
    • Use the callback for custom fetch options, custom headers, safe request retries, or response header inspection
    • Return response bodies unchanged so React Router can decode its manifest and Turbo Stream data protocols
  • Support API-only Framework Mode with runtime server data loading, actions, revalidation, and lazy route discovery (#​15601)
    • Hydrate prerendered pages from build-time data and fetch server loader data when hydrating a SPA fallback
    • Preserve normal loader revalidation and server-action support for eagerly loaded and lazily discovered routes, and honor loader opt-outs when making server data requests
  • Add unstable_useRouteDiscovery for application-controlled route discovery in conventional Framework Mode (#​15602)
    • Discover selected destinations or load the running client's full route manifest without loading route modules
    • Compose manifest-mismatch handlers, with shared recovery and cancellation that preserves application state
    • Keep full-manifest failures catchable without rendering error boundaries, whether mismatch handlers use the hook or event's loadAllRoutes()
    • Cancel pending revalidation alongside a canceled navigation, retaining existing data and settling interrupted fetchers before restoring Back/Forward history
    • Enable future.unstable_customRouteDiscovery to opt in
      • Apps without the flag retain existing discovery behavior
    • Call event.defaultBehavior() from a custom mismatch handler to explicitly run built-in recovery
  • Return middleware short-circuit responses as-is for document requests in RSC modes, including resource routes, instead of decoding non-RSC bodies as Flight (#​15628)
    • Include server middleware in both eager and lazy RSC route configuration types
    • Preserve HTML rendering for cached Flight responses returned by middleware, and pass through raw responses that replace the result of next()

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

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


  • 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 Pull requests that update a dependency file kind: chore labels Oct 20, 2026
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Docs preview: https://pr-2646---react-spring-204644970562.europe-west1.run.app

Deployed at 4e863e9a0a571e325c09493672c032744ebcfe27. Updates on every push.

@renovate
renovate Bot force-pushed the renovate/react-router-monorepo branch from 40192cb to faf483d Compare October 28, 2026 23:27
@renovate renovate Bot changed the title fix(deps): update react-router monorepo to v8.5.0 fix(deps): update react-router monorepo to v8.5.1 Oct 28, 2026
@changeset-bot

changeset-bot Bot commented Oct 28, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: faf483d

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file kind: chore

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants