Skip to content

Update react-router-dom 7.14.1 → 7.15.0 (minor)#404

Merged
fatadel merged 1 commit into
masterfrom
depfu/update/yarn/react-router-dom-7.15.0
May 13, 2026
Merged

Update react-router-dom 7.14.1 → 7.15.0 (minor)#404
fatadel merged 1 commit into
masterfrom
depfu/update/yarn/react-router-dom-7.15.0

Conversation

@depfu
Copy link
Copy Markdown

@depfu depfu Bot commented May 12, 2026

Here is everything you need to know about this upgrade. Please take a good look at what changed and the test results before merging this pull request.

What changed?

✳️ react-router-dom (7.14.1 → 7.15.0) · Repo · Changelog

Release Notes

7.15.0 (from changelog)

Date: 2026-05-05

What's Changed

Stabilizations

We've stabilized a bunch of APIs in this release in preparation for a React Router v8 release hopefully in the next month or two. These flag/prop renames are breaking changes if you've already opted into the unstable APIs so please make sure you make the appropriate changes if so.

  • future.unstable_passThroughRequestsfuture.v8_passThroughRequests
  • future.unstable_subResourceIntegrity → top-level config.subResourceIntegrity
  • prerender.unstable_concurrencyprerender.concurrency
  • unstable_urlurl (loader, action, middleware, instrumentation args)
  • unstable_instrumentationsinstrumentations
    • Plus associated types (ServerInstrumentation, ClientInstrumentation, etc.)
  • unstable_patternpattern (loader, action, middleware, instrumentation args)
  • unstable_defaultShouldRevalidatedefaultShouldRevalidate
  • unstable_useTransitionsuseTransitions
  • unstable_maskmask (on <Link>, useLinkClickHandler, useNavigate, and Location)

Route matching optimizations

We've added a handful of route matching optimizations in this release for Framework and Data mode. The changes are mostly related to caching the internal flattened/ranked route branches and reducing additional calls to matchRoutes along the critical path. This should result in improved performance during both server-side request handling and client-side navigations.

Minor Changes

  • react-router - Stabilize unstable_defaultShouldRevalidate as defaultShouldRevalidate on <Link>, <Form>, useLinkClickHandler, useSubmit, fetcher.submit, and setSearchParams (14999)
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • react-router - Stabilize the instrumentation APIs (14999)
    • unstable_instrumentations is now instrumentations
    • unstable_pattern is now pattern
    • The unstable_ServerInstrumentation, unstable_ClientInstrumentation, unstable_InstrumentRequestHandlerFunction, unstable_InstrumentRouterFunction, unstable_InstrumentRouteFunction, and unstable_InstrumentationHandlerResult types have had their unstable_ prefixes removed
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • react-router - Stabilize unstable_mask as mask on <Link>, useLinkClickHandler, and useNavigate, and rename the corresponding Location.unstable_mask field to Location.mask (14999)
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • react-router - Stabilize the unstable_normalizePath option on staticHandler.query and staticHandler.queryRoute as normalizePath (14999)
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • react-router - Stabilize future.unstable_passThroughRequests as future.v8_passThroughRequests (14999)
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • react-router - Remove unstable_subResourceIntegrity from the runtime FutureConfig type; the flag is now controlled by the top-level subResourceIntegrity option in react-router.config.ts (14999)
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • react-router - Stabilize unstable_url as url on loader, action, and middleware function args (14999)
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • react-router - Stabilize unstable_useTransitions as useTransitions on <BrowserRouter>, <HashRouter>, <HistoryRouter>, <MemoryRouter>, <Router>, <RouterProvider>, <HydratedRouter>, and useLinkClickHandler (14999)
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • @react-router/dev - Stabilize future.unstable_passThroughRequests as future.v8_passThroughRequests (14999)
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • @react-router/dev - Stabilize prerender.unstable_concurrency as prerender.concurrency (14999)
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • @react-router/dev - Stabilize future.unstable_subResourceIntegrity as a top-level subResourceIntegrity config option in react-router.config.ts (14999)
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly

Patch Changes

  • react-router - Add nonce to <Scripts> <link rel="modulepreload"> elements (if provided) (af5d49b)
  • react-router - Fix a bug with unstable_defaultShouldRevalidate={false} where parent routes that did not export a shouldRevalidate function could be incorrectly included in the single fetch call for new child route data (#15012)
  • react-router - Mark mask as an optional field in Location for easier mocking in unit tests (#14999)
  • react-router - Improve server-side route matching performance by pre-computing flattened/cached route branches (#14967) (af5d49b)
    • Performance benchmarks showed roughly a 10-15% improvement in server-side request handling performance
  • react-router - Cache flattened/ranked route branches to optimize server-side route matching (#14967)
  • react-router - Improve route matching performance in Framework/Data Mode (#14971) (af5d49b)
    • Avoiding unnecessary calls to matchRoutes in data router scenarios
      • This includes adding back the optimization that was removed in 7.6.0 (#13562)
      • The issues that prompted the revert have been addressed by using the available router matches but always updating match.route to the latest route in the manifest
    • Leverage pre-computed pre-computing flattened/cached route branches during client side route matching
    • Performance benchmarks showed roughly a 15-30% improvement in server-side request handling performance

Full Changelog: v7.14.2...v7.15.0

7.14.2 (from changelog)

Date: 2026-04-21

Patch Changes

  • react-router - Remove the un-documented custom error serialization logic from the internal turbo-stream implementation. React Router only automatically handles serialization of Error and it's standard subtypes (SyntaxError, TypeError, etc.). (#14992)

  • react-router - Properly handle parent middleware redirects during fetcher.load (#14974)

  • react-router - Remove redundant Omit<RouterProviderProps, "flushSync"> from react-router/dom RouterProvider (#14874)

  • react-router - Improved types for generatePath's param arg (#14984)

    • Type errors when required params are omitted:

      // Before
      // Passes type checks, but throws at runtime 💥
      generatePath(":required", { required: null });

      // After
      generatePath(":required", { required: null });
      // ^^^^^^^^ Type 'null' is not assignable to type 'string'.ts(2322)

    • Allow omission of optional params:

      // Before
      generatePath(":optional?", {});
      // ^^ Property 'optional' is missing in type '{}' but required in type '{ optional: string | null | undefined; }'.ts(2741)

      // After
      generatePath(":optional?", {});

    • Allows extra keys:

      // Before
      generatePath(":a", { a: "1", b: "2" });
      // ^ Object literal may only specify known properties, and 'b' does not exist in type '{ a: string; }'.ts(2353)

      // After
      generatePath(":a", { a: "1", b: "2" });

  • @react-router/dev - Fix typegen for layouts without pages (#14875)

    • Previously, typegen could produce pages: ; in .react-router/types/+routes.ts when a route corresponded to 0 pages
    • Now, pages: never; is correctly generated for those cases

Unstable Changes

⚠️ Unstable features are not recommended for production use

  • @react-router/dev - For unstable_reactRouterRSC Vite plugin consumers, require @vitejs/plugin-react in user Vite config, and more reliably split route modules (#14965)
    • ⚠️ This is a breaking change if you have begun using the unstable_reactRouterRSC Vite plugin - please install @vitejs/plugin-react and add the react plugin to your Vite plugins array.

Full Changelog: v7.14.1...v7.14.2

Does any of this look wrong? Please let us know.


Depfu Status

Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with @depfu rebase.

All Depfu comment commands
@​depfu rebase
Rebases against your default branch and redoes this update
@​depfu recreate
Recreates this PR, overwriting any edits that you've made to it
@​depfu merge
Merges this PR once your tests are passing and conflicts are resolved
@​depfu cancel merge
Cancels automatic merging of this PR
@​depfu close
Closes this PR and deletes the branch
@​depfu reopen
Restores the branch and reopens this PR (if it's closed)
@​depfu pause
Ignores all future updates for this dependency and closes this PR
@​depfu pause [minor|major]
Ignores all future minor/major updates for this dependency and closes this PR
@​depfu resume
Future versions of this dependency will create PRs again (leaves this PR as is)

@depfu depfu Bot requested review from canova and fatadel as code owners May 12, 2026 14:55
@depfu depfu Bot added the dependencies Pull requests that update a dependency file label May 12, 2026
@netlify
Copy link
Copy Markdown

netlify Bot commented May 12, 2026

Deploy Preview for firefox-devtools-react-contextmenu ready!

Name Link
🔨 Latest commit 4a81b16
🔍 Latest deploy log https://app.netlify.com/projects/firefox-devtools-react-contextmenu/deploys/6a033f631e01c10008ab9808
😎 Deploy Preview https://deploy-preview-404--firefox-devtools-react-contextmenu.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@fatadel fatadel merged commit 51e7820 into master May 13, 2026
6 checks passed
@depfu depfu Bot deleted the depfu/update/yarn/react-router-dom-7.15.0 branch May 13, 2026 18:17
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant