# 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)
- [v6.30.4](#v6304)
- [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)
## v6.30.4
Date: 2026-05-29
### Patch Changes
- `@remix-run/router` - Lift `decodePath` call out of hot path during route matching ([#15119](https://github.com/remix-run/react-router/pull/15119))
- `@remix-run/router` - Normalize double slashes in redirect paths ([#15118](https://github.com/remix-run/react-router/pull/15118))
**Full Changelog**: [`v6.30.3...v6.30.4`](https://github.com/remix-run/react-router/compare/react-router@6.30.3...react-router@6.30.4)
## v6.30.3
Date: 2026-01-07
### Security Notice
This release addresses 1 security vulnerability:
- [XSS via Open Redirects](https://github.com/remix-run/react-router/security/advisories/GHSA-2w69-qvjg-hvjx)
### Patch Changes
- Validate redirect locations ([#14707](https://github.com/remix-run/react-router/pull/14707))
**Full Changelog**: [`v6.30.2...v6.30.3`](https://github.com/remix-run/react-router/compare/react-router@6.30.2...react-router@6.30.3)
## v6.30.2
Date: 2025-11-13
### Patch Changes
- Normalize double-slashes in `resolvePath` ([#14537](https://github.com/remix-run/react-router/pull/14537))
**Full Changelog**: [`v6.30.1...v6.30.2`](https://github.com/remix-run/react-router/compare/react-router@6.30.1...react-router@6.30.2)
## v6.30.1
Date: 2025-05-20
### Patch Changes
- Partially revert optimization added in `6.29.0` to reduce calls to `matchRoutes` because it surfaced other issues ([#13623](https://github.com/remix-run/react-router/pull/13623))
- Stop logging invalid warning when `v7_relativeSplatPath` is set to `false` ([#13502](https://github.com/remix-run/react-router/pull/13502))
**Full Changelog**: [`v6.30.0...v6.30.1`](https://github.com/remix-run/react-router/compare/react-router@6.30.0...react-router@6.30.1)
## v6.30.0
Date: 2025-02-27
### Minor Changes
- Add `fetcherKey` as a parameter to `patchRoutesOnNavigation` ([#13109](https://github.com/remix-run/react-router/pull/13109))
### Patch Changes
- Fix regression introduced in `6.29.0` via [#12169](https://github.com/remix-run/react-router/pull/12169) that caused issues navigating to hash routes inside splat routes for applications using Lazy Route Discovery (`patchRoutesOnNavigation`) ([#13108](https://github.com/remix-run/react-router/pull/13108))
**Full Changelog**: [`v6.29.0...v6.30.0`](https://github.com/remix-run/react-router/compare/react-router@6.29.0...react-router@6.30.0)
## v6.29.0
Date: 2025-01-30
### Minor Changes
- Provide the request `signal` as a parameter to `patchRoutesOnNavigation` ([#12900](https://github.com/remix-run/react-router/pull/12900))
- This can be used to abort any manifest fetches if the in-flight navigation/fetcher is aborted
### Patch Changes
- Do not log v7 deprecation warnings in production builds ([#12794](https://github.com/remix-run/react-router/pull/12794))
- Properly bubble headers when throwing a `data()` result ([#12845](https://github.com/remix-run/react-router/pull/12845))
- Optimize route matching by skipping redundant `matchRoutes` calls when possible ([#12169](https://github.com/remix-run/react-router/pull/12169))
- Strip search parameters from `patchRoutesOnNavigation` `path` param for fetcher calls ([#12899](https://github.com/remix-run/react-router/pull/12899))
**Full Changelog**: [`v6.28.2...v6.29.0`](https://github.com/remix-run/react-router/compare/react-router@6.28.2...react-router@6.29.0)
## v6.28.2
Date: 2025-01-16
### Patch Changes
- Fix manual fetcher `key` usage when not opted into `future.v7_fetcherPersist` ([#12674](https://github.com/remix-run/react-router/pull/12674))
- Fix issue with fetcher data cleanup in the data layer on fetcher unmount ([#12674](https://github.com/remix-run/react-router/pull/12674))
**Full Changelog**: [`v6.28.1...v6.28.2`](https://github.com/remix-run/react-router/compare/react-router@6.28.1...react-router@6.28.2)
## v6.28.1
Date: 2024-12-20
### Patch Changes
- Allow users to opt out of v7 deprecation warnings by setting flags to `false` ([#12441](https://github.com/remix-run/react-router/pull/12441))
**Full Changelog**: [`v6.28.0...v6.28.1`](https://github.com/remix-run/react-router/compare/react-router@6.28.0...react-router@6.28.1)
## v6.28.0
Date: 2024-11-06
### What's Changed
- In preparation for v7 we've added deprecation warnings for any future flags that you have not yet opted into. Please use the flags to better prepare for eventually upgrading to v7.
### Minor Changes
- Log deprecation warnings for v7 flags ([#11750](https://github.com/remix-run/react-router/pull/11750))
- Add deprecation warnings to `json`/`defer` in favor of returning raw objects
- These methods will be removed in React Router v7
### Patch Changes
- Update JSDoc URLs for new website structure (add /v6/ segment) ([#12141](https://github.com/remix-run/react-router/pull/12141))
**Full Changelog**: [`v6.27.0...v6.28.0`](https://github.com/remix-run/react-router/compare/react-router@6.27.0...react-router@6.28.0)
## v6.27.0
Date: 2024-10-11
### What's Changed
#### Stabilized APIs
This release stabilizes a handful of "unstable" APIs in preparation for the [pending](https://x.com/remix_run/status/1841926034868077009) React Router v7 release (see [these](https://remix.run/blog/merging-remix-and-react-router) [posts](https://remix.run/blog/incremental-path-to-react-19) for more info):
- `unstable_dataStrategy` β `dataStrategy` (`createBrowserRouter` and friends) ([Docs](https://reactrouter.com/v6/routers/create-browser-router#optsdatastrategy))
- `unstable_patchRoutesOnNavigation` β `patchRoutesOnNavigation` (`createBrowserRouter` and friends) ([Docs](https://reactrouter.com/v6/routers/create-browser-router#optspatchroutesonnavigation))
- `unstable_flushSync` β `flushSync` (`useSubmit`, `fetcher.load`, `fetcher.submit`) ([Docs](https://reactrouter.com/v6/hooks/use-submit#optionsflushsync))
- `unstable_viewTransition` β `viewTransition` (``, `