Skip to content

chore(deps): update dependency react-router to v8.5.0 - #4368

Merged
ScriptedAlchemy merged 16 commits into
masterfrom
renovate/react-router-monorepo
Oct 22, 2026
Merged

ScriptedAlchemy merged 16 commits into
masterfrom
renovate/react-router-monorepo

Conversation

@renovate

@renovate renovate Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
react-router (source) 8.4.0 → 8.5.0 age confidence

Release Notes

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

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

Integration fixes and validation

The branch also carries the shared text-artifact memory-admission and blocked-progress repairs. The latest CI failures in both Linux fleet prebuild and Clippy were the same test compilation error: the native headroom receiver's has_changed() returns bool, so the assertion must use it directly instead of calling .expect(). The correction preserves the notification and recovery assertions.

  • Updated from master and ran root pnpm install for the changed lockfile; supply-chain validation passed.
  • Native Bazel recovery tests: 2 passed, covering retained text admission after headroom release and Ready publication after a finalization refusal.
  • Strict Bazel Clippy for the code-index runtime unit-test target passed with -D warnings; formatting, diff checks, and commit-message validation passed.
  • Full CI on the pushed head is pending.

@changeset-bot

changeset-bot Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 8f422f8

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.

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

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@renovate
renovate Bot force-pushed the renovate/react-router-monorepo branch from 9f75574 to 7891e01 Compare October 20, 2026 18:59
@renovate

renovate Bot commented Oct 20, 2026

Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

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

@ScriptedAlchemy ScriptedAlchemy left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pushed f8db82e after examining both full test artifacts from native job 119088433625: 167/169 targets passed; seven MCP tests and two daemon unit tests timed out waiting for index readiness.

Their last snapshots had sealed source generations but stopped before text-builder initialization. The branch still had the independently confirmed synthetic-margin accounting defect, so this commit reuses #4393's canonical atomic sizing/charging correction and #4379's cgroup-headroom regression. No memory ceiling, timeout, or retry policy is increased.

It also fixes a concrete progress-reporting defect: pre-build ResidentMemoryRefused from either worker admission or artifact admission now publishes the existing ResidentMemory blocked reason through the generation/owner-epoch guarded progress slot. Added a native regression that holds a real ledger reservation, checks repeated refusal with no leaked charge, releases it, observes the canonical headroom notification, and requires the same retained owner to reach Ready with its block cleared. The unit fixture's timeout now includes its existing phase label, distinguishing initial readiness from a later save handoff.

Independent source review, pinned rustfmt, diff checks, and commitlint pass. Native execution remains with fresh CI. The old snapshots and later memory_headroom wakes are consistent with this admission path, but the log contains no contemporaneous memory sample proving these defects caused all nine timeouts.

@ScriptedAlchemy ScriptedAlchemy left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pushed 32fef3e with the same reviewed source/test fix as #4393 for delayed memory refusals overwriting newer text progress.

Artifact refusals publish before their existing projection claim is released; worker-entry refusals are conditional on the unchanged observed progress epoch. The old outer reclassification is removed. Ready rejects stale blocks and clears earlier refusal state after verified query owners are installed. The regression coverage includes newer pending/Ready progress, owner replacement, retained admission recovery, and direct finalized-artifact publication to Ready.

Both changed blobs are identical to #4393's reviewed fix; all other branch content is preserved. Pinned rustfmt, diff checks and commitlint pass. Native tests await fresh Bazel CI; the earlier readiness timeouts are not claimed to be fully explained by the old logs.

@ScriptedAlchemy
ScriptedAlchemy enabled auto-merge (squash) October 22, 2026 00:13
@ScriptedAlchemy
ScriptedAlchemy enabled auto-merge (squash) October 22, 2026 02:18
@ScriptedAlchemy
ScriptedAlchemy merged commit f8e6326 into master Oct 22, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant