From c06c92215ce4b6cdd545f7205e96f76648c00c8d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 15:09:26 +0000 Subject: [PATCH 1/2] chore: Update version for release --- .changeset/brown-ladybugs-yawn.md | 8 --- .changeset/cold-geese-turn.md | 5 -- .changeset/cuddly-rockets-obey.md | 5 -- .changeset/eleven-oranges-design.md | 5 -- .changeset/fresh-pugs-relax.md | 5 -- .changeset/old-peas-fetch.md | 5 -- .changeset/pre.json | 53 ------------------- .changeset/quiet-cows-build.md | 5 -- .changeset/real-rules-compare.md | 5 -- .changeset/rotten-parents-care.md | 5 -- .changeset/tender-sheep-bake.md | 5 -- .changeset/violet-dots-collect.md | 5 -- integration/CHANGELOG.md | 1 + packages/create-react-router/CHANGELOG.md | 4 +- packages/create-react-router/package.json | 2 +- packages/react-router-architect/CHANGELOG.md | 16 ++---- packages/react-router-architect/package.json | 2 +- packages/react-router-cloudflare/CHANGELOG.md | 13 ++--- packages/react-router-cloudflare/package.json | 2 +- packages/react-router-dev/CHANGELOG.md | 24 ++++----- packages/react-router-dev/package.json | 2 +- packages/react-router-dom/CHANGELOG.md | 11 +--- packages/react-router-dom/package.json | 2 +- packages/react-router-express/CHANGELOG.md | 14 ++--- packages/react-router-express/package.json | 2 +- packages/react-router-fs-routes/CHANGELOG.md | 11 +--- packages/react-router-fs-routes/package.json | 2 +- packages/react-router-node/CHANGELOG.md | 15 +++--- packages/react-router-node/package.json | 2 +- .../CHANGELOG.md | 11 +--- .../package.json | 2 +- packages/react-router-serve/CHANGELOG.md | 19 +++---- packages/react-router-serve/package.json | 2 +- packages/react-router/CHANGELOG.md | 30 +++++++---- packages/react-router/package.json | 2 +- 35 files changed, 74 insertions(+), 228 deletions(-) delete mode 100644 .changeset/brown-ladybugs-yawn.md delete mode 100644 .changeset/cold-geese-turn.md delete mode 100644 .changeset/cuddly-rockets-obey.md delete mode 100644 .changeset/eleven-oranges-design.md delete mode 100644 .changeset/fresh-pugs-relax.md delete mode 100644 .changeset/old-peas-fetch.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/quiet-cows-build.md delete mode 100644 .changeset/real-rules-compare.md delete mode 100644 .changeset/rotten-parents-care.md delete mode 100644 .changeset/tender-sheep-bake.md delete mode 100644 .changeset/violet-dots-collect.md diff --git a/.changeset/brown-ladybugs-yawn.md b/.changeset/brown-ladybugs-yawn.md deleted file mode 100644 index ac8aab0a5d..0000000000 --- a/.changeset/brown-ladybugs-yawn.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"react-router": patch ---- - -[UNSTABLE] Remove Data Mode `future.unstable_middleware` flag from `createBrowserRouter` - -- This is only needed as a Framework Mode flag because of the route modules and the `getLoadContext` type behavior change -- In Data Mode, it's an opt-in feature because it's just a new property on a route object, so there's no behavior changes that necessitate a flag diff --git a/.changeset/cold-geese-turn.md b/.changeset/cold-geese-turn.md deleted file mode 100644 index 5a89283859..0000000000 --- a/.changeset/cold-geese-turn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -[UNSTABLE] Add ``/`` prop for client side error reporting diff --git a/.changeset/cuddly-rockets-obey.md b/.changeset/cuddly-rockets-obey.md deleted file mode 100644 index 3ed8f9a64b..0000000000 --- a/.changeset/cuddly-rockets-obey.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -server action revalidation opt out via $SKIP_REVALIDATION field diff --git a/.changeset/eleven-oranges-design.md b/.changeset/eleven-oranges-design.md deleted file mode 100644 index cd99ea34e1..0000000000 --- a/.changeset/eleven-oranges-design.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -Properly escape interpolated param values in `generatePath()` diff --git a/.changeset/fresh-pugs-relax.md b/.changeset/fresh-pugs-relax.md deleted file mode 100644 index 2c98b6c1f6..0000000000 --- a/.changeset/fresh-pugs-relax.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -Maintain `ReadonlyMap` and `ReadonlySet` types in server response data. diff --git a/.changeset/old-peas-fetch.md b/.changeset/old-peas-fetch.md deleted file mode 100644 index 355746228d..0000000000 --- a/.changeset/old-peas-fetch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -[REMOVE] Update type as a follow up to https://github.com/remix-run/react-router/pull/14151 diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index 25fd6e39ae..0000000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "mode": "exit", - "tag": "pre", - "initialVersions": { - "integration": "0.0.0", - "integration-cloudflare-dev-proxy-template": "0.0.0", - "integration-rsc-parcel": "0.0.0", - "integration-rsc-parcel-framework": "0.0.0", - "integration-rsc-vite": "0.0.0", - "integration-rsc-vite-framework": "0.0.0", - "integration-vite-5-template": "0.0.0", - "integration-vite-6-template": "0.0.0", - "integration-vite-7-beta-template": "0.0.0", - "integration-vite-plugin-cloudflare-template": "0.0.0", - "integration-vite-rolldown-template": "0.0.0", - "create-react-router": "7.8.1", - "react-router": "7.8.1", - "@react-router/architect": "7.8.1", - "@react-router/cloudflare": "7.8.1", - "@react-router/dev": "7.8.1", - "react-router-dom": "7.8.1", - "@react-router/express": "7.8.1", - "@react-router/fs-routes": "7.8.1", - "@react-router/node": "7.8.1", - "@react-router/remix-routes-option-adapter": "7.8.1", - "@react-router/serve": "7.8.1", - "@playground/framework": "0.0.0", - "@playground/framework-express": "0.0.0", - "@playground/framework-rolldown-vite": "0.0.0", - "@playground/framework-spa": "0.0.0", - "@playground/framework-vite-5": "0.0.0", - "@playground/framework-vite-7-beta": "0.0.0", - "@playground/rsc-parcel": "0.0.0", - "@playground/rsc-vite": "0.0.0", - "@playground/rsc-vite-framework": "0.0.0", - "@playground/split-route-modules": "0.0.0", - "@playground/split-route-modules-spa": "0.0.0", - "@playground/vite-plugin-cloudflare": "0.0.0" - }, - "changesets": [ - "brown-ladybugs-yawn", - "cold-geese-turn", - "cuddly-rockets-obey", - "eleven-oranges-design", - "fresh-pugs-relax", - "old-peas-fetch", - "quiet-cows-build", - "real-rules-compare", - "rotten-parents-care", - "tender-sheep-bake", - "violet-dots-collect" - ] -} diff --git a/.changeset/quiet-cows-build.md b/.changeset/quiet-cows-build.md deleted file mode 100644 index 67c67a9776..0000000000 --- a/.changeset/quiet-cows-build.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -[UNSTABLE] Delay serialization of `.data` redirects to 202 responses until after middleware chain diff --git a/.changeset/real-rules-compare.md b/.changeset/real-rules-compare.md deleted file mode 100644 index 0ff7047f04..0000000000 --- a/.changeset/real-rules-compare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -Fix `TypeError` if you throw from `patchRoutesOnNavigation` when no partial matches exist diff --git a/.changeset/rotten-parents-care.md b/.changeset/rotten-parents-care.md deleted file mode 100644 index 156023d3ee..0000000000 --- a/.changeset/rotten-parents-care.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@react-router/dev": patch ---- - -fix: memory leak in default entry.server diff --git a/.changeset/tender-sheep-bake.md b/.changeset/tender-sheep-bake.md deleted file mode 100644 index 8194e94970..0000000000 --- a/.changeset/tender-sheep-bake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -Fix `basename` usage without a leading slash in data routers diff --git a/.changeset/violet-dots-collect.md b/.changeset/violet-dots-collect.md deleted file mode 100644 index aed0061ff6..0000000000 --- a/.changeset/violet-dots-collect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -[UNSTABLE] Update client middleware so it returns the data strategy results allowing for more advanced post-processing middleware diff --git a/integration/CHANGELOG.md b/integration/CHANGELOG.md index 2cf67d87b7..6fccf850d7 100644 --- a/integration/CHANGELOG.md +++ b/integration/CHANGELOG.md @@ -5,6 +5,7 @@ ### Minor Changes - Unstable Vite support for Node-based Remix apps ([#7590](https://github.com/remix-run/remix/pull/7590)) + - `remix build` 👉 `vite build && vite build --ssr` - `remix dev` 👉 `vite dev` diff --git a/packages/create-react-router/CHANGELOG.md b/packages/create-react-router/CHANGELOG.md index 3076c9b26f..4016bda772 100644 --- a/packages/create-react-router/CHANGELOG.md +++ b/packages/create-react-router/CHANGELOG.md @@ -1,8 +1,6 @@ # `create-react-router` -## 7.8.2-pre.1 - -## 7.8.2-pre.0 +## 7.8.2 ## 7.8.1 diff --git a/packages/create-react-router/package.json b/packages/create-react-router/package.json index 2af1a1d2e9..907cbac443 100644 --- a/packages/create-react-router/package.json +++ b/packages/create-react-router/package.json @@ -1,6 +1,6 @@ { "name": "create-react-router", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "Create a new React Router app", "homepage": "https://reactrouter.com", "bugs": { diff --git a/packages/react-router-architect/CHANGELOG.md b/packages/react-router-architect/CHANGELOG.md index 386498c95b..8f788c6ee8 100644 --- a/packages/react-router-architect/CHANGELOG.md +++ b/packages/react-router-architect/CHANGELOG.md @@ -1,20 +1,12 @@ # `@react-router/architect` -## 7.8.2-pre.1 +## 7.8.2 ### Patch Changes - Updated dependencies: - - `react-router@7.8.2-pre.1` - - `@react-router/node@7.8.2-pre.1` - -## 7.8.2-pre.0 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.8.2-pre.0` - - `@react-router/node@7.8.2-pre.0` + - `react-router@7.8.2` + - `@react-router/node@7.8.2` ## 7.8.1 @@ -218,6 +210,7 @@ ### Major Changes - For Remix consumers migrating to React Router, the `crypto` global from the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) is now required when using cookie and session APIs. This means that the following APIs are provided from `react-router` rather than platform-specific packages: ([#11837](https://github.com/remix-run/react-router/pull/11837)) + - `createCookie` - `createCookieSessionStorage` - `createMemorySessionStorage` @@ -226,6 +219,7 @@ For consumers running older versions of Node, the `installGlobals` function from `@remix-run/node` has been updated to define `globalThis.crypto`, using [Node's `require('node:crypto').webcrypto` implementation.](https://nodejs.org/api/webcrypto.html) Since platform-specific packages no longer need to implement this API, the following low-level APIs have been removed: + - `createCookieFactory` - `createSessionStorageFactory` - `createCookieSessionStorageFactory` diff --git a/packages/react-router-architect/package.json b/packages/react-router-architect/package.json index 10329ab9b7..76f6af0399 100644 --- a/packages/react-router-architect/package.json +++ b/packages/react-router-architect/package.json @@ -1,6 +1,6 @@ { "name": "@react-router/architect", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "Architect server request handler for React Router", "bugs": { "url": "https://github.com/remix-run/react-router/issues" diff --git a/packages/react-router-cloudflare/CHANGELOG.md b/packages/react-router-cloudflare/CHANGELOG.md index a903bdecf5..1dc9fe9c53 100644 --- a/packages/react-router-cloudflare/CHANGELOG.md +++ b/packages/react-router-cloudflare/CHANGELOG.md @@ -1,18 +1,11 @@ # `@react-router/cloudflare` -## 7.8.2-pre.1 +## 7.8.2 ### Patch Changes - Updated dependencies: - - `react-router@7.8.2-pre.1` - -## 7.8.2-pre.0 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.8.2-pre.0` + - `react-router@7.8.2` ## 7.8.1 @@ -193,6 +186,7 @@ - For Remix consumers migrating to React Router, all exports from `@remix-run/cloudflare-pages` are now provided for React Router consumers in the `@react-router/cloudflare` package. There is no longer a separate package for Cloudflare Pages. ([#11801](https://github.com/remix-run/react-router/pull/11801)) - For Remix consumers migrating to React Router, the `crypto` global from the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) is now required when using cookie and session APIs. This means that the following APIs are provided from `react-router` rather than platform-specific packages: ([#11837](https://github.com/remix-run/react-router/pull/11837)) + - `createCookie` - `createCookieSessionStorage` - `createMemorySessionStorage` @@ -201,6 +195,7 @@ For consumers running older versions of Node, the `installGlobals` function from `@remix-run/node` has been updated to define `globalThis.crypto`, using [Node's `require('node:crypto').webcrypto` implementation.](https://nodejs.org/api/webcrypto.html) Since platform-specific packages no longer need to implement this API, the following low-level APIs have been removed: + - `createCookieFactory` - `createSessionStorageFactory` - `createCookieSessionStorageFactory` diff --git a/packages/react-router-cloudflare/package.json b/packages/react-router-cloudflare/package.json index c4495327a6..9ca05c1c8a 100644 --- a/packages/react-router-cloudflare/package.json +++ b/packages/react-router-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@react-router/cloudflare", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "Cloudflare platform abstractions for React Router", "bugs": { "url": "https://github.com/remix-run/react-router/issues" diff --git a/packages/react-router-dev/CHANGELOG.md b/packages/react-router-dev/CHANGELOG.md index 3bea5df08b..9e68fbe5a8 100644 --- a/packages/react-router-dev/CHANGELOG.md +++ b/packages/react-router-dev/CHANGELOG.md @@ -1,23 +1,14 @@ # `@react-router/dev` -## 7.8.2-pre.1 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.8.2-pre.1` - - `@react-router/node@7.8.2-pre.1` - - `@react-router/serve@7.8.2-pre.1` - -## 7.8.2-pre.0 +## 7.8.2 ### Patch Changes - fix: memory leak in default entry.server ([#14200](https://github.com/remix-run/react-router/pull/14200)) - Updated dependencies: - - `react-router@7.8.2-pre.0` - - `@react-router/node@7.8.2-pre.0` - - `@react-router/serve@7.8.2-pre.0` + - `react-router@7.8.2` + - `@react-router/node@7.8.2` + - `@react-router/serve@7.8.2` ## 7.8.1 @@ -737,6 +728,7 @@ ``` This initial implementation targets type inference for: + - `Params` : Path parameters from your routing config in `routes.ts` including file-based routing - `LoaderData` : Loader data from `loader` and/or `clientLoader` within your route module - `ActionData` : Action data from `action` and/or `clientAction` within your route module @@ -751,6 +743,7 @@ ``` Check out our docs for more: + - [_Explanations > Type Safety_](https://reactrouter.com/dev/guides/explanation/type-safety) - [_How-To > Setting up type safety_](https://reactrouter.com/dev/guides/how-to/setting-up-type-safety) @@ -950,6 +943,7 @@ - Vite: Provide `Unstable_ServerBundlesFunction` and `Unstable_VitePluginConfig` types ([#8654](https://github.com/remix-run/remix/pull/8654)) - Vite: add `--sourcemapClient` and `--sourcemapServer` flags to `remix vite:build` ([#8613](https://github.com/remix-run/remix/pull/8613)) + - `--sourcemapClient` - `--sourcemapClient=inline` @@ -1286,6 +1280,7 @@ - Add support for `clientLoader`/`clientAction`/`HydrateFallback` route exports ([RFC](https://github.com/remix-run/remix/discussions/7634)) ([#8173](https://github.com/remix-run/remix/pull/8173)) Remix now supports loaders/actions that run on the client (in addition to, or instead of the loader/action that runs on the server). While we still recommend server loaders/actions for the majority of your data needs in a Remix app - these provide some levers you can pull for more advanced use-cases such as: + - Leveraging a data source local to the browser (i.e., `localStorage`) - Managing a client-side cache of server data (like `IndexedDB`) - Bypassing the Remix server in a BFF setup and hitting your API directly from the browser @@ -1689,6 +1684,7 @@ - Output esbuild metafiles for bundle analysis ([#6772](https://github.com/remix-run/remix/pull/6772)) Written to server build directory (`build/` by default): + - `metafile.css.json` - `metafile.js.json` (browser JS) - `metafile.server.json` (server JS) @@ -1786,6 +1782,7 @@ - built-in tls support ([#6483](https://github.com/remix-run/remix/pull/6483)) New options: + - `--tls-key` / `tlsKey`: TLS key - `--tls-cert` / `tlsCert`: TLS Certificate @@ -2056,6 +2053,7 @@ ``` The dev server will: + - force `NODE_ENV=development` and warn you if it was previously set to something else - rebuild your app whenever your Remix app code changes - restart your app server whenever rebuilds succeed diff --git a/packages/react-router-dev/package.json b/packages/react-router-dev/package.json index 4c33e6ff39..177240e8ae 100644 --- a/packages/react-router-dev/package.json +++ b/packages/react-router-dev/package.json @@ -1,6 +1,6 @@ { "name": "@react-router/dev", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "Dev tools and CLI for React Router", "homepage": "https://reactrouter.com", "bugs": { diff --git a/packages/react-router-dom/CHANGELOG.md b/packages/react-router-dom/CHANGELOG.md index b63b5e314c..11722e988e 100644 --- a/packages/react-router-dom/CHANGELOG.md +++ b/packages/react-router-dom/CHANGELOG.md @@ -1,18 +1,11 @@ # react-router-dom -## 7.8.2-pre.1 +## 7.8.2 ### Patch Changes - Updated dependencies: - - `react-router@7.8.2-pre.1` - -## 7.8.2-pre.0 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.8.2-pre.0` + - `react-router@7.8.2` ## 7.8.1 diff --git a/packages/react-router-dom/package.json b/packages/react-router-dom/package.json index 95c4599b07..b0c6b3d50a 100644 --- a/packages/react-router-dom/package.json +++ b/packages/react-router-dom/package.json @@ -1,6 +1,6 @@ { "name": "react-router-dom", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "Declarative routing for React web applications", "keywords": [ "react", diff --git a/packages/react-router-express/CHANGELOG.md b/packages/react-router-express/CHANGELOG.md index 799581c71c..cc79b906c9 100644 --- a/packages/react-router-express/CHANGELOG.md +++ b/packages/react-router-express/CHANGELOG.md @@ -1,20 +1,12 @@ # `@react-router/express` -## 7.8.2-pre.1 +## 7.8.2 ### Patch Changes - Updated dependencies: - - `react-router@7.8.2-pre.1` - - `@react-router/node@7.8.2-pre.1` - -## 7.8.2-pre.0 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.8.2-pre.0` - - `@react-router/node@7.8.2-pre.0` + - `react-router@7.8.2` + - `@react-router/node@7.8.2` ## 7.8.1 diff --git a/packages/react-router-express/package.json b/packages/react-router-express/package.json index 96c0a05a0c..1a2089fecd 100644 --- a/packages/react-router-express/package.json +++ b/packages/react-router-express/package.json @@ -1,6 +1,6 @@ { "name": "@react-router/express", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "Express server request handler for React Router", "bugs": { "url": "https://github.com/remix-run/react-router/issues" diff --git a/packages/react-router-fs-routes/CHANGELOG.md b/packages/react-router-fs-routes/CHANGELOG.md index 2f3b392aa3..ef42a7c497 100644 --- a/packages/react-router-fs-routes/CHANGELOG.md +++ b/packages/react-router-fs-routes/CHANGELOG.md @@ -1,18 +1,11 @@ # `@react-router/fs-routes` -## 7.8.2-pre.1 +## 7.8.2 ### Patch Changes - Updated dependencies: - - `@react-router/dev@7.8.2-pre.1` - -## 7.8.2-pre.0 - -### Patch Changes - -- Updated dependencies: - - `@react-router/dev@7.8.2-pre.0` + - `@react-router/dev@7.8.2` ## 7.8.1 diff --git a/packages/react-router-fs-routes/package.json b/packages/react-router-fs-routes/package.json index 2105b0b37c..49a01b6384 100644 --- a/packages/react-router-fs-routes/package.json +++ b/packages/react-router-fs-routes/package.json @@ -1,6 +1,6 @@ { "name": "@react-router/fs-routes", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "File system routing conventions for React Router, for use within routes.ts", "bugs": { "url": "https://github.com/remix-run/react-router/issues" diff --git a/packages/react-router-node/CHANGELOG.md b/packages/react-router-node/CHANGELOG.md index 23c365c072..4a9af81bed 100644 --- a/packages/react-router-node/CHANGELOG.md +++ b/packages/react-router-node/CHANGELOG.md @@ -1,18 +1,11 @@ # `@react-router/node` -## 7.8.2-pre.1 +## 7.8.2 ### Patch Changes - Updated dependencies: - - `react-router@7.8.2-pre.1` - -## 7.8.2-pre.0 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.8.2-pre.0` + - `react-router@7.8.2` ## 7.8.1 @@ -194,6 +187,7 @@ - Remove single fetch future flag. ([#11522](https://github.com/remix-run/react-router/pull/11522)) - For Remix consumers migrating to React Router, the `crypto` global from the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) is now required when using cookie and session APIs. This means that the following APIs are provided from `react-router` rather than platform-specific packages: ([#11837](https://github.com/remix-run/react-router/pull/11837)) + - `createCookie` - `createCookieSessionStorage` - `createMemorySessionStorage` @@ -202,6 +196,7 @@ For consumers running older versions of Node, the `installGlobals` function from `@remix-run/node` has been updated to define `globalThis.crypto`, using [Node's `require('node:crypto').webcrypto` implementation.](https://nodejs.org/api/webcrypto.html) Since platform-specific packages no longer need to implement this API, the following low-level APIs have been removed: + - `createCookieFactory` - `createSessionStorageFactory` - `createCookieSessionStorageFactory` @@ -609,10 +604,12 @@ - Introduces the `defer()` API from `@remix-run/router` with support for server-rendering and HTTP streaming. This utility allows you to defer values returned from `loader` functions by returning promises instead of resolved values. This has been refered to as _"sending a promise over the wire"_. ([#4920](https://github.com/remix-run/remix/pull/4920)) Informational Resources: + - - Documentation Resources (better docs specific to Remix are in the works): + - - - diff --git a/packages/react-router-node/package.json b/packages/react-router-node/package.json index 94a182b009..e79c03a1ca 100644 --- a/packages/react-router-node/package.json +++ b/packages/react-router-node/package.json @@ -1,6 +1,6 @@ { "name": "@react-router/node", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "Node.js platform abstractions for React Router", "bugs": { "url": "https://github.com/remix-run/react-router/issues" diff --git a/packages/react-router-remix-routes-option-adapter/CHANGELOG.md b/packages/react-router-remix-routes-option-adapter/CHANGELOG.md index b885a1d324..93904a6969 100644 --- a/packages/react-router-remix-routes-option-adapter/CHANGELOG.md +++ b/packages/react-router-remix-routes-option-adapter/CHANGELOG.md @@ -1,18 +1,11 @@ # `@react-router/remix-config-routes-adapter` -## 7.8.2-pre.1 +## 7.8.2 ### Patch Changes - Updated dependencies: - - `@react-router/dev@7.8.2-pre.1` - -## 7.8.2-pre.0 - -### Patch Changes - -- Updated dependencies: - - `@react-router/dev@7.8.2-pre.0` + - `@react-router/dev@7.8.2` ## 7.8.1 diff --git a/packages/react-router-remix-routes-option-adapter/package.json b/packages/react-router-remix-routes-option-adapter/package.json index b63e0bdf33..6b0cff8413 100644 --- a/packages/react-router-remix-routes-option-adapter/package.json +++ b/packages/react-router-remix-routes-option-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@react-router/remix-routes-option-adapter", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "Adapter for Remix's \"routes\" config option, for use within routes.ts", "bugs": { "url": "https://github.com/remix-run/react-router/issues" diff --git a/packages/react-router-serve/CHANGELOG.md b/packages/react-router-serve/CHANGELOG.md index ab754f0f11..160efcbd96 100644 --- a/packages/react-router-serve/CHANGELOG.md +++ b/packages/react-router-serve/CHANGELOG.md @@ -1,22 +1,13 @@ # `@react-router/serve` -## 7.8.2-pre.1 +## 7.8.2 ### Patch Changes - Updated dependencies: - - `react-router@7.8.2-pre.1` - - `@react-router/node@7.8.2-pre.1` - - `@react-router/express@7.8.2-pre.1` - -## 7.8.2-pre.0 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.8.2-pre.0` - - `@react-router/node@7.8.2-pre.0` - - `@react-router/express@7.8.2-pre.0` + - `react-router@7.8.2` + - `@react-router/node@7.8.2` + - `@react-router/express@7.8.2` ## 7.8.1 @@ -617,10 +608,12 @@ - Introduces the `defer()` API from `@remix-run/router` with support for server-rendering and HTTP streaming. This utility allows you to defer values returned from `loader` functions by returning promises instead of resolved values. This has been refered to as _"sending a promise over the wire"_. ([#4920](https://github.com/remix-run/remix/pull/4920)) Informational Resources: + - - Documentation Resources (better docs specific to Remix are in the works): + - - - diff --git a/packages/react-router-serve/package.json b/packages/react-router-serve/package.json index 265edbb901..70656080d7 100644 --- a/packages/react-router-serve/package.json +++ b/packages/react-router-serve/package.json @@ -1,6 +1,6 @@ { "name": "@react-router/serve", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "Production application server for React Router", "bugs": { "url": "https://github.com/remix-run/react-router/issues" diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index 5b0368fff5..d9b8a60ce0 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -1,27 +1,30 @@ # `react-router` -## 7.8.2-pre.1 +## 7.8.2 ### Patch Changes -- [UNSTABLE] Remove Data Mode `future.unstable_middleware` flag from `createBrowserRouter` ([#14213](https://github.com/remix-run/react-router/pull/14213)) +- \[UNSTABLE] Remove Data Mode `future.unstable_middleware` flag from `createBrowserRouter` ([#14213](https://github.com/remix-run/react-router/pull/14213)) - This is only needed as a Framework Mode flag because of the route modules and the `getLoadContext` type behavior change - In Data Mode, it's an opt-in feature because it's just a new property on a route object, so there's no behavior changes that necessitate a flag -- server action revalidation opt out via $SKIP_REVALIDATION field ([#14154](https://github.com/remix-run/react-router/pull/14154)) -- [REMOVE] Update type as a follow up to https://github.com/remix-run/react-router/pull/14151 ([#14212](https://github.com/remix-run/react-router/pull/14212)) +- \[UNSTABLE] Add ``/`` prop for client side error reporting ([#14162](https://github.com/remix-run/react-router/pull/14162)) -## 7.8.2-pre.0 +- server action revalidation opt out via $SKIP\_REVALIDATION field ([#14154](https://github.com/remix-run/react-router/pull/14154)) -### Patch Changes - -- [UNSTABLE] Add ``/`` prop for client side error reporting ([#14162](https://github.com/remix-run/react-router/pull/14162)) - Properly escape interpolated param values in `generatePath()` ([#13530](https://github.com/remix-run/react-router/pull/13530)) + - Maintain `ReadonlyMap` and `ReadonlySet` types in server response data. ([#13092](https://github.com/remix-run/react-router/pull/13092)) -- [UNSTABLE] Delay serialization of `.data` redirects to 202 responses until after middleware chain ([#14205](https://github.com/remix-run/react-router/pull/14205)) + +- \[REMOVE] Update type as a follow up to ([#14212](https://github.com/remix-run/react-router/pull/14212)) + +- \[UNSTABLE] Delay serialization of `.data` redirects to 202 responses until after middleware chain ([#14205](https://github.com/remix-run/react-router/pull/14205)) + - Fix `TypeError` if you throw from `patchRoutesOnNavigation` when no partial matches exist ([#14198](https://github.com/remix-run/react-router/pull/14198)) + - Fix `basename` usage without a leading slash in data routers ([#11671](https://github.com/remix-run/react-router/pull/11671)) -- [UNSTABLE] Update client middleware so it returns the data strategy results allowing for more advanced post-processing middleware ([#14151](https://github.com/remix-run/react-router/pull/14151)) + +- \[UNSTABLE] Update client middleware so it returns the data strategy results allowing for more advanced post-processing middleware ([#14151](https://github.com/remix-run/react-router/pull/14151)) ## 7.8.1 @@ -58,6 +61,7 @@ - Remove dependency on `@types/node` in TypeScript declaration files ([#14059](https://github.com/remix-run/react-router/pull/14059)) - Fix types for `UIMatch` to reflect that the `loaderData`/`data` properties may be `undefined` ([#12206](https://github.com/remix-run/react-router/pull/12206)) + - When an `ErrorBoundary` is being rendered, not all active matches will have loader data available, since it may have been their `loader` that threw to trigger the boundary - The `UIMatch.data` type was not correctly handing this and would always reflect the presence of data, leading to the unexpected runtime errors when an `ErrorBoundary` was rendered - ⚠️ This may cause some type errors to show up in your code for unguarded `match.data` accesses - you should properly guard for `undefined` values in those scenarios. @@ -91,6 +95,7 @@ - \[UNSTABLE] When middleware is enabled, make the `context` parameter read-only (via `Readonly`) so that TypeScript will not allow you to write arbitrary fields to it in loaders, actions, or middleware. ([#14097](https://github.com/remix-run/react-router/pull/14097)) - \[UNSTABLE] Rename and alter the signature/functionality of the `unstable_respond` API in `staticHandler.query`/`staticHandler.queryRoute` ([#14103](https://github.com/remix-run/react-router/pull/14103)) + - The API has been renamed to `unstable_generateMiddlewareResponse` for clarity - The main functional change is that instead of running the loaders/actions before calling `unstable_respond` and handing you the result, we now pass a `query`/`queryRoute` function as a parameter and you execute the loaders/actions inside your callback, giving you full access to pre-processing and error handling - The `query` version of the API now has a signature of `(query: (r: Request) => Promise) => Promise` @@ -736,6 +741,7 @@ ``` Similar to server-side requests, a fresh `context` will be created per navigation (or `fetcher` call). If you have initial data you'd like to populate in the context for every request, you can provide an `unstable_getContext` function at the root of your app: + - Library mode - `createBrowserRouter(routes, { unstable_getContext })` - Framework mode - `` @@ -923,6 +929,7 @@ _No changes_ - Remove `future.v7_normalizeFormMethod` future flag ([#11697](https://github.com/remix-run/react-router/pull/11697)) - For Remix consumers migrating to React Router, the `crypto` global from the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) is now required when using cookie and session APIs. This means that the following APIs are provided from `react-router` rather than platform-specific packages: ([#11837](https://github.com/remix-run/react-router/pull/11837)) + - `createCookie` - `createCookieSessionStorage` - `createMemorySessionStorage` @@ -931,6 +938,7 @@ _No changes_ For consumers running older versions of Node, the `installGlobals` function from `@remix-run/node` has been updated to define `globalThis.crypto`, using [Node's `require('node:crypto').webcrypto` implementation.](https://nodejs.org/api/webcrypto.html) Since platform-specific packages no longer need to implement this API, the following low-level APIs have been removed: + - `createCookieFactory` - `createSessionStorageFactory` - `createCookieSessionStorageFactory` @@ -1086,6 +1094,7 @@ _No changes_ ``` This initial implementation targets type inference for: + - `Params` : Path parameters from your routing config in `routes.ts` including file-based routing - `LoaderData` : Loader data from `loader` and/or `clientLoader` within your route module - `ActionData` : Action data from `action` and/or `clientAction` within your route module @@ -1100,6 +1109,7 @@ _No changes_ ``` Check out our docs for more: + - [_Explanations > Type Safety_](https://reactrouter.com/dev/guides/explanation/type-safety) - [_How-To > Setting up type safety_](https://reactrouter.com/dev/guides/how-to/setting-up-type-safety) diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 4ba801ae1b..92f58849af 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "react-router", - "version": "7.8.2-pre.1", + "version": "7.8.2", "description": "Declarative routing for React", "keywords": [ "react", From 8947c13b347b0fb01bab3dfd7e9225513c7d5ca6 Mon Sep 17 00:00:00 2001 From: Matt Brophy Date: Fri, 22 Aug 2025 14:11:21 -0400 Subject: [PATCH 2/2] Finalize release notes --- packages/create-react-router/CHANGELOG.md | 2 ++ packages/react-router/CHANGELOG.md | 11 +---------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/packages/create-react-router/CHANGELOG.md b/packages/create-react-router/CHANGELOG.md index 4016bda772..1fded855e8 100644 --- a/packages/create-react-router/CHANGELOG.md +++ b/packages/create-react-router/CHANGELOG.md @@ -2,6 +2,8 @@ ## 7.8.2 +_No changes_ + ## 7.8.1 _No changes_ diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index d9b8a60ce0..b97bf8e2f7 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -10,14 +10,12 @@ - \[UNSTABLE] Add ``/`` prop for client side error reporting ([#14162](https://github.com/remix-run/react-router/pull/14162)) -- server action revalidation opt out via $SKIP\_REVALIDATION field ([#14154](https://github.com/remix-run/react-router/pull/14154)) +- server action revalidation opt out via $SKIP_REVALIDATION field ([#14154](https://github.com/remix-run/react-router/pull/14154)) - Properly escape interpolated param values in `generatePath()` ([#13530](https://github.com/remix-run/react-router/pull/13530)) - Maintain `ReadonlyMap` and `ReadonlySet` types in server response data. ([#13092](https://github.com/remix-run/react-router/pull/13092)) -- \[REMOVE] Update type as a follow up to ([#14212](https://github.com/remix-run/react-router/pull/14212)) - - \[UNSTABLE] Delay serialization of `.data` redirects to 202 responses until after middleware chain ([#14205](https://github.com/remix-run/react-router/pull/14205)) - Fix `TypeError` if you throw from `patchRoutesOnNavigation` when no partial matches exist ([#14198](https://github.com/remix-run/react-router/pull/14198)) @@ -61,7 +59,6 @@ - Remove dependency on `@types/node` in TypeScript declaration files ([#14059](https://github.com/remix-run/react-router/pull/14059)) - Fix types for `UIMatch` to reflect that the `loaderData`/`data` properties may be `undefined` ([#12206](https://github.com/remix-run/react-router/pull/12206)) - - When an `ErrorBoundary` is being rendered, not all active matches will have loader data available, since it may have been their `loader` that threw to trigger the boundary - The `UIMatch.data` type was not correctly handing this and would always reflect the presence of data, leading to the unexpected runtime errors when an `ErrorBoundary` was rendered - ⚠️ This may cause some type errors to show up in your code for unguarded `match.data` accesses - you should properly guard for `undefined` values in those scenarios. @@ -95,7 +92,6 @@ - \[UNSTABLE] When middleware is enabled, make the `context` parameter read-only (via `Readonly`) so that TypeScript will not allow you to write arbitrary fields to it in loaders, actions, or middleware. ([#14097](https://github.com/remix-run/react-router/pull/14097)) - \[UNSTABLE] Rename and alter the signature/functionality of the `unstable_respond` API in `staticHandler.query`/`staticHandler.queryRoute` ([#14103](https://github.com/remix-run/react-router/pull/14103)) - - The API has been renamed to `unstable_generateMiddlewareResponse` for clarity - The main functional change is that instead of running the loaders/actions before calling `unstable_respond` and handing you the result, we now pass a `query`/`queryRoute` function as a parameter and you execute the loaders/actions inside your callback, giving you full access to pre-processing and error handling - The `query` version of the API now has a signature of `(query: (r: Request) => Promise) => Promise` @@ -741,7 +737,6 @@ ``` Similar to server-side requests, a fresh `context` will be created per navigation (or `fetcher` call). If you have initial data you'd like to populate in the context for every request, you can provide an `unstable_getContext` function at the root of your app: - - Library mode - `createBrowserRouter(routes, { unstable_getContext })` - Framework mode - `` @@ -929,7 +924,6 @@ _No changes_ - Remove `future.v7_normalizeFormMethod` future flag ([#11697](https://github.com/remix-run/react-router/pull/11697)) - For Remix consumers migrating to React Router, the `crypto` global from the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) is now required when using cookie and session APIs. This means that the following APIs are provided from `react-router` rather than platform-specific packages: ([#11837](https://github.com/remix-run/react-router/pull/11837)) - - `createCookie` - `createCookieSessionStorage` - `createMemorySessionStorage` @@ -938,7 +932,6 @@ _No changes_ For consumers running older versions of Node, the `installGlobals` function from `@remix-run/node` has been updated to define `globalThis.crypto`, using [Node's `require('node:crypto').webcrypto` implementation.](https://nodejs.org/api/webcrypto.html) Since platform-specific packages no longer need to implement this API, the following low-level APIs have been removed: - - `createCookieFactory` - `createSessionStorageFactory` - `createCookieSessionStorageFactory` @@ -1094,7 +1087,6 @@ _No changes_ ``` This initial implementation targets type inference for: - - `Params` : Path parameters from your routing config in `routes.ts` including file-based routing - `LoaderData` : Loader data from `loader` and/or `clientLoader` within your route module - `ActionData` : Action data from `action` and/or `clientAction` within your route module @@ -1109,7 +1101,6 @@ _No changes_ ``` Check out our docs for more: - - [_Explanations > Type Safety_](https://reactrouter.com/dev/guides/explanation/type-safety) - [_How-To > Setting up type safety_](https://reactrouter.com/dev/guides/how-to/setting-up-type-safety)