diff --git a/.changeset/angry-planets-admire.md b/.changeset/angry-planets-admire.md deleted file mode 100644 index 9ff45066e8..0000000000 --- a/.changeset/angry-planets-admire.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -Escape HTML in `meta()` JSON-LD content diff --git a/.changeset/cool-readers-attack.md b/.changeset/cool-readers-attack.md deleted file mode 100644 index d787ada7e6..0000000000 --- a/.changeset/cool-readers-attack.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -Add react-server Await component implementation diff --git a/.changeset/flat-shoes-own.md b/.changeset/flat-shoes-own.md deleted file mode 100644 index c4b045b7f5..0000000000 --- a/.changeset/flat-shoes-own.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -In RSC Data Mode when using a custom basename, fix hydration errors for routes that only have client loaders diff --git a/.changeset/khaki-dogs-rescue.md b/.changeset/khaki-dogs-rescue.md deleted file mode 100644 index 1bb811039d..0000000000 --- a/.changeset/khaki-dogs-rescue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -Make `href` function available in a react-server context diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index 72a4c10c49..0000000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,48 +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-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.2", - "react-router": "7.8.2", - "@react-router/architect": "7.8.2", - "@react-router/cloudflare": "7.8.2", - "@react-router/dev": "7.8.2", - "react-router-dom": "7.8.2", - "@react-router/express": "7.8.2", - "@react-router/fs-routes": "7.8.2", - "@react-router/node": "7.8.2", - "@react-router/remix-routes-option-adapter": "7.8.2", - "@react-router/serve": "7.8.2", - "@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": [ - "angry-planets-admire", - "cool-readers-attack", - "flat-shoes-own", - "khaki-dogs-rescue", - "shiny-hotels-guess", - "shy-lemons-boil", - "slow-readers-thank" - ] -} diff --git a/.changeset/shiny-hotels-guess.md b/.changeset/shiny-hotels-guess.md deleted file mode 100644 index 6d5907a323..0000000000 --- a/.changeset/shiny-hotels-guess.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -decode each time `getPayload()` is called to allow for "in-context" decoding and hoisting of contextual assets diff --git a/.changeset/shy-lemons-boil.md b/.changeset/shy-lemons-boil.md deleted file mode 100644 index 4df31eb79c..0000000000 --- a/.changeset/shy-lemons-boil.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@react-router/cloudflare": minor -"@react-router/architect": minor -"@react-router/express": minor -"@react-router/node": minor -"@react-router/dev": minor -"react-router": minor ---- - -Stabilize middleware and context APIs. - -We have removed the `unstable_` prefix from the following APIs and they are now considered stable and ready for production use: - -- [`RouterContextProvider`](https://reactrouter.com/api/utils/RouterContextProvider) -- [`createContext`](https://reactrouter.com/api/utils/createContext) -- `createBrowserRouter` [`getContext`](https://reactrouter.com/api/data-routers/createBrowserRouter#optsgetcontext) option -- `` [`getContext`](https://reactrouter.com/api/framework-routers/HydratedRouter#getcontext) prop - -Please see the [Middleware Docs](https://reactrouter.com/how-to/middleware), the [Middleware RFC](https://github.com/remix-run/remix/discussions/7642), and the [Client-side Context RFC](https://github.com/remix-run/react-router/discussions/9856) for more information. diff --git a/.changeset/slow-readers-thank.md b/.changeset/slow-readers-thank.md deleted file mode 100644 index 22b04b1e64..0000000000 --- a/.changeset/slow-readers-thank.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"react-router": patch ---- - -`href()` now correctly processes routes that have an extension after the parameter or are a single optional parameter. diff --git a/CHANGELOG.md b/CHANGELOG.md index a8a98bbeae..173fe085a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,6 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [Minor Changes](#minor-changes) - [Patch Changes](#patch-changes) - [Unstable Changes](#unstable-changes) - - [Changes by Package](#changes-by-package) - [v7.8.2](#v782) - [Patch Changes](#patch-changes-1) - [Unstable Changes](#unstable-changes-1) @@ -33,7 +32,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [Minor Changes](#minor-changes-1) - [Patch Changes](#patch-changes-3) - [Unstable Changes](#unstable-changes-3) - - [Changes by Package](#changes-by-package-1) + - [Changes by Package](#changes-by-package) - [v7.7.1](#v771) - [Patch Changes](#patch-changes-4) - [Unstable Changes](#unstable-changes-4) @@ -43,7 +42,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [Minor Changes](#minor-changes-2) - [Patch Changes](#patch-changes-5) - [Unstable Changes](#unstable-changes-5) - - [Changes by Package](#changes-by-package-2) + - [Changes by Package](#changes-by-package-1) - [v7.6.3](#v763) - [Patch Changes](#patch-changes-6) - [v7.6.2](#v762) @@ -58,7 +57,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [Minor Changes](#minor-changes-3) - [Patch Changes](#patch-changes-9) - [Unstable Changes](#unstable-changes-7) - - [Changes by Package](#changes-by-package-3) + - [Changes by Package](#changes-by-package-2) - [v7.5.3](#v753) - [Patch Changes](#patch-changes-10) - [v7.5.2](#v752) @@ -73,7 +72,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [Minor Changes](#minor-changes-4) - [Patch Changes](#patch-changes-13) - [Unstable Changes](#unstable-changes-9) - - [Changes by Package](#changes-by-package-4) + - [Changes by Package](#changes-by-package-3) - [v7.4.1](#v741) - [Security Notice](#security-notice-1) - [Patch Changes](#patch-changes-14) @@ -82,7 +81,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [Minor Changes](#minor-changes-5) - [Patch Changes](#patch-changes-15) - [Unstable Changes](#unstable-changes-11) - - [Changes by Package](#changes-by-package-5) + - [Changes by Package](#changes-by-package-4) - [v7.3.0](#v730) - [Minor Changes](#minor-changes-6) - [Patch Changes](#patch-changes-16) @@ -91,7 +90,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [Middleware (unstable)](#middleware-unstable) - [Middleware `context` parameter](#middleware-context-parameter) - [`unstable_SerializesTo`](#unstable_serializesto) - - [Changes by Package](#changes-by-package-6) + - [Changes by Package](#changes-by-package-5) - [v7.2.0](#v720) - [What's Changed](#whats-changed-5) - [Type-safe `href` utility](#type-safe-href-utility) @@ -101,7 +100,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [Patch Changes](#patch-changes-17) - [Unstable Changes](#unstable-changes-13) - [Split Route Modules (unstable)](#split-route-modules-unstable) - - [Changes by Package](#changes-by-package-7) + - [Changes by Package](#changes-by-package-6) - [v7.1.5](#v715) - [Patch Changes](#patch-changes-18) - [v7.1.4](#v714) @@ -115,7 +114,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [v7.1.0](#v710) - [Minor Changes](#minor-changes-8) - [Patch Changes](#patch-changes-23) - - [Changes by Package](#changes-by-package-8) + - [Changes by Package](#changes-by-package-7) - [v7.0.2](#v702) - [Patch Changes](#patch-changes-24) - [v7.0.1](#v701) @@ -137,7 +136,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa - [Major Changes (`@react-router/*`)](#major-changes-react-router-1) - [Minor Changes](#minor-changes-9) - [Patch Changes](#patch-changes-26) - - [Changes by Package](#changes-by-package-9) + - [Changes by Package](#changes-by-package-8) - [React Router v6 Releases](#react-router-v6-releases) - [v6.30.1](#v6301) - [Patch Changes](#patch-changes-27) @@ -355,25 +354,12 @@ Date: YYYY-MM-DD ⚠️ _[Unstable features](https://reactrouter.com/community/api-development-strategy#unstable-flags) are not recommended for production use_ -### Changes by Package - -- [`create-react-router`](https://github.com/remix-run/react-router/blob/react-router%407.X.Y/packages/create-react-router/CHANGELOG.md#7XY) -- [`react-router`](https://github.com/remix-run/react-router/blob/react-router%407.X.Y/packages/react-router/CHANGELOG.md#7XY) -- [`@react-router/architect`](https://github.com/remix-run/react-router/blob/react-router%407.X.Y/packages/react-router-architect/CHANGELOG.md#7XY) -- [`@react-router/cloudflare`](https://github.com/remix-run/react-router/blob/react-router%407.X.Y/packages/react-router-cloudflare/CHANGELOG.md#7XY) -- [`@react-router/dev`](https://github.com/remix-run/react-router/blob/react-router%407.X.Y/packages/react-router-dev/CHANGELOG.md#7XY) -- [`@react-router/express`](https://github.com/remix-run/react-router/blob/react-router%407.X.Y/packages/react-router-express/CHANGELOG.md#7XY) -- [`@react-router/fs-routes`](https://github.com/remix-run/react-router/blob/react-router%407.X.Y/packages/react-router-fs-routes/CHANGELOG.md#7XY) -- [`@react-router/node`](https://github.com/remix-run/react-router/blob/react-router%407.X.Y/packages/react-router-node/CHANGELOG.md#7XY) -- [`@react-router/remix-config-routes-adapter`](https://github.com/remix-run/react-router/blob/react-router%407.X.Y/packages/react-router-remix-config-routes-adapter/CHANGELOG.md#7XY) -- [`@react-router/serve`](https://github.com/remix-run/react-router/blob/react-router%407.X.Y/packages/react-router-serve/CHANGELOG.md#7XY) - **Full Changelog**: [`v7.X.Y...v7.X.Y`](https://github.com/remix-run/react-router/compare/react-router@7.X.Y...react-router@7.X.Y) --> ## v7.9.0 -Date: 2025-09-11 +Date: 2025-09-12 ### What's Changed @@ -406,19 +392,6 @@ Please see the [Middleware Docs](https://reactrouter.com/how-to/middleware), the - `react-router` - RSC: Make `href` function available in a `react-server` context ([#14262](https://github.com/remix-run/react-router/pull/14262)) - `react-router` - RSC: Decode each time `getPayload()` is called to allow for "in-context" decoding and hoisting of contextual assets ([#14248](https://github.com/remix-run/react-router/pull/14248)) -### Changes by Package - -- [`create-react-router`](https://github.com/remix-run/react-router/blob/react-router%407.9.0/packages/create-react-router/CHANGELOG.md#790) -- [`react-router`](https://github.com/remix-run/react-router/blob/react-router%407.9.0/packages/react-router/CHANGELOG.md#790) -- [`@react-router/architect`](https://github.com/remix-run/react-router/blob/react-router%407.9.0/packages/react-router-architect/CHANGELOG.md#790) -- [`@react-router/cloudflare`](https://github.com/remix-run/react-router/blob/react-router%407.9.0/packages/react-router-cloudflare/CHANGELOG.md#790) -- [`@react-router/dev`](https://github.com/remix-run/react-router/blob/react-router%407.9.0/packages/react-router-dev/CHANGELOG.md#790) -- [`@react-router/express`](https://github.com/remix-run/react-router/blob/react-router%407.9.0/packages/react-router-express/CHANGELOG.md#790) -- [`@react-router/fs-routes`](https://github.com/remix-run/react-router/blob/react-router%407.9.0/packages/react-router-fs-routes/CHANGELOG.md#790) -- [`@react-router/node`](https://github.com/remix-run/react-router/blob/react-router%407.9.0/packages/react-router-node/CHANGELOG.md#790) -- [`@react-router/remix-config-routes-adapter`](https://github.com/remix-run/react-router/blob/react-router%407.9.0/packages/react-router-remix-config-routes-adapter/CHANGELOG.md#790) -- [`@react-router/serve`](https://github.com/remix-run/react-router/blob/react-router%407.9.0/packages/react-router-serve/CHANGELOG.md#790) - **Full Changelog**: [`v7.8.2...v7.9.0`](https://github.com/remix-run/react-router/compare/react-router@7.8.2...react-router@7.9.0) ## v7.8.2 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 f381790d3b..7eff0ca5d5 100644 --- a/packages/create-react-router/CHANGELOG.md +++ b/packages/create-react-router/CHANGELOG.md @@ -1,8 +1,8 @@ # `create-react-router` -## 7.9.0-pre.1 +## 7.9.0 -## 7.9.0-pre.0 +_No changes_ ## 7.8.2 diff --git a/packages/create-react-router/package.json b/packages/create-react-router/package.json index ff506a48bd..8c9a1349ab 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.9.0-pre.1", + "version": "7.9.0", "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 83017ecd26..f3697f945b 100644 --- a/packages/react-router-architect/CHANGELOG.md +++ b/packages/react-router-architect/CHANGELOG.md @@ -1,20 +1,13 @@ # `@react-router/architect` -## 7.9.0-pre.1 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.9.0-pre.1` - - `@react-router/node@7.9.0-pre.1` - -## 7.9.0-pre.0 +## 7.9.0 ### Minor Changes - Stabilize middleware and context APIs. ([#14215](https://github.com/remix-run/react-router/pull/14215)) We have removed the `unstable_` prefix from the following APIs and they are now considered stable and ready for production use: + - [`RouterContextProvider`](https://reactrouter.com/api/utils/RouterContextProvider) - [`createContext`](https://reactrouter.com/api/utils/createContext) - `createBrowserRouter` [`getContext`](https://reactrouter.com/api/data-routers/createBrowserRouter#optsgetcontext) option @@ -25,8 +18,8 @@ ### Patch Changes - Updated dependencies: - - `react-router@7.9.0-pre.0` - - `@react-router/node@7.9.0-pre.0` + - `react-router@7.9.0` + - `@react-router/node@7.9.0` ## 7.8.2 @@ -238,6 +231,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` @@ -246,6 +240,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 8e6d30281e..33656d777d 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.9.0-pre.1", + "version": "7.9.0", "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 f30f32ad4c..548ac9d80c 100644 --- a/packages/react-router-cloudflare/CHANGELOG.md +++ b/packages/react-router-cloudflare/CHANGELOG.md @@ -1,19 +1,13 @@ # `@react-router/cloudflare` -## 7.9.0-pre.1 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.9.0-pre.1` - -## 7.9.0-pre.0 +## 7.9.0 ### Minor Changes - Stabilize middleware and context APIs. ([#14215](https://github.com/remix-run/react-router/pull/14215)) We have removed the `unstable_` prefix from the following APIs and they are now considered stable and ready for production use: + - [`RouterContextProvider`](https://reactrouter.com/api/utils/RouterContextProvider) - [`createContext`](https://reactrouter.com/api/utils/createContext) - `createBrowserRouter` [`getContext`](https://reactrouter.com/api/data-routers/createBrowserRouter#optsgetcontext) option @@ -24,7 +18,7 @@ ### Patch Changes - Updated dependencies: - - `react-router@7.9.0-pre.0` + - `react-router@7.9.0` ## 7.8.2 @@ -212,6 +206,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` @@ -220,6 +215,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 74b6df7b30..287872d694 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.9.0-pre.1", + "version": "7.9.0", "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 b88c735d67..47d3aa31a9 100644 --- a/packages/react-router-dev/CHANGELOG.md +++ b/packages/react-router-dev/CHANGELOG.md @@ -1,21 +1,13 @@ # `@react-router/dev` -## 7.9.0-pre.1 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.9.0-pre.1` - - `@react-router/node@7.9.0-pre.1` - - `@react-router/serve@7.9.0-pre.1` - -## 7.9.0-pre.0 +## 7.9.0 ### Minor Changes - Stabilize middleware and context APIs. ([#14215](https://github.com/remix-run/react-router/pull/14215)) We have removed the `unstable_` prefix from the following APIs and they are now considered stable and ready for production use: + - [`RouterContextProvider`](https://reactrouter.com/api/utils/RouterContextProvider) - [`createContext`](https://reactrouter.com/api/utils/createContext) - `createBrowserRouter` [`getContext`](https://reactrouter.com/api/data-routers/createBrowserRouter#optsgetcontext) option @@ -26,9 +18,9 @@ ### Patch Changes - Updated dependencies: - - `react-router@7.9.0-pre.0` - - `@react-router/node@7.9.0-pre.0` - - `@react-router/serve@7.9.0-pre.0` + - `react-router@7.9.0` + - `@react-router/node@7.9.0` + - `@react-router/serve@7.9.0` ## 7.8.2 @@ -758,6 +750,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 @@ -772,6 +765,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) @@ -971,6 +965,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` @@ -1307,6 +1302,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 @@ -1710,6 +1706,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) @@ -1807,6 +1804,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 @@ -2077,6 +2075,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 e6fe117c08..361fe17038 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.9.0-pre.1", + "version": "7.9.0", "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 3adea5f014..a354aeaa86 100644 --- a/packages/react-router-dom/CHANGELOG.md +++ b/packages/react-router-dom/CHANGELOG.md @@ -1,18 +1,11 @@ # react-router-dom -## 7.9.0-pre.1 +## 7.9.0 ### Patch Changes - Updated dependencies: - - `react-router@7.9.0-pre.1` - -## 7.9.0-pre.0 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.9.0-pre.0` + - `react-router@7.9.0` ## 7.8.2 diff --git a/packages/react-router-dom/package.json b/packages/react-router-dom/package.json index 51b582388c..0f6a117a57 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.9.0-pre.1", + "version": "7.9.0", "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 95b3d1c250..b7501da330 100644 --- a/packages/react-router-express/CHANGELOG.md +++ b/packages/react-router-express/CHANGELOG.md @@ -1,20 +1,13 @@ # `@react-router/express` -## 7.9.0-pre.1 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.9.0-pre.1` - - `@react-router/node@7.9.0-pre.1` - -## 7.9.0-pre.0 +## 7.9.0 ### Minor Changes - Stabilize middleware and context APIs. ([#14215](https://github.com/remix-run/react-router/pull/14215)) We have removed the `unstable_` prefix from the following APIs and they are now considered stable and ready for production use: + - [`RouterContextProvider`](https://reactrouter.com/api/utils/RouterContextProvider) - [`createContext`](https://reactrouter.com/api/utils/createContext) - `createBrowserRouter` [`getContext`](https://reactrouter.com/api/data-routers/createBrowserRouter#optsgetcontext) option @@ -25,8 +18,8 @@ ### Patch Changes - Updated dependencies: - - `react-router@7.9.0-pre.0` - - `@react-router/node@7.9.0-pre.0` + - `react-router@7.9.0` + - `@react-router/node@7.9.0` ## 7.8.2 diff --git a/packages/react-router-express/package.json b/packages/react-router-express/package.json index 9d2f0d8bd9..a58c403c92 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.9.0-pre.1", + "version": "7.9.0", "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 dd700c3108..619521de63 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.9.0-pre.1 +## 7.9.0 ### Patch Changes - Updated dependencies: - - `@react-router/dev@7.9.0-pre.1` - -## 7.9.0-pre.0 - -### Patch Changes - -- Updated dependencies: - - `@react-router/dev@7.9.0-pre.0` + - `@react-router/dev@7.9.0` ## 7.8.2 diff --git a/packages/react-router-fs-routes/package.json b/packages/react-router-fs-routes/package.json index 0c0cd21337..b8ca3f3de1 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.9.0-pre.1", + "version": "7.9.0", "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 5307b42801..e8f6d1b735 100644 --- a/packages/react-router-node/CHANGELOG.md +++ b/packages/react-router-node/CHANGELOG.md @@ -1,19 +1,13 @@ # `@react-router/node` -## 7.9.0-pre.1 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.9.0-pre.1` - -## 7.9.0-pre.0 +## 7.9.0 ### Minor Changes - Stabilize middleware and context APIs. ([#14215](https://github.com/remix-run/react-router/pull/14215)) We have removed the `unstable_` prefix from the following APIs and they are now considered stable and ready for production use: + - [`RouterContextProvider`](https://reactrouter.com/api/utils/RouterContextProvider) - [`createContext`](https://reactrouter.com/api/utils/createContext) - `createBrowserRouter` [`getContext`](https://reactrouter.com/api/data-routers/createBrowserRouter#optsgetcontext) option @@ -24,7 +18,7 @@ ### Patch Changes - Updated dependencies: - - `react-router@7.9.0-pre.0` + - `react-router@7.9.0` ## 7.8.2 @@ -213,6 +207,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` @@ -221,6 +216,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` @@ -628,10 +624,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 cdb9580f40..9d93b27ac0 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.9.0-pre.1", + "version": "7.9.0", "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 77412280ec..94585601cf 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.9.0-pre.1 +## 7.9.0 ### Patch Changes - Updated dependencies: - - `@react-router/dev@7.9.0-pre.1` - -## 7.9.0-pre.0 - -### Patch Changes - -- Updated dependencies: - - `@react-router/dev@7.9.0-pre.0` + - `@react-router/dev@7.9.0` ## 7.8.2 diff --git a/packages/react-router-remix-routes-option-adapter/package.json b/packages/react-router-remix-routes-option-adapter/package.json index b030817de4..1f1359d1dc 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.9.0-pre.1", + "version": "7.9.0", "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 6685f99b60..f84c990c1f 100644 --- a/packages/react-router-serve/CHANGELOG.md +++ b/packages/react-router-serve/CHANGELOG.md @@ -1,22 +1,13 @@ # `@react-router/serve` -## 7.9.0-pre.1 +## 7.9.0 ### Patch Changes - Updated dependencies: - - `react-router@7.9.0-pre.1` - - `@react-router/node@7.9.0-pre.1` - - `@react-router/express@7.9.0-pre.1` - -## 7.9.0-pre.0 - -### Patch Changes - -- Updated dependencies: - - `react-router@7.9.0-pre.0` - - `@react-router/express@7.9.0-pre.0` - - `@react-router/node@7.9.0-pre.0` + - `react-router@7.9.0` + - `@react-router/express@7.9.0` + - `@react-router/node@7.9.0` ## 7.8.2 @@ -626,10 +617,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 3114be96f5..18bd23a0e6 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.9.0-pre.1", + "version": "7.9.0", "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 2d014c571a..cd1d12b459 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -1,18 +1,13 @@ # `react-router` -## 7.9.0-pre.1 - -### Patch Changes - -- Escape HTML in `meta()` JSON-LD content ([#14316](https://github.com/remix-run/react-router/pull/14316)) - -## 7.9.0-pre.0 +## 7.9.0 ### Minor Changes - Stabilize middleware and context APIs. ([#14215](https://github.com/remix-run/react-router/pull/14215)) We have removed the `unstable_` prefix from the following APIs and they are now considered stable and ready for production use: + - [`RouterContextProvider`](https://reactrouter.com/api/utils/RouterContextProvider) - [`createContext`](https://reactrouter.com/api/utils/createContext) - `createBrowserRouter` [`getContext`](https://reactrouter.com/api/data-routers/createBrowserRouter#optsgetcontext) option @@ -22,6 +17,7 @@ ### Patch Changes +- Escape HTML in `meta()` JSON-LD content ([#14316](https://github.com/remix-run/react-router/pull/14316)) - Add react-server Await component implementation ([#14261](https://github.com/remix-run/react-router/pull/14261)) - In RSC Data Mode when using a custom basename, fix hydration errors for routes that only have client loaders ([#14264](https://github.com/remix-run/react-router/pull/14264)) - Make `href` function available in a react-server context ([#14262](https://github.com/remix-run/react-router/pull/14262)) @@ -38,7 +34,7 @@ - \[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)) @@ -87,6 +83,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. @@ -120,6 +117,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` @@ -765,6 +763,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 - `` @@ -952,6 +951,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` @@ -960,6 +960,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` @@ -1115,6 +1116,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 @@ -1129,6 +1131,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 49aedae788..f58103527a 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "react-router", - "version": "7.9.0-pre.1", + "version": "7.9.0", "description": "Declarative routing for React", "keywords": [ "react",