diff --git a/CHANGELOG.md b/CHANGELOG.md index de08d367e7..09263546d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,196 +13,198 @@ We manage release notes in this file instead of the paginated Github Releases Pa Table of Contents - [React Router Releases](#react-router-releases) + - [v6.30.1](#v6301) + - [Patch Changes](#patch-changes) - [v6.30.0](#v6300) - [Minor Changes](#minor-changes) - - [Patch Changes](#patch-changes) + - [Patch Changes](#patch-changes-1) - [v6.29.0](#v6290) - [Minor Changes](#minor-changes-1) - - [Patch Changes](#patch-changes-1) - - [v6.28.2](#v6282) - [Patch Changes](#patch-changes-2) - - [v6.28.1](#v6281) + - [v6.28.2](#v6282) - [Patch Changes](#patch-changes-3) + - [v6.28.1](#v6281) + - [Patch Changes](#patch-changes-4) - [v6.28.0](#v6280) - [What's Changed](#whats-changed) - [Minor Changes](#minor-changes-2) - - [Patch Changes](#patch-changes-4) + - [Patch Changes](#patch-changes-5) - [v6.27.0](#v6270) - [What's Changed](#whats-changed-1) - [Stabilized APIs](#stabilized-apis) - [Minor Changes](#minor-changes-3) - - [Patch Changes](#patch-changes-5) - - [v6.26.2](#v6262) - [Patch Changes](#patch-changes-6) - - [v6.26.1](#v6261) + - [v6.26.2](#v6262) - [Patch Changes](#patch-changes-7) + - [v6.26.1](#v6261) + - [Patch Changes](#patch-changes-8) - [v6.26.0](#v6260) - [Minor Changes](#minor-changes-4) - - [Patch Changes](#patch-changes-8) - - [v6.25.1](#v6251) - [Patch Changes](#patch-changes-9) + - [v6.25.1](#v6251) + - [Patch Changes](#patch-changes-10) - [v6.25.0](#v6250) - [What's Changed](#whats-changed-2) - [Stabilized `v7_skipActionErrorRevalidation`](#stabilized-v7_skipactionerrorrevalidation) - [Minor Changes](#minor-changes-5) - - [Patch Changes](#patch-changes-10) - - [v6.24.1](#v6241) - [Patch Changes](#patch-changes-11) + - [v6.24.1](#v6241) + - [Patch Changes](#patch-changes-12) - [v6.24.0](#v6240) - [What's Changed](#whats-changed-3) - [Lazy Route Discovery (a.k.a. "Fog of War")](#lazy-route-discovery-aka-fog-of-war) - [Minor Changes](#minor-changes-6) - - [Patch Changes](#patch-changes-12) - - [v6.23.1](#v6231) - [Patch Changes](#patch-changes-13) + - [v6.23.1](#v6231) + - [Patch Changes](#patch-changes-14) - [v6.23.0](#v6230) - [What's Changed](#whats-changed-4) - [Data Strategy (unstable)](#data-strategy-unstable) - [Skip Action Error Revalidation (unstable)](#skip-action-error-revalidation-unstable) - [Minor Changes](#minor-changes-7) - [v6.22.3](#v6223) - - [Patch Changes](#patch-changes-14) - - [v6.22.2](#v6222) - [Patch Changes](#patch-changes-15) - - [v6.22.1](#v6221) + - [v6.22.2](#v6222) - [Patch Changes](#patch-changes-16) + - [v6.22.1](#v6221) + - [Patch Changes](#patch-changes-17) - [v6.22.0](#v6220) - [What's Changed](#whats-changed-5) - [Core Web Vitals Technology Report Flag](#core-web-vitals-technology-report-flag) - [Minor Changes](#minor-changes-8) - - [Patch Changes](#patch-changes-17) - - [v6.21.3](#v6213) - [Patch Changes](#patch-changes-18) - - [v6.21.2](#v6212) + - [v6.21.3](#v6213) - [Patch Changes](#patch-changes-19) - - [v6.21.1](#v6211) + - [v6.21.2](#v6212) - [Patch Changes](#patch-changes-20) + - [v6.21.1](#v6211) + - [Patch Changes](#patch-changes-21) - [v6.21.0](#v6210) - [What's Changed](#whats-changed-6) - [`future.v7_relativeSplatPath`](#futurev7_relativesplatpath) - [Partial Hydration](#partial-hydration) - [Minor Changes](#minor-changes-9) - - [Patch Changes](#patch-changes-21) - - [v6.20.1](#v6201) - [Patch Changes](#patch-changes-22) + - [v6.20.1](#v6201) + - [Patch Changes](#patch-changes-23) - [v6.20.0](#v6200) - [Minor Changes](#minor-changes-10) - - [Patch Changes](#patch-changes-23) + - [Patch Changes](#patch-changes-24) - [v6.19.0](#v6190) - [What's Changed](#whats-changed-7) - [`unstable_flushSync` API](#unstable_flushsync-api) - [Minor Changes](#minor-changes-11) - - [Patch Changes](#patch-changes-24) + - [Patch Changes](#patch-changes-25) - [v6.18.0](#v6180) - [What's Changed](#whats-changed-8) - [New Fetcher APIs](#new-fetcher-apis) - [Persistence Future Flag (`future.v7_fetcherPersist`)](#persistence-future-flag-futurev7_fetcherpersist) - [Minor Changes](#minor-changes-12) - - [Patch Changes](#patch-changes-25) + - [Patch Changes](#patch-changes-26) - [v6.17.0](#v6170) - [What's Changed](#whats-changed-9) - [View Transitions 🚀](#view-transitions-) - [Minor Changes](#minor-changes-13) - - [Patch Changes](#patch-changes-26) + - [Patch Changes](#patch-changes-27) - [v6.16.0](#v6160) - [Minor Changes](#minor-changes-14) - - [Patch Changes](#patch-changes-27) + - [Patch Changes](#patch-changes-28) - [v6.15.0](#v6150) - [Minor Changes](#minor-changes-15) - - [Patch Changes](#patch-changes-28) - - [v6.14.2](#v6142) - [Patch Changes](#patch-changes-29) - - [v6.14.1](#v6141) + - [v6.14.2](#v6142) - [Patch Changes](#patch-changes-30) + - [v6.14.1](#v6141) + - [Patch Changes](#patch-changes-31) - [v6.14.0](#v6140) - [What's Changed](#whats-changed-10) - [JSON/Text Submissions](#jsontext-submissions) - [Minor Changes](#minor-changes-16) - - [Patch Changes](#patch-changes-31) + - [Patch Changes](#patch-changes-32) - [v6.13.0](#v6130) - [What's Changed](#whats-changed-11) - [`future.v7_startTransition`](#futurev7_starttransition) - [Minor Changes](#minor-changes-17) - - [Patch Changes](#patch-changes-32) - - [v6.12.1](#v6121) - [Patch Changes](#patch-changes-33) + - [v6.12.1](#v6121) + - [Patch Changes](#patch-changes-34) - [v6.12.0](#v6120) - [What's Changed](#whats-changed-12) - [`React.startTransition` support](#reactstarttransition-support) - [Minor Changes](#minor-changes-18) - - [Patch Changes](#patch-changes-34) - - [v6.11.2](#v6112) - [Patch Changes](#patch-changes-35) - - [v6.11.1](#v6111) + - [v6.11.2](#v6112) - [Patch Changes](#patch-changes-36) + - [v6.11.1](#v6111) + - [Patch Changes](#patch-changes-37) - [v6.11.0](#v6110) - [Minor Changes](#minor-changes-19) - - [Patch Changes](#patch-changes-37) + - [Patch Changes](#patch-changes-38) - [v6.10.0](#v6100) - [What's Changed](#whats-changed-13) - [Minor Changes](#minor-changes-20) - [`future.v7_normalizeFormMethod`](#futurev7_normalizeformmethod) - - [Patch Changes](#patch-changes-38) + - [Patch Changes](#patch-changes-39) - [v6.9.0](#v690) - [What's Changed](#whats-changed-14) - [`Component`/`ErrorBoundary` route properties](#componenterrorboundary-route-properties) - [Introducing Lazy Route Modules](#introducing-lazy-route-modules) - [Minor Changes](#minor-changes-21) - - [Patch Changes](#patch-changes-39) - - [v6.8.2](#v682) - [Patch Changes](#patch-changes-40) - - [v6.8.1](#v681) + - [v6.8.2](#v682) - [Patch Changes](#patch-changes-41) + - [v6.8.1](#v681) + - [Patch Changes](#patch-changes-42) - [v6.8.0](#v680) - [Minor Changes](#minor-changes-22) - - [Patch Changes](#patch-changes-42) + - [Patch Changes](#patch-changes-43) - [v6.7.0](#v670) - [Minor Changes](#minor-changes-23) - - [Patch Changes](#patch-changes-43) - - [v6.6.2](#v662) - [Patch Changes](#patch-changes-44) - - [v6.6.1](#v661) + - [v6.6.2](#v662) - [Patch Changes](#patch-changes-45) + - [v6.6.1](#v661) + - [Patch Changes](#patch-changes-46) - [v6.6.0](#v660) - [What's Changed](#whats-changed-15) - [Minor Changes](#minor-changes-24) - - [Patch Changes](#patch-changes-46) + - [Patch Changes](#patch-changes-47) - [v6.5.0](#v650) - [What's Changed](#whats-changed-16) - [Minor Changes](#minor-changes-25) - - [Patch Changes](#patch-changes-47) - - [v6.4.5](#v645) - [Patch Changes](#patch-changes-48) - - [v6.4.4](#v644) + - [v6.4.5](#v645) - [Patch Changes](#patch-changes-49) - - [v6.4.3](#v643) + - [v6.4.4](#v644) - [Patch Changes](#patch-changes-50) - - [v6.4.2](#v642) + - [v6.4.3](#v643) - [Patch Changes](#patch-changes-51) - - [v6.4.1](#v641) + - [v6.4.2](#v642) - [Patch Changes](#patch-changes-52) + - [v6.4.1](#v641) + - [Patch Changes](#patch-changes-53) - [v6.4.0](#v640) - [What's Changed](#whats-changed-17) - [Remix Data APIs](#remix-data-apis) - - [Patch Changes](#patch-changes-53) + - [Patch Changes](#patch-changes-54) - [v6.3.0](#v630) - [Minor Changes](#minor-changes-26) - [v6.2.2](#v622) - - [Patch Changes](#patch-changes-54) - - [v6.2.1](#v621) - [Patch Changes](#patch-changes-55) + - [v6.2.1](#v621) + - [Patch Changes](#patch-changes-56) - [v6.2.0](#v620) - [Minor Changes](#minor-changes-27) - - [Patch Changes](#patch-changes-56) - - [v6.1.1](#v611) - [Patch Changes](#patch-changes-57) + - [v6.1.1](#v611) + - [Patch Changes](#patch-changes-58) - [v6.1.0](#v610) - [Minor Changes](#minor-changes-28) - - [Patch Changes](#patch-changes-58) - - [v6.0.2](#v602) - [Patch Changes](#patch-changes-59) - - [v6.0.1](#v601) + - [v6.0.2](#v602) - [Patch Changes](#patch-changes-60) + - [v6.0.1](#v601) + - [Patch Changes](#patch-changes-61) - [v6.0.0](#v600) @@ -226,6 +228,17 @@ Date: YYYY-MM-DD **Full Changelog**: [`v6.X.Y...v6.X.Y`](https://github.com/remix-run/react-router/compare/react-router@6.X.Y...react-router@6.X.Y) --> +## 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 diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 8dcc97c98c..1d06adb318 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -108,18 +108,8 @@ Hotfix releases follow the same process as standard releases above, but the `rel - Once the stable release is out: - Merge `release-v6` back to `v6` with a **Normal Merge** - **Do not** merge `release-v6` to `main` - - Copy the updated root `CHANGELOG.md` entries for the `6.X.Y` release to `main` and `dev` - - `git checkout main` - - `git diff react-router@6.X.Y...react-router@6.X.Y -- "***CHANGELOG.md" > ./docs.patch` - - `git apply ./docs.patch` - - `git checkout dev` - - `git apply ./docs.patch` - - `rm ./docs.patch` - - Copy the docs changes to `main` so they show up on the live docs site for v6 - - `git checkout main` - - `git diff react-router@6.X.Y...react-router@6.X.Y docs/ > ./docs.patch` - - `git apply ./docs.patch` - - `rm ./docs.patch` + - Manually copy the new root `CHANGELOG.md` entry to `main` and `dev` + - We don't worry about backporting individual `packages/*/CHANGELOG.md` updates to `main` for subsequent v6 releases - The _code_ changes should already be in the `dev` branch - This should have happened at the time the v6 change was made (except for changes such as deprecation warnings) - Confirm that the commits in this release are all included in `dev` already, and if not you can manually bring them over by cherry-picking the commit or re-doing the work diff --git a/build.utils.d.ts b/build.utils.d.ts new file mode 100644 index 0000000000..575cd77216 --- /dev/null +++ b/build.utils.d.ts @@ -0,0 +1 @@ +export declare function createBanner(packageName: string, version: string): string; diff --git a/contributors.yml b/contributors.yml index c6771a6f62..65f570562c 100644 --- a/contributors.yml +++ b/contributors.yml @@ -155,6 +155,7 @@ - KutnerUri - kylegirard - landisdesign +- laryro - latin-1 - lequangdongg - liuhanqu diff --git a/docs/hooks/use-blocker.md b/docs/hooks/use-blocker.md index e3c7600ba8..b86cddf03f 100644 --- a/docs/hooks/use-blocker.md +++ b/docs/hooks/use-blocker.md @@ -60,6 +60,8 @@ enum HistoryAction { The `useBlocker` hook allows you to prevent the user from navigating away from the current location, and present them with a custom UI to allow them to confirm the navigation. +This feature only works if using a data router, see [Picking a Router][pickingarouter] + This only works for client-side navigations within your React Router application and will not block document requests. To prevent document navigations you will need to add your own `beforeunload` event handler. @@ -134,3 +136,4 @@ When in a `blocked` state, you may call `blocker.proceed()` to proceed to the bl When in a `blocked` state, you may call `blocker.reset()` to return the blocker back to an `unblocked` state and leave the user at the current location. [example]: https://github.com/remix-run/react-router/tree/main/examples/navigation-blocking +[pickingarouter]: ../routers/picking-a-router diff --git a/packages/react-router-dom-v5-compat/CHANGELOG.md b/packages/react-router-dom-v5-compat/CHANGELOG.md index 447942328d..a3e80169b1 100644 --- a/packages/react-router-dom-v5-compat/CHANGELOG.md +++ b/packages/react-router-dom-v5-compat/CHANGELOG.md @@ -1,5 +1,13 @@ # `react-router-dom-v5-compat` +## 6.30.1 + +### Patch Changes + +- Updated dependencies: + - `react-router@6.30.1` + - `react-router-dom@6.30.1` + ## 6.30.0 ### Patch Changes diff --git a/packages/react-router-dom-v5-compat/package.json b/packages/react-router-dom-v5-compat/package.json index 2c259e573b..14457b5bae 100644 --- a/packages/react-router-dom-v5-compat/package.json +++ b/packages/react-router-dom-v5-compat/package.json @@ -1,6 +1,6 @@ { "name": "react-router-dom-v5-compat", - "version": "6.30.0", + "version": "6.30.1", "description": "Migration path to React Router v6 from v4/5", "keywords": [ "react", diff --git a/packages/react-router-dom/CHANGELOG.md b/packages/react-router-dom/CHANGELOG.md index 75993ea135..1514ddbbb7 100644 --- a/packages/react-router-dom/CHANGELOG.md +++ b/packages/react-router-dom/CHANGELOG.md @@ -1,5 +1,12 @@ # `react-router-dom` +## 6.30.1 + +### Patch Changes + +- Updated dependencies: + - `react-router@6.30.1` + ## 6.30.0 ### Minor Changes diff --git a/packages/react-router-dom/package.json b/packages/react-router-dom/package.json index d760e8d988..7aa4da072c 100644 --- a/packages/react-router-dom/package.json +++ b/packages/react-router-dom/package.json @@ -1,6 +1,6 @@ { "name": "react-router-dom", - "version": "6.30.0", + "version": "6.30.1", "description": "Declarative routing for React web applications", "keywords": [ "react", diff --git a/packages/react-router-native/CHANGELOG.md b/packages/react-router-native/CHANGELOG.md index 60db2406ae..93ac02f561 100644 --- a/packages/react-router-native/CHANGELOG.md +++ b/packages/react-router-native/CHANGELOG.md @@ -1,5 +1,12 @@ # `react-router-native` +## 6.30.1 + +### Patch Changes + +- Updated dependencies: + - `react-router@6.30.1` + ## 6.30.0 ### Patch Changes diff --git a/packages/react-router-native/package.json b/packages/react-router-native/package.json index d58a346119..4d3b5428b7 100644 --- a/packages/react-router-native/package.json +++ b/packages/react-router-native/package.json @@ -1,6 +1,6 @@ { "name": "react-router-native", - "version": "6.30.0", + "version": "6.30.1", "description": "Declarative routing for React Native applications", "keywords": [ "react", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index 3857b3e135..666bab61fd 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -1,5 +1,12 @@ # `react-router` +## 6.30.1 + +### 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)) + ## 6.30.0 ### Minor Changes diff --git a/packages/react-router/lib/deprecations.ts b/packages/react-router/lib/deprecations.ts index f6b4238442..188e200afe 100644 --- a/packages/react-router/lib/deprecations.ts +++ b/packages/react-router/lib/deprecations.ts @@ -32,7 +32,7 @@ export function logV6DeprecationWarnings( if ( renderFuture?.v7_relativeSplatPath === undefined && - (!routerFuture || !routerFuture.v7_relativeSplatPath) + (!routerFuture || routerFuture.v7_relativeSplatPath === undefined) ) { logDeprecation( "v7_relativeSplatPath", diff --git a/packages/react-router/lib/hooks.tsx b/packages/react-router/lib/hooks.tsx index 9cffc8c8c7..3a40c3b15c 100644 --- a/packages/react-router/lib/hooks.tsx +++ b/packages/react-router/lib/hooks.tsx @@ -1,6 +1,5 @@ import * as React from "react"; import type { - AgnosticRouteMatch, Blocker, BlockerFunction, Location, @@ -359,7 +358,7 @@ export function useRoutesImpl( `useRoutes() may be used only in the context of a component.` ); - let { navigator, static: isStatic } = React.useContext(NavigationContext); + let { navigator } = React.useContext(NavigationContext); let { matches: parentMatches } = React.useContext(RouteContext); let routeMatch = parentMatches[parentMatches.length - 1]; let parentParams = routeMatch ? routeMatch.params : {}; @@ -446,13 +445,7 @@ export function useRoutesImpl( remainingPathname = "/" + segments.slice(parentSegments.length).join("/"); } - let matches = - !isStatic && - dataRouterState && - dataRouterState.matches && - dataRouterState.matches.length > 0 - ? (dataRouterState.matches as AgnosticRouteMatch[]) - : matchRoutes(routes, { pathname: remainingPathname }); + let matches = matchRoutes(routes, { pathname: remainingPathname }); if (__DEV__) { warning( diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 447141ca2c..06ef82559e 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "react-router", - "version": "6.30.0", + "version": "6.30.1", "description": "Declarative routing for React", "keywords": [ "react", diff --git a/scripts/changesets-release.sh b/scripts/changesets-release.sh index ec85891a83..ad585f1fab 100755 --- a/scripts/changesets-release.sh +++ b/scripts/changesets-release.sh @@ -1,13 +1,14 @@ #!/bin/bash -MODE=$(node -e "console.log(require('./.changeset/pre.json').mode)") +PACKAGE="./packages/react-router/package.json" +IS_PRERELEASE=$(node -e "console.log(/-pre/.test(require('${PACKAGE}').version))") # Can only provide a custom --tag when not in prerelease mode -# The prerelease tags come from the pre.json "tag" field -if [ "${MODE}" == "exit" ]; then - echo "Publishing with v6 tag (stable release)" - pnpm exec changeset publish --tag v6 -else +# The prerelease tags come from the `pre.json`` "tag" field +if [ ${IS_PRERELEASE} == "true" ]; then echo "Publishing with default changesets tag (pre-release)" pnpm exec changeset publish +else + echo "Publishing with v6 tag (stable release)" + pnpm exec changeset publish --tag version-6 fi