# React Router Releases
This page lists all releases/release notes for React Router back to `v6.0.0`. For releases prior to v6, please refer to the [Github Releases Page](https://github.com/remix-run/react-router/releases).
We manage release notes in this file instead of the paginated Github Releases Page for 2 reasons:
- Pagination in the Github UI means that you cannot easily search release notes for a large span of releases at once
- The paginated Github interface also cuts off longer releases notes without indication in list view, and you need to click into the detail view to see the full set of release notes
Table of Contents
- [React Router Releases](#react-router-releases)
- [v7.17.0](#v7170)
- [v7.16.0](#v7160)
- [Stabilized `future.v8_trailingSlashAwareDataRequests`](#stabilized-futurev8_trailingslashawaredatarequests)
- [Pre-v8 Future Flag Warnings](#pre-v8-future-flag-warnings)
- [v7.15.1](#v7151)
- [v7.15.0](#v7150)
- [Stabilizations](#stabilizations)
- [Route matching optimizations](#route-matching-optimizations)
- [v7.14.2](#v7142)
- [v7.14.1](#v7141)
- [v7.14.0](#v7140)
- [v7.13.2](#v7132)
- [Pass-through Requests (unstable)](#pass-through-requests-unstable)
- [Route handlers/middleware `unstable_url` parameter](#route-handlersmiddleware-unstable_url-parameter)
- [v7.13.1](#v7131)
- [URL Masking (unstable)](#url-masking-unstable)
- [v7.13.0](#v7130)
- [v7.12.0](#v7120)
- [v7.11.0](#v7110)
- [`vite preview` Support](#vite-preview-support)
- [Stabilized Client-side `onError`](#stabilized-client-side-onerror)
- [Call-site Revalidation Opt-out (unstable)](#call-site-revalidation-opt-out-unstable)
- [v7.10.1](#v7101)
- [v7.10.0](#v7100)
- [Stabilized `future.v8_splitRouteModules`](#stabilized-futurev8_splitroutemodules)
- [Stabilized `future.v8_viteEnvironmentApi`](#stabilized-futurev8_viteenvironmentapi)
- [Stabilized `fetcher.reset()`](#stabilized-fetcherreset)
- [Stabilized `DataStrategyMatch.shouldCallHandler()`](#stabilized-datastrategymatchshouldcallhandler)
- [v7.9.6](#v796)
- [v7.9.5](#v795)
- [Instrumentation (unstable)](#instrumentation-unstable)
- [v7.9.4](#v794)
- [`useRoute()` (unstable)](#useroute-unstable)
- [v7.9.3](#v793)
- [v7.9.2](#v792)
- [RSC Framework Mode (unstable)](#rsc-framework-mode-unstable)
- [Fetcher Reset (unstable)](#fetcher-reset-unstable)
- [v7.9.1](#v791)
- [v7.9.0](#v790)
- [Stable Middleware and Context APIs](#stable-middleware-and-context-apis)
- [v7.8.2](#v782)
- [v7.8.1](#v781)
- [v7.8.0](#v780)
- [Consistently named `loaderData` values](#consistently-named-loaderdata-values)
- [Improvements/fixes to the middleware APIs (unstable)](#improvementsfixes-to-the-middleware-apis-unstable)
- [v7.7.1](#v771)
- [v7.7.0](#v770)
- [Unstable RSC APIs](#unstable-rsc-apis)
- [v7.6.3](#v763)
- [v7.6.2](#v762)
- [v7.6.1](#v761)
- [v7.6.0](#v760)
- [`routeDiscovery` Config Option](#routediscovery-config-option)
- [Automatic Types for Future Flags](#automatic-types-for-future-flags)
- [v7.5.3](#v753)
- [v7.5.2](#v752)
- [v7.5.1](#v751)
- [v7.5.0](#v750)
- [`route.lazy` Object API](#routelazy-object-api)
- [v7.4.1](#v741)
- [v7.4.0](#v740)
- [v7.3.0](#v730)
- [v7.2.0](#v720)
- [Type-safe `href` utility](#type-safe-href-utility)
- [Prerendering with a SPA Fallback](#prerendering-with-a-spa-fallback)
- [Allow a root `loader` in SPA Mode](#allow-a-root-loader-in-spa-mode)
- [v7.1.5](#v715)
- [v7.1.4](#v714)
- [v7.1.3](#v713)
- [v7.1.2](#v712)
- [v7.1.1](#v711)
- [v7.1.0](#v710)
- [v7.0.2](#v702)
- [v7.0.1](#v701)
- [v7.0.0](#v700)
- [React Router v6 Releases](#react-router-v6-releases)
- [v6.30.3](#v6303)
- [v6.30.2](#v6302)
- [v6.30.1](#v6301)
- [v6.30.0](#v6300)
- [v6.29.0](#v6290)
- [v6.28.2](#v6282)
- [v6.28.1](#v6281)
- [v6.28.0](#v6280)
- [v6.27.0](#v6270)
- [Stabilized APIs](#stabilized-apis)
- [v6.26.2](#v6262)
- [v6.26.1](#v6261)
- [v6.26.0](#v6260)
- [v6.25.1](#v6251)
- [v6.25.0](#v6250)
- [Stabilized `v7_skipActionErrorRevalidation`](#stabilized-v7_skipactionerrorrevalidation)
- [v6.24.1](#v6241)
- [v6.24.0](#v6240)
- [Lazy Route Discovery (a.k.a. "Fog of War")](#lazy-route-discovery-aka-fog-of-war)
- [v6.23.1](#v6231)
- [v6.23.0](#v6230)
- [Data Strategy (unstable)](#data-strategy-unstable)
- [Skip Action Error Revalidation (unstable)](#skip-action-error-revalidation-unstable)
- [v6.22.3](#v6223)
- [v6.22.2](#v6222)
- [v6.22.1](#v6221)
- [v6.22.0](#v6220)
- [Core Web Vitals Technology Report Flag](#core-web-vitals-technology-report-flag)
- [v6.21.3](#v6213)
- [v6.21.2](#v6212)
- [v6.21.1](#v6211)
- [v6.21.0](#v6210)
- [`future.v7_relativeSplatPath`](#futurev7_relativesplatpath)
- [Partial Hydration](#partial-hydration)
- [v6.20.1](#v6201)
- [v6.20.0](#v6200)
- [v6.19.0](#v6190)
- [`unstable_flushSync` API](#unstable_flushsync-api)
- [v6.18.0](#v6180)
- [New Fetcher APIs](#new-fetcher-apis)
- [Persistence Future Flag (`future.v7_fetcherPersist`)](#persistence-future-flag-futurev7_fetcherpersist)
- [v6.17.0](#v6170)
- [View Transitions 🚀](#view-transitions)
- [v6.16.0](#v6160)
- [v6.15.0](#v6150)
- [v6.14.2](#v6142)
- [v6.14.1](#v6141)
- [v6.14.0](#v6140)
- [JSON/Text Submissions](#jsontext-submissions)
- [v6.13.0](#v6130)
- [`future.v7_startTransition`](#futurev7_starttransition)
- [v6.12.1](#v6121)
- [v6.12.0](#v6120)
- [`React.startTransition` support](#reactstarttransition-support)
- [v6.11.2](#v6112)
- [v6.11.1](#v6111)
- [v6.11.0](#v6110)
- [v6.10.0](#v6100)
- [v6.9.0](#v690)
- [`Component`/`ErrorBoundary` route properties](#componenterrorboundary-route-properties)
- [Introducing Lazy Route Modules](#introducing-lazy-route-modules)
- [v6.8.2](#v682)
- [v6.8.1](#v681)
- [v6.8.0](#v680)
- [v6.7.0](#v670)
- [v6.6.2](#v662)
- [v6.6.1](#v661)
- [v6.6.0](#v660)
- [v6.5.0](#v650)
- [v6.4.5](#v645)
- [v6.4.4](#v644)
- [v6.4.3](#v643)
- [v6.4.2](#v642)
- [v6.4.1](#v641)
- [v6.4.0](#v640)
- [Remix Data APIs](#remix-data-apis)
- [v6.3.0](#v630)
- [v6.2.2](#v622)
- [v6.2.1](#v621)
- [v6.2.0](#v620)
- [v6.1.1](#v611)
- [v6.1.0](#v610)
- [v6.0.2](#v602)
- [v6.0.1](#v601)
- [v6.0.0](#v600)
## v7.17.0
Date: 2026-06-04
### Minor Changes
- `react-router` - Ship a subset of the official documentation inside the `react-router` package ([#15121](https://github.com/remix-run/react-router/pull/15121))
- Markdown docs are now available in `node_modules/react-router/docs`, letting AI coding agents and the React Router agent skills read official docs locally
- Excludes auto-generated API docs (`api/`), `community/` content, and tutorials (`tutorials/`)
### Patch Changes
- `@react-router/dev` - Fix future flag warning URLs and only log each future flag warning one time ([#15138](https://github.com/remix-run/react-router/pull/15138))
### Unstable Changes
⚠️ _[Unstable features](https://reactrouter.com/community/api-development-strategy#unstable-flags) are not recommended for production use_
- `@react-router/dev` - Prevent RSC route module server exports from being scanned by the client dependency optimizer when `future.unstable_optimizeDeps` is enabled. ([#15005](https://github.com/remix-run/react-router/pull/15005))
**Full Changelog**: [`v7.16.0...v7.17.0`](https://github.com/remix-run/react-router/compare/react-router@7.16.0...react-router@7.17.0)
## v7.16.0
Date: 2026-05-28
### What's Changed
#### Stabilized `future.v8_trailingSlashAwareDataRequests`
We've stabilized this flag in preparation for the upcoming v8 release. Unless you are doing specific path-inspection on `.data` requests or have specific CDN/caching/pre-rendering logic around `.data` requests, this should largely be a zero-code-change adoptions. Please see the [docs](https://reactrouter.com/upgrading/future#futurev8_trailingslashawaredatarequests) for more info.
#### Pre-v8 Future Flag Warnings
In preparation for the upcoming v8 release, `7.16.0` begins logging console warnings during builds for future flags that you have not enabled yet. If you have all future flags enabled, the v8 upgrade should be mostly non-breaking (short of some underlying dependency minimum versions bumps - React 19, Node 22.12, Vite 7). You can suppress these warnings until you are ready top adopt flags by setting an explicit `false` in your `react-router.config.ts`.
### Minor Changes
- `react-router` - Stabilize `future.unstable_trailingSlashAwareDataRequests` as `future.v8_trailingSlashAwareDataRequests` ([#15098](https://github.com/remix-run/react-router/pull/15098))
- `@react-router/dev` - Log future flag warnings for upcoming React Router v8 flags ([#15029](https://github.com/remix-run/react-router/pull/15029))
- `v8_middleware`, `v8_splitRouteModules`, `v8_viteEnvironmentApi`, `v8_passThroughRequests`, `v8_trailingSlashAwareDataRequests`
### Patch Changes
- `react-router` - Disable manifest path when lazy route discovery is disabled ([#15068](https://github.com/remix-run/react-router/pull/15068))
- `react-router` - Fix browser URL creation to use the configured history `window` instead of the global `window` ([#15066](https://github.com/remix-run/react-router/pull/15066))
- Pass the history/router window through to `createBrowserURLImpl` so custom window contexts keep the correct URL origin.
- `react-router` - Fix `useNavigation()` return type to preserve discriminated union across navigation states ([#15095](https://github.com/remix-run/react-router/pull/15095))
- `react-router` - Widen `MetaDescriptor` `script:ld+json` type from `LdJsonObject` to `LdJsonObject | LdJsonObject[]` to permit multiple JSON-LD schemas in a single `