diff --git a/.changeset/unlucky-melons-promise.md b/.changeset/unlucky-melons-promise.md
new file mode 100644
index 00000000000..b43ab5968b4
--- /dev/null
+++ b/.changeset/unlucky-melons-promise.md
@@ -0,0 +1,5 @@
+---
+"@remix-run/react": patch
+---
+
+Throw unwrapped single fetch redirect to align with pre-single fetch behavior
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 19e802c8099..1e6dfc31c9f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,22 +13,24 @@ We manage release notes in this file instead of the paginated Github Releases Pa
Table of Contents
- [Remix Releases](#remix-releases)
+ - [v2.15.0](#v2150)
+ - [Patch Changes](#patch-changes)
- [v2.14.0](#v2140)
- [Minor Changes](#minor-changes)
- - [Patch Changes](#patch-changes)
+ - [Patch Changes](#patch-changes-1)
- [Updated Dependencies](#updated-dependencies)
- [Changes by Package](#changes-by-package)
- [v2.13.1](#v2131)
- - [Patch Changes](#patch-changes-1)
+ - [Patch Changes](#patch-changes-2)
- [v2.13.0](#v2130)
- [What's Changed](#whats-changed)
- [Stabilized APIs](#stabilized-apis)
- [Minor Changes](#minor-changes-1)
- - [Patch Changes](#patch-changes-2)
+ - [Patch Changes](#patch-changes-3)
- [Updated Dependencies](#updated-dependencies-1)
- [Changes by Package](#changes-by-package-1)
- [v2.12.1](#v2121)
- - [Patch Changes](#patch-changes-3)
+ - [Patch Changes](#patch-changes-4)
- [Changes by Package](#changes-by-package-2)
- [v2.12.0](#v2120)
- [What's Changed](#whats-changed-1)
@@ -36,72 +38,72 @@ We manage release notes in this file instead of the paginated Github Releases Pa
- [Improved Single Fetch Type Safety (unstable)](#improved-single-fetch-type-safety-unstable)
- [Updates to Single Fetch Revalidation Behavior (unstable)](#updates-to-single-fetch-revalidation-behavior-unstable)
- [Minor Changes](#minor-changes-2)
- - [Patch Changes](#patch-changes-4)
+ - [Patch Changes](#patch-changes-5)
- [Updated Dependencies](#updated-dependencies-2)
- [Changes by Package](#changes-by-package-3)
- [v2.11.2](#v2112)
- - [Patch Changes](#patch-changes-5)
+ - [Patch Changes](#patch-changes-6)
- [Updated Dependencies](#updated-dependencies-3)
- [Changes by Package](#changes-by-package-4)
- [v2.11.1](#v2111)
- - [Patch Changes](#patch-changes-6)
+ - [Patch Changes](#patch-changes-7)
- [Changes by Package](#changes-by-package-5)
- [v2.11.0](#v2110)
- [What's Changed](#whats-changed-2)
- [Renamed `unstable_fogOfWar` future flag to `unstable_lazyRouteDiscovery` (unstable)](#renamed-unstable_fogofwar-future-flag-to-unstable_lazyroutediscovery-unstable)
- [Removed `response` stub in Single Fetch (unstable)](#removed-response-stub-in-single-fetch-unstable)
- [Minor Changes](#minor-changes-3)
- - [Patch Changes](#patch-changes-7)
+ - [Patch Changes](#patch-changes-8)
- [Updated Dependencies](#updated-dependencies-4)
- [Changes by Package](#changes-by-package-6)
- [v2.10.3](#v2103)
- - [Patch Changes](#patch-changes-8)
+ - [Patch Changes](#patch-changes-9)
- [Updated Dependencies](#updated-dependencies-5)
- [Changes by Package](#changes-by-package-7)
- [v2.10.2](#v2102)
- - [Patch Changes](#patch-changes-9)
+ - [Patch Changes](#patch-changes-10)
- [Changes by Package](#changes-by-package-8)
- [v2.10.1](#v2101)
- - [Patch Changes](#patch-changes-10)
+ - [Patch Changes](#patch-changes-11)
- [Updated Dependencies](#updated-dependencies-6)
- [Changes by Package](#changes-by-package-9)
- [v2.10.0](#v2100)
- [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-4)
- - [Patch Changes](#patch-changes-11)
+ - [Patch Changes](#patch-changes-12)
- [Updated Dependencies](#updated-dependencies-7)
- [Changes by Package](#changes-by-package-10)
- [v2.9.2](#v292)
- [What's Changed](#whats-changed-4)
- [Updated Type-Safety for Single Fetch](#updated-type-safety-for-single-fetch)
- - [Patch Changes](#patch-changes-12)
+ - [Patch Changes](#patch-changes-13)
- [Updated Dependencies](#updated-dependencies-8)
- [Changes by Package](#changes-by-package-11)
- [v2.9.1](#v291)
- - [Patch Changes](#patch-changes-13)
+ - [Patch Changes](#patch-changes-14)
- [Changes by Package](#changes-by-package-12)
- [v2.9.0](#v290)
- [What's Changed](#whats-changed-5)
- [Single Fetch (unstable)](#single-fetch-unstable)
- [Undici](#undici)
- [Minor Changes](#minor-changes-5)
- - [Patch Changes](#patch-changes-14)
+ - [Patch Changes](#patch-changes-15)
- [Updated Dependencies](#updated-dependencies-9)
- [Changes by Package](#changes-by-package-13)
- [v2.8.1](#v281)
- - [Patch Changes](#patch-changes-15)
+ - [Patch Changes](#patch-changes-16)
- [Updated Dependencies](#updated-dependencies-10)
- [Changes by Package](#changes-by-package-14)
- [v2.8.0](#v280)
- [Minor Changes](#minor-changes-6)
- - [Patch Changes](#patch-changes-16)
+ - [Patch Changes](#patch-changes-17)
- [Updated Dependencies](#updated-dependencies-11)
- [Changes by Package](#changes-by-package-15)
- [2.7.2](#272)
- - [Patch Changes](#patch-changes-17)
- - [2.7.1](#271)
- [Patch Changes](#patch-changes-18)
+ - [2.7.1](#271)
+ - [Patch Changes](#patch-changes-19)
- [v2.7.0](#v270)
- [What's Changed](#whats-changed-6)
- [Stabilized Vite Plugin](#stabilized-vite-plugin)
@@ -109,18 +111,18 @@ We manage release notes in this file instead of the paginated Github Releases Pa
- [Basename support](#basename-support)
- [Cloudflare Proxy as a Vite Plugin](#cloudflare-proxy-as-a-vite-plugin)
- [Minor Changes](#minor-changes-7)
- - [Patch Changes](#patch-changes-19)
+ - [Patch Changes](#patch-changes-20)
- [Updated Dependencies](#updated-dependencies-12)
- [Changes by Package](#changes-by-package-16)
- [v2.6.0](#v260)
- [What's Changed](#whats-changed-7)
- [Unstable Vite Plugin updates](#unstable-vite-plugin-updates)
- [Minor Changes](#minor-changes-8)
- - [Patch Changes](#patch-changes-20)
+ - [Patch Changes](#patch-changes-21)
- [Updated Dependencies](#updated-dependencies-13)
- [Changes by Package](#changes-by-package-17)
- [v2.5.1](#v251)
- - [Patch Changes](#patch-changes-21)
+ - [Patch Changes](#patch-changes-22)
- [Updated Dependencies](#updated-dependencies-14)
- [Changes by Package](#changes-by-package-18)
- [v2.5.0](#v250)
@@ -128,11 +130,11 @@ We manage release notes in this file instead of the paginated Github Releases Pa
- [SPA Mode (unstable)](#spa-mode-unstable)
- [Server Bundles (unstable)](#server-bundles-unstable)
- [Minor Changes](#minor-changes-9)
- - [Patch Changes](#patch-changes-22)
+ - [Patch Changes](#patch-changes-23)
- [Updated Dependencies](#updated-dependencies-15)
- [Changes by Package](#changes-by-package-19)
- [v2.4.1](#v241)
- - [Patch Changes](#patch-changes-23)
+ - [Patch Changes](#patch-changes-24)
- [Updated Dependencies](#updated-dependencies-16)
- [Changes by Package](#changes-by-package-20)
- [v2.4.0](#v240)
@@ -141,11 +143,11 @@ We manage release notes in this file instead of the paginated Github Releases Pa
- [`future.v3_relativeSplatPath`](#futurev3_relativesplatpath)
- [Vite Updates (Unstable)](#vite-updates-unstable)
- [Minor Changes](#minor-changes-10)
- - [Patch Changes](#patch-changes-24)
+ - [Patch Changes](#patch-changes-25)
- [Updated Dependencies](#updated-dependencies-17)
- [Changes by Package](#changes-by-package-21)
- [v2.3.1](#v231)
- - [Patch Changes](#patch-changes-25)
+ - [Patch Changes](#patch-changes-26)
- [Updated Dependencies](#updated-dependencies-18)
- [Changes by Package](#changes-by-package-22)
- [v2.3.0](#v230)
@@ -153,7 +155,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa
- [Stabilized `useBlocker`](#stabilized-useblocker)
- [`unstable_flushSync` API](#unstable_flushsync-api)
- [Minor Changes](#minor-changes-11)
- - [Patch Changes](#patch-changes-26)
+ - [Patch Changes](#patch-changes-27)
- [Updated Dependencies](#updated-dependencies-19)
- [Changes by Package](#changes-by-package-23)
- [v2.2.0](#v220)
@@ -162,7 +164,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa
- [New Fetcher APIs](#new-fetcher-apis)
- [Persistence Future Flag](#persistence-future-flag)
- [Minor Changes](#minor-changes-12)
- - [Patch Changes](#patch-changes-27)
+ - [Patch Changes](#patch-changes-28)
- [Updated Dependencies](#updated-dependencies-20)
- [Changes by Package](#changes-by-package-24)
- [v2.1.0](#v210)
@@ -170,11 +172,11 @@ We manage release notes in this file instead of the paginated Github Releases Pa
- [View Transitions](#view-transitions)
- [Stable `createRemixStub`](#stable-createremixstub)
- [Minor Changes](#minor-changes-13)
- - [Patch Changes](#patch-changes-28)
+ - [Patch Changes](#patch-changes-29)
- [Updated Dependencies](#updated-dependencies-21)
- [Changes by Package](#changes-by-package-25)
- [v2.0.1](#v201)
- - [Patch Changes](#patch-changes-29)
+ - [Patch Changes](#patch-changes-30)
- [Changes by Package 🔗](#changes-by-package-)
- [v2.0.0](#v200)
- [Breaking Changes](#breaking-changes)
@@ -238,6 +240,33 @@ Date: YYYY-MM-DD
-->
+## v2.15.1
+
+Date: 2024-12-09
+
+### Patch Changes
+
+- `create-remix` - Move `fs-extra` from `devDependencies` to `dependencies` ([#10300](https://github.com/remix-run/remix/pull/10300))
+
+**Full Changelog**: [`v2.15.0...v2.15.1`](https://github.com/remix-run/remix/compare/remix@2.15.0...remix@2.15.1)
+
+## v2.15.0
+
+Date: 2024-11-19
+
+### Patch Changes
+
+- Stabilize the `future.v3_routeConfig` future flag, replacing `future.unstable_routeConfig`. This enables support for `routes.ts` to assist with the migration to React Router v7. ([#10236](https://github.com/remix-run/remix/pull/10236))
+
+ Note that if you had already enabled the `future.unstable_routeConfig` flag, your route config in `app/routes.ts` is no longer defined via the `routes` export and must now be defined via the default export.
+
+ ```diff
+ import { type RouteConfig } from "@remix-run/route-config";
+
+ -export const routes: RouteConfig = [];
+ +export default [] satisfies RouteConfig;
+ ```
+
## v2.14.0
Date: 2024-11-08
@@ -277,8 +306,8 @@ Date: 2024-11-08
### Patch Changes
-- Fix `defaultShouldRevalidate` value when using single fetch ([#10139](https://github.com/remix-run/remix/pull/10139))
-- Update externally-accessed resource routes warning to cover null usage as well ([#10145](https://github.com/remix-run/remix/pull/10145))
+- `@remix-run/react` - Fix `defaultShouldRevalidate` value when using Single Fetch ([#10139](https://github.com/remix-run/remix/pull/10139))
+- `@remix-run/server-runtime` - Update externally-accessed resource routes warning to cover `null` usage as well ([#10145](https://github.com/remix-run/remix/pull/10145))
### Updated Dependencies
diff --git a/contributors.yml b/contributors.yml
index b2f167342cf..1cf5b18466a 100644
--- a/contributors.yml
+++ b/contributors.yml
@@ -51,6 +51,7 @@
- apeltop
- appden
- Aprillion
+- Ar1f007
- arange
- archwebio
- arekmaz
@@ -375,6 +376,7 @@
- kiyadotdev
- klauspaiva
- klirium
+- knisterpeter
- knowler
- konradkalemba
- krolebord
@@ -553,6 +555,7 @@
- pyr0gan
- ramiroazar
- RATIU5
+- raulfdm
- raulrpearson
- real34
- realjokele
@@ -560,6 +563,7 @@
- reggie3
- reichhartd
- remix-run-bot
+- rhryansu
- richardhunghhw
- riencoertjens
- risv1
diff --git a/docs/start/future-flags.md b/docs/start/future-flags.md
index 025c1c5c04c..f636ad7510f 100644
--- a/docs/start/future-flags.md
+++ b/docs/start/future-flags.md
@@ -454,7 +454,7 @@ export async function loader({}: LoaderFunctionArgs) {
}
```
-If you were using the second parameter of `json`/`defer` to set a custom status or headers on your response, you can continue doing do via the new `data` API:
+If you were using the second parameter of `json`/`defer` to set a custom status or headers on your response, you can continue doing so via the new `data` API:
```diff
-import { json } from "@remix-run/node";
@@ -511,7 +511,7 @@ function handleBrowserRequest(/* ... */) {
}
```
-## unstable_routeConfig
+## v3_routeConfig
@@ -521,7 +521,7 @@ This flag requires the [Vite plugin][vite-plugin].
Config-based routing is the new default in React Router v7, configured via the `routes.ts` file in the app directory. Support for `routes.ts` and its related APIs in Remix are designed as a migration path to help minimize the number of changes required when moving your Remix project over to React Router v7. While some new packages have been introduced within the `@remix-run` scope, these new packages only exist to keep the code in `routes.ts` as similar as possible to the equivalent code for React Router v7.
-When the `unstable_routeConfig` future flag is enabled, Remix's built-in file system routing will be disabled and your project will opted into React Router v7's config-based routing. If you prefer to keep using Remix's file-based routing we cover how to enable it in `routes.ts` below.
+When the `v3_routeConfig` future flag is enabled, Remix's built-in file system routing will be disabled and your project will opted into React Router v7's config-based routing. If you prefer to keep using Remix's file-based routing we cover how to enable it in `routes.ts` below.
**Update your code**
@@ -532,7 +532,7 @@ To migrate Remix's file system routing and route config to the equivalent setup
```ts filename=vite.config.ts
remix({
future: {
- unstable_routeConfig: true,
+ v3_routeConfig: true,
},
});
```
@@ -556,7 +556,7 @@ touch app/routes.ts
```ts filename=app/routes.ts
import type { RouteConfig } from "@remix-run/route-config";
-export const routes: RouteConfig = [];
+export default [] satisfies RouteConfig;
```
This is a good way to check that your new `routes.ts` file is being picked up successfully. Your app should now be rendering a blank page since there aren't any routes defined yet.
@@ -573,9 +573,8 @@ This package matches the API of React Router v7's `@react-router/fs-routes`, mak
```ts filename=app/routes.ts
import { flatRoutes } from "@remix-run/fs-routes";
-import type { RouteConfig } from "@remix-run/route-config";
-export const routes: RouteConfig = flatRoutes();
+export default flatRoutes();
```
👉 **If you used the `routes` config option, add `@remix-run/routes-option-adapter` and use it in `routes.ts`**
@@ -601,9 +600,9 @@ import { type RouteConfig } from "@remix-run/route-config";
import { remixRoutesOptionAdapter } from "@remix-run/routes-option-adapter";
import { flatRoutes } from "remix-flat-routes";
-export const routes: RouteConfig = remixRoutesOptionAdapter(
- (defineRoutes) => flatRoutes("routes", defineRoutes)
-);
+export default remixRoutesOptionAdapter((defineRoutes) =>
+ flatRoutes("routes", defineRoutes)
+) satisfies RouteConfig;
```
Or, if you were using the `routes` option to define config-based routes:
@@ -613,18 +612,16 @@ import { flatRoutes } from "@remix-run/fs-routes";
import { type RouteConfig } from "@remix-run/route-config";
import { remixRoutesOptionAdapter } from "@remix-run/routes-option-adapter";
-export const routes: RouteConfig = remixRoutesOptionAdapter(
- (defineRoutes) => {
- return defineRoutes((route) => {
- route("/", "home/route.tsx", { index: true });
- route("about", "about/route.tsx");
- route("", "concerts/layout.tsx", () => {
- route("trending", "concerts/trending.tsx");
- route(":city", "concerts/city.tsx");
- });
+export default remixRoutesOptionAdapter((defineRoutes) => {
+ return defineRoutes((route) => {
+ route("/", "home/route.tsx", { index: true });
+ route("about", "about/route.tsx");
+ route("", "concerts/layout.tsx", () => {
+ route("trending", "concerts/trending.tsx");
+ route(":city", "concerts/city.tsx");
});
- }
-);
+ });
+}) satisfies RouteConfig;
```
If you're defining config-based routes in this way, you might want to consider migrating to the new route config API since it's more streamlined while still being very similar to the old API. For example, the routes above would look like this:
@@ -637,14 +634,14 @@ import {
index,
} from "@remix-run/route-config";
-export const routes: RouteConfig = [
+export default [
index("home/route.tsx"),
route("about", "about/route.tsx"),
layout("concerts/layout.tsx", [
route("trending", "concerts/trending.tsx"),
route(":city", "concerts/city.tsx"),
]),
-];
+] satisfies RouteConfig;
```
Note that if you need to mix and match different route config approaches, they can be merged together into a single array of routes. The `RouteConfig` type ensures that everything is still valid.
@@ -655,13 +652,13 @@ import type { RouteConfig } from "@remix-run/route-config";
import { route } from "@remix-run/route-config";
import { remixRoutesOptionAdapter } from "@remix-run/routes-option-adapter";
-export const routes: RouteConfig = [
+export default [
...(await flatRoutes({ rootDirectory: "fs-routes" })),
...(await remixRoutesOptionAdapter(/* ... */)),
route("/hello", "routes/hello.tsx"),
-];
+] satisfies RouteConfig;
```
## Deprecations
diff --git a/integration/helpers/vite-cloudflare-template/package.json b/integration/helpers/vite-cloudflare-template/package.json
index abc7e42f0d9..7ea4574904b 100644
--- a/integration/helpers/vite-cloudflare-template/package.json
+++ b/integration/helpers/vite-cloudflare-template/package.json
@@ -11,9 +11,9 @@
"typecheck": "tsc"
},
"dependencies": {
- "@remix-run/cloudflare": "2.14.0",
- "@remix-run/cloudflare-pages": "2.14.0",
- "@remix-run/react": "2.14.0",
+ "@remix-run/cloudflare": "2.15.1",
+ "@remix-run/cloudflare-pages": "2.15.1",
+ "@remix-run/react": "2.15.1",
"isbot": "^4.1.0",
"miniflare": "^3.20231030.4",
"react": "^18.2.0",
diff --git a/integration/helpers/vite.ts b/integration/helpers/vite.ts
index c3095a9e6d4..cf6cc609dbf 100644
--- a/integration/helpers/vite.ts
+++ b/integration/helpers/vite.ts
@@ -43,7 +43,7 @@ export const viteConfig = {
export default {
${await viteConfig.server(args)}
plugins: [remix(${
- args.routeConfig ? "{ future: { unstable_routeConfig: true } }" : ""
+ args.routeConfig ? "{ future: { v3_routeConfig: true } }" : ""
})]
}
`;
diff --git a/integration/vite-fs-routes-test.ts b/integration/vite-fs-routes-test.ts
index 856c61ba5e3..207feca3622 100644
--- a/integration/vite-fs-routes-test.ts
+++ b/integration/vite-fs-routes-test.ts
@@ -24,7 +24,7 @@ test.describe("fs-routes", () => {
export default defineConfig({
plugins: [remix({
- future: { unstable_routeConfig: true },
+ future: { v3_routeConfig: true },
})],
});
`,
@@ -33,7 +33,7 @@ test.describe("fs-routes", () => {
import { flatRoutes } from "@remix-run/fs-routes";
import { remixRoutesOptionAdapter } from "@remix-run/routes-option-adapter";
- export const routes: RouteConfig = [
+ export default [
...await flatRoutes({
rootDirectory: "fs-routes",
ignoredRouteFiles: ["**/ignored-route.*"],
@@ -46,7 +46,7 @@ test.describe("fs-routes", () => {
route("/routes/option/adapter/route", "routes-option-adapter-route.tsx")
});
})
- ];
+ ] satisfies RouteConfig;
`,
"app/root.tsx": js`
import { Links, Meta, Outlet, Scripts } from "@remix-run/react";
@@ -257,7 +257,7 @@ test.describe("emits warnings for route conflicts", async () => {
export default defineConfig({
plugins: [remix({
- future: { unstable_routeConfig: true },
+ future: { v3_routeConfig: true },
})],
});
`,
@@ -265,9 +265,9 @@ test.describe("emits warnings for route conflicts", async () => {
import { type RouteConfig } from "@remix-run/route-config";
import { flatRoutes } from "@remix-run/fs-routes";
- export const routes: RouteConfig = flatRoutes({
+ export default flatRoutes({
rootDirectory: "fs-routes",
- });
+ }) satisfies RouteConfig;
`,
"fs-routes/_dashboard._index.tsx": js`
export default function () {
@@ -331,7 +331,7 @@ test.describe("", () => {
export default defineConfig({
plugins: [remix({
- future: { unstable_routeConfig: true },
+ future: { v3_routeConfig: true },
})],
});
`,
@@ -339,9 +339,9 @@ test.describe("", () => {
import { type RouteConfig } from "@remix-run/route-config";
import { flatRoutes } from "@remix-run/fs-routes";
- export const routes: RouteConfig = flatRoutes({
+ export default flatRoutes({
rootDirectory: "fs-routes",
- });
+ }) satisfies RouteConfig;
`,
"app/fs-routes/_index/route.tsx": js``,
"app/fs-routes/_index/utils.ts": js``,
@@ -380,7 +380,7 @@ test.describe("pathless routes and route collisions", () => {
export default defineConfig({
plugins: [remix({
- future: { unstable_routeConfig: true },
+ future: { v3_routeConfig: true },
})],
});
`,
@@ -388,9 +388,9 @@ test.describe("pathless routes and route collisions", () => {
import { type RouteConfig } from "@remix-run/route-config";
import { flatRoutes } from "@remix-run/fs-routes";
- export const routes: RouteConfig = flatRoutes({
+ export default flatRoutes({
rootDirectory: "fs-routes",
- });
+ }) satisfies RouteConfig;
`,
"app/root.tsx": js`
import { Link, Outlet, Scripts, useMatches } from "@remix-run/react";
diff --git a/integration/vite-route-config-test.ts b/integration/vite-route-config-test.ts
index f5f63d2c2fa..daf2e1a25be 100644
--- a/integration/vite-route-config-test.ts
+++ b/integration/vite-route-config-test.ts
@@ -43,7 +43,7 @@ test.describe("route config", () => {
export default {
plugins: [remix({
- future: { unstable_routeConfig: true },
+ future: { v3_routeConfig: true },
})]
}
`,
@@ -64,12 +64,12 @@ test.describe("route config", () => {
export default {
plugins: [remix({
- future: { unstable_routeConfig: true },
+ future: { v3_routeConfig: true },
routes: () => {},
})]
}
`,
- "app/routes.ts": `export const routes = [];`,
+ "app/routes.ts": `export default [];`,
});
let buildResult = viteBuild({ cwd });
expect(buildResult.status).toBe(1);
@@ -88,12 +88,12 @@ test.describe("route config", () => {
export default {
${await viteConfig.server({ port })}
plugins: [remix({
- future: { unstable_routeConfig: true },
+ future: { v3_routeConfig: true },
routes: () => {},
})]
}
`,
- "app/routes.ts": `export const routes = [];`,
+ "app/routes.ts": `export default [];`,
});
let devError: Error | undefined;
try {
@@ -113,7 +113,7 @@ test.describe("route config", () => {
export default {
plugins: [remix({
- future: { unstable_routeConfig: true },
+ future: { v3_routeConfig: true },
})]
}
`,
@@ -161,9 +161,9 @@ test.describe("route config", () => {
"app/routes.ts": js`
import { type RouteConfig, index } from "@remix-run/route-config";
- export const routes: RouteConfig = [
+ export default [
index("test-route-1.tsx"),
- ];
+ ] satisfies RouteConfig;
`,
"app/test-route-1.tsx": `
export default function TestRoute1() {
@@ -220,14 +220,14 @@ test.describe("route config", () => {
port,
}),
"app/routes.ts": js`
- export { routes } from "./actual-routes";
+ export { default } from "./actual-routes";
`,
"app/actual-routes.ts": js`
import { type RouteConfig, index } from "@remix-run/route-config";
- export const routes: RouteConfig = [
+ export default [
index("test-route-1.tsx"),
- ];
+ ] satisfies RouteConfig;
`,
"app/test-route-1.tsx": `
export default function TestRoute1() {
@@ -286,9 +286,9 @@ test.describe("route config", () => {
"app/routes.ts": js`
import { type RouteConfig, index } from "@remix-run/route-config";
- export const routes: RouteConfig = [
+ export default [
index("test-route-1.tsx"),
- ];
+ ] satisfies RouteConfig;
`,
"app/test-route-1.tsx": `
export default function TestRoute1() {
@@ -354,9 +354,9 @@ test.describe("route config", () => {
import path from "node:path";
import { type RouteConfig, index } from "@remix-run/route-config";
- export const routes: RouteConfig = [
+ export default [
index(path.resolve(import.meta.dirname, "test-route.tsx")),
- ];
+ ] satisfies RouteConfig;
`,
"app/test-route.tsx": `
export default function TestRoute() {
diff --git a/packages/create-remix/CHANGELOG.md b/packages/create-remix/CHANGELOG.md
index 8f0ee4ed477..aeed6707d5c 100644
--- a/packages/create-remix/CHANGELOG.md
+++ b/packages/create-remix/CHANGELOG.md
@@ -1,4 +1,12 @@
-# create-remix
+# `create-remix`
+
+## 2.15.1
+
+### Patch Changes
+
+- Move `fs-extra` from `devDependencies` to `dependencies` ([#10300](https://github.com/remix-run/remix/pull/10300))
+
+## 2.15.0
## 2.14.0
diff --git a/packages/create-remix/package.json b/packages/create-remix/package.json
index fc2cb53f8d9..74728b562ff 100644
--- a/packages/create-remix/package.json
+++ b/packages/create-remix/package.json
@@ -1,6 +1,6 @@
{
"name": "create-remix",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Create a new Remix app",
"homepage": "https://remix.run",
"bugs": {
@@ -24,6 +24,7 @@
"arg": "^5.0.1",
"chalk": "^4.1.2",
"execa": "5.1.1",
+ "fs-extra": "^10.0.0",
"gunzip-maybe": "^1.4.2",
"log-update": "^5.0.1",
"proxy-agent": "^6.3.0",
@@ -41,7 +42,6 @@
"@types/tar-fs": "^2.0.1",
"esbuild": "0.17.6",
"esbuild-register": "^3.3.2",
- "fs-extra": "^10.0.0",
"msw": "^1.2.3",
"tiny-invariant": "^1.2.0"
},
diff --git a/packages/remix-architect/CHANGELOG.md b/packages/remix-architect/CHANGELOG.md
index c373e27b5f9..c72e1d6d959 100644
--- a/packages/remix-architect/CHANGELOG.md
+++ b/packages/remix-architect/CHANGELOG.md
@@ -1,4 +1,18 @@
-# @remix-run/architect
+# `@remix-run/architect`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/node@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/node@2.15.0`
## 2.14.0
diff --git a/packages/remix-architect/package.json b/packages/remix-architect/package.json
index cf18f7e6745..a969c3d2d69 100644
--- a/packages/remix-architect/package.json
+++ b/packages/remix-architect/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/architect",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Architect server request handler for Remix",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
diff --git a/packages/remix-cloudflare-pages/CHANGELOG.md b/packages/remix-cloudflare-pages/CHANGELOG.md
index d7fb9b400b1..0b30f3fe549 100644
--- a/packages/remix-cloudflare-pages/CHANGELOG.md
+++ b/packages/remix-cloudflare-pages/CHANGELOG.md
@@ -1,4 +1,18 @@
-# @remix-run/cloudflare-pages
+# `@remix-run/cloudflare-pages`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/cloudflare@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/cloudflare@2.15.0`
## 2.14.0
diff --git a/packages/remix-cloudflare-pages/package.json b/packages/remix-cloudflare-pages/package.json
index 7b800235c99..4d9eabf3a76 100644
--- a/packages/remix-cloudflare-pages/package.json
+++ b/packages/remix-cloudflare-pages/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/cloudflare-pages",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Cloudflare Pages request handler for Remix",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
diff --git a/packages/remix-cloudflare-workers/CHANGELOG.md b/packages/remix-cloudflare-workers/CHANGELOG.md
index 2607bae15bc..415c411e0ad 100644
--- a/packages/remix-cloudflare-workers/CHANGELOG.md
+++ b/packages/remix-cloudflare-workers/CHANGELOG.md
@@ -1,4 +1,18 @@
-# @remix-run/cloudflare-workers
+# `@remix-run/cloudflare-workers`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/cloudflare@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/cloudflare@2.15.0`
## 2.14.0
diff --git a/packages/remix-cloudflare-workers/package.json b/packages/remix-cloudflare-workers/package.json
index ec028a97223..8600cc7da1b 100644
--- a/packages/remix-cloudflare-workers/package.json
+++ b/packages/remix-cloudflare-workers/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/cloudflare-workers",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Cloudflare worker request handler for Remix",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
diff --git a/packages/remix-cloudflare/CHANGELOG.md b/packages/remix-cloudflare/CHANGELOG.md
index ac1204dbd94..b91a6aa9b1a 100644
--- a/packages/remix-cloudflare/CHANGELOG.md
+++ b/packages/remix-cloudflare/CHANGELOG.md
@@ -1,4 +1,18 @@
-# @remix-run/cloudflare
+# `@remix-run/cloudflare`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/server-runtime@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/server-runtime@2.15.0`
## 2.14.0
diff --git a/packages/remix-cloudflare/package.json b/packages/remix-cloudflare/package.json
index d56d9d50692..7e90b355a0d 100644
--- a/packages/remix-cloudflare/package.json
+++ b/packages/remix-cloudflare/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/cloudflare",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Cloudflare platform abstractions for Remix",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
diff --git a/packages/remix-css-bundle/CHANGELOG.md b/packages/remix-css-bundle/CHANGELOG.md
index db8db0df198..46725d1cd4b 100644
--- a/packages/remix-css-bundle/CHANGELOG.md
+++ b/packages/remix-css-bundle/CHANGELOG.md
@@ -1,4 +1,8 @@
-# @remix-run/css-bundle
+# `@remix-run/css-bundle`
+
+## 2.15.1
+
+## 2.15.0
## 2.14.0
diff --git a/packages/remix-css-bundle/package.json b/packages/remix-css-bundle/package.json
index 0eb1102658a..593ca9f55d7 100644
--- a/packages/remix-css-bundle/package.json
+++ b/packages/remix-css-bundle/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/css-bundle",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "CSS bundle href when using CSS bundling features in Remix",
"homepage": "https://remix.run",
"bugs": {
diff --git a/packages/remix-deno/CHANGELOG.md b/packages/remix-deno/CHANGELOG.md
index e317023448b..6d344c94cea 100644
--- a/packages/remix-deno/CHANGELOG.md
+++ b/packages/remix-deno/CHANGELOG.md
@@ -1,4 +1,18 @@
-# @remix-run/deno
+# `@remix-run/deno`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/server-runtime@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/server-runtime@2.15.0`
## 2.14.0
diff --git a/packages/remix-deno/package.json b/packages/remix-deno/package.json
index 63c39a0bf80..59600242b25 100644
--- a/packages/remix-deno/package.json
+++ b/packages/remix-deno/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/deno",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Deno platform abstractions for Remix",
"homepage": "https://remix.run",
"main": "./index.ts",
diff --git a/packages/remix-dev/CHANGELOG.md b/packages/remix-dev/CHANGELOG.md
index 364abeefb6e..819d20e32db 100644
--- a/packages/remix-dev/CHANGELOG.md
+++ b/packages/remix-dev/CHANGELOG.md
@@ -1,4 +1,31 @@
-# @remix-run/dev
+# `@remix-run/dev`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/node@2.15.1`
+ - `@remix-run/server-runtime@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Stabilize the `future.v3_routeConfig` future flag, replacing `future.unstable_routeConfig`. This enables support for `routes.ts` to assist with the migration to React Router v7. ([#10236](https://github.com/remix-run/remix/pull/10236))
+
+ Note that if you had already enabled the `future.unstable_routeConfig` flag, your route config in `app/routes.ts` is no longer defined via the `routes` export and must now be defined via the default export.
+
+ ```diff
+ import { type RouteConfig } from "@remix-run/route-config";
+
+ -export const routes: RouteConfig = [];
+ +export default [] satisfies RouteConfig;
+ ```
+
+- Updated dependencies:
+ - `@remix-run/node@2.15.0`
+ - `@remix-run/server-runtime@2.15.0`
## 2.14.0
diff --git a/packages/remix-dev/__tests__/readConfig-test.ts b/packages/remix-dev/__tests__/readConfig-test.ts
index ca4c9a050a4..f24e37ecf5e 100644
--- a/packages/remix-dev/__tests__/readConfig-test.ts
+++ b/packages/remix-dev/__tests__/readConfig-test.ts
@@ -37,10 +37,10 @@ describe("readConfig", () => {
"entryServerFilePath": Any,
"future": {
"unstable_optimizeDeps": false,
- "unstable_routeConfig": false,
"v3_fetcherPersist": false,
"v3_lazyRouteDiscovery": false,
"v3_relativeSplatPath": false,
+ "v3_routeConfig": false,
"v3_singleFetch": false,
"v3_throwAbortReason": false,
},
diff --git a/packages/remix-dev/config.ts b/packages/remix-dev/config.ts
index 61980caf071..4dd453ea5f7 100644
--- a/packages/remix-dev/config.ts
+++ b/packages/remix-dev/config.ts
@@ -48,10 +48,10 @@ interface FutureConfig {
v3_fetcherPersist: boolean;
v3_relativeSplatPath: boolean;
v3_throwAbortReason: boolean;
+ v3_routeConfig: boolean;
v3_singleFetch: boolean;
v3_lazyRouteDiscovery: boolean;
unstable_optimizeDeps: boolean;
- unstable_routeConfig: boolean;
}
type NodeBuiltinsPolyfillOptions = Pick<
@@ -579,7 +579,7 @@ export async function resolveConfig(
root: { path: "", id: "root", file: rootRouteFile },
};
- if (appConfig.future?.unstable_routeConfig) {
+ if (appConfig.future?.v3_routeConfig) {
invariant(routesViteNodeContext);
invariant(vite);
@@ -612,7 +612,7 @@ export async function resolveConfig(
await routesViteNodeContext.runner.executeFile(
path.join(appDirectory, routeConfigFile)
)
- ).routes;
+ ).default;
let routeConfig = await routeConfigExport;
@@ -719,10 +719,10 @@ export async function resolveConfig(
v3_fetcherPersist: appConfig.future?.v3_fetcherPersist === true,
v3_relativeSplatPath: appConfig.future?.v3_relativeSplatPath === true,
v3_throwAbortReason: appConfig.future?.v3_throwAbortReason === true,
+ v3_routeConfig: appConfig.future?.v3_routeConfig === true,
v3_singleFetch: appConfig.future?.v3_singleFetch === true,
v3_lazyRouteDiscovery: appConfig.future?.v3_lazyRouteDiscovery === true,
unstable_optimizeDeps: appConfig.future?.unstable_optimizeDeps === true,
- unstable_routeConfig: appConfig.future?.unstable_routeConfig === true,
};
if (appConfig.future) {
@@ -732,6 +732,7 @@ export async function resolveConfig(
"unstable_cssSideEffectImports",
"unstable_dev",
"unstable_postcss",
+ "unstable_routeConfig",
"unstable_tailwind",
"unstable_vanillaExtract",
"v2_errorBoundary",
@@ -741,6 +742,12 @@ export async function resolveConfig(
"v2_routeConvention",
];
+ if ("unstable_routeConfig" in userFlags) {
+ logger.warn(
+ "The `unstable_routeConfig` future flag has been stabilized as `v3_routeConfig`."
+ );
+ }
+
if ("v2_dev" in userFlags) {
if (userFlags.v2_dev === true) {
deprecatedFlags.push("v2_dev");
diff --git a/packages/remix-dev/config/routes.ts b/packages/remix-dev/config/routes.ts
index cbf90b5f9d3..ede75497de9 100644
--- a/packages/remix-dev/config/routes.ts
+++ b/packages/remix-dev/config/routes.ts
@@ -175,7 +175,7 @@ export function validateRouteConfig({
if (!routeConfig) {
return {
valid: false,
- message: `No "routes" export defined in "${routeConfigFile}.`,
+ message: `Route config must be the default export in "${routeConfigFile}".`,
};
}
diff --git a/packages/remix-dev/package.json b/packages/remix-dev/package.json
index 256ec8e4009..e7fd64e8795 100644
--- a/packages/remix-dev/package.json
+++ b/packages/remix-dev/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/dev",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Dev tools and CLI for Remix",
"homepage": "https://remix.run",
"bugs": {
@@ -108,8 +108,8 @@
"wrangler": "^3.28.2"
},
"peerDependencies": {
- "@remix-run/react": "^2.14.0",
- "@remix-run/serve": "^2.14.0",
+ "@remix-run/react": "^2.15.1",
+ "@remix-run/serve": "^2.15.1",
"typescript": "^5.1.0",
"vite": "^5.1.0",
"wrangler": "^3.28.2"
diff --git a/packages/remix-eslint-config/CHANGELOG.md b/packages/remix-eslint-config/CHANGELOG.md
index a9275fddc6d..d9c22a77fe8 100644
--- a/packages/remix-eslint-config/CHANGELOG.md
+++ b/packages/remix-eslint-config/CHANGELOG.md
@@ -1,4 +1,8 @@
-# @remix-run/eslint-config
+# `@remix-run/eslint-config`
+
+## 2.15.1
+
+## 2.15.0
## 2.14.0
diff --git a/packages/remix-eslint-config/package.json b/packages/remix-eslint-config/package.json
index 31998c18883..d88856fb9a4 100644
--- a/packages/remix-eslint-config/package.json
+++ b/packages/remix-eslint-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/eslint-config",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "ESLint configuration for Remix projects",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
diff --git a/packages/remix-express/CHANGELOG.md b/packages/remix-express/CHANGELOG.md
index 9597d9889cb..6401a3418af 100644
--- a/packages/remix-express/CHANGELOG.md
+++ b/packages/remix-express/CHANGELOG.md
@@ -1,4 +1,18 @@
-# @remix-run/express
+# `@remix-run/express`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/node@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/node@2.15.0`
## 2.14.0
diff --git a/packages/remix-express/package.json b/packages/remix-express/package.json
index 3924c094939..44f98afba63 100644
--- a/packages/remix-express/package.json
+++ b/packages/remix-express/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/express",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Express server request handler for Remix",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
diff --git a/packages/remix-fs-routes/CHANGELOG.md b/packages/remix-fs-routes/CHANGELOG.md
index cb2ce0e555e..27482a9dbd9 100644
--- a/packages/remix-fs-routes/CHANGELOG.md
+++ b/packages/remix-fs-routes/CHANGELOG.md
@@ -1,4 +1,8 @@
-# @remix-run/fs-routes
+# `@remix-run/fs-routes`
+
+## 2.15.1
+
+## 2.15.0
## 2.14.0
diff --git a/packages/remix-fs-routes/package.json b/packages/remix-fs-routes/package.json
index 7ce5ef05da3..18f2b021064 100644
--- a/packages/remix-fs-routes/package.json
+++ b/packages/remix-fs-routes/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/fs-routes",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Config-based file system routing conventions, for use within routes.ts",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
@@ -22,8 +22,8 @@
"typescript": "^5.1.6"
},
"peerDependencies": {
- "@remix-run/dev": "^2.14.0",
- "@remix-run/route-config": "^2.14.0",
+ "@remix-run/dev": "^2.15.1",
+ "@remix-run/route-config": "^2.15.1",
"typescript": "^5.1.0"
},
"peerDependenciesMeta": {
diff --git a/packages/remix-node/CHANGELOG.md b/packages/remix-node/CHANGELOG.md
index db4c1207f80..76b778cbda9 100644
--- a/packages/remix-node/CHANGELOG.md
+++ b/packages/remix-node/CHANGELOG.md
@@ -1,4 +1,18 @@
-# @remix-run/node
+# `@remix-run/node`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/server-runtime@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/server-runtime@2.15.0`
## 2.14.0
diff --git a/packages/remix-node/package.json b/packages/remix-node/package.json
index d8dafce3e2b..6b6d2661876 100644
--- a/packages/remix-node/package.json
+++ b/packages/remix-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/node",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Node.js platform abstractions for Remix",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
diff --git a/packages/remix-react/CHANGELOG.md b/packages/remix-react/CHANGELOG.md
index ed50a322ec4..a4543c65162 100644
--- a/packages/remix-react/CHANGELOG.md
+++ b/packages/remix-react/CHANGELOG.md
@@ -1,4 +1,18 @@
-# @remix-run/react
+# `@remix-run/react`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/server-runtime@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/server-runtime@2.15.0`
## 2.14.0
diff --git a/packages/remix-react/package.json b/packages/remix-react/package.json
index 00c82f2e6c2..932700c773b 100644
--- a/packages/remix-react/package.json
+++ b/packages/remix-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/react",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "React DOM bindings for Remix",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
diff --git a/packages/remix-react/single-fetch.tsx b/packages/remix-react/single-fetch.tsx
index ca81746e004..6a47b80c6be 100644
--- a/packages/remix-react/single-fetch.tsx
+++ b/packages/remix-react/single-fetch.tsx
@@ -491,7 +491,7 @@ function unwrapSingleFetchResult(result: SingleFetchResult, routeId: string) {
if (result.replace) {
headers["X-Remix-Replace"] = "yes";
}
- return redirect(result.redirect, { status: result.status, headers });
+ throw redirect(result.redirect, { status: result.status, headers });
} else if ("data" in result) {
return result.data;
} else {
diff --git a/packages/remix-route-config/CHANGELOG.md b/packages/remix-route-config/CHANGELOG.md
index 9412824540d..95ff17f2014 100644
--- a/packages/remix-route-config/CHANGELOG.md
+++ b/packages/remix-route-config/CHANGELOG.md
@@ -1,4 +1,8 @@
-# @remix-run/route-config
+# `@remix-run/route-config`
+
+## 2.15.1
+
+## 2.15.0
## 2.14.0
diff --git a/packages/remix-route-config/package.json b/packages/remix-route-config/package.json
index ea7fc5c0a4f..175af0bcbfe 100644
--- a/packages/remix-route-config/package.json
+++ b/packages/remix-route-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/route-config",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Config-based routing utilities, for use within routes.ts",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
@@ -26,7 +26,7 @@
"vite": "5.1.8"
},
"peerDependencies": {
- "@remix-run/dev": "^2.14.0",
+ "@remix-run/dev": "^2.15.1",
"typescript": "^5.1.0"
},
"peerDependenciesMeta": {
diff --git a/packages/remix-routes-option-adapter/CHANGELOG.md b/packages/remix-routes-option-adapter/CHANGELOG.md
index 3cb8237d08a..f796cff9003 100644
--- a/packages/remix-routes-option-adapter/CHANGELOG.md
+++ b/packages/remix-routes-option-adapter/CHANGELOG.md
@@ -1,4 +1,8 @@
-# @remix-run/routes-option-adapter
+# `@remix-run/routes-option-adapter`
+
+## 2.15.1
+
+## 2.15.0
## 2.14.0
diff --git a/packages/remix-routes-option-adapter/package.json b/packages/remix-routes-option-adapter/package.json
index 9014078441d..4fa9d037c39 100644
--- a/packages/remix-routes-option-adapter/package.json
+++ b/packages/remix-routes-option-adapter/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/routes-option-adapter",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Adapter for Remix's \"routes\" config option, for use within routes.ts",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
@@ -22,8 +22,8 @@
"typescript": "^5.1.6"
},
"peerDependencies": {
- "@remix-run/dev": "^2.14.0",
- "@remix-run/route-config": "^2.14.0",
+ "@remix-run/dev": "^2.15.1",
+ "@remix-run/route-config": "^2.15.1",
"typescript": "^5.1.0"
},
"peerDependenciesMeta": {
diff --git a/packages/remix-serve/CHANGELOG.md b/packages/remix-serve/CHANGELOG.md
index 70fc78ce6fd..f2b5ae707f7 100644
--- a/packages/remix-serve/CHANGELOG.md
+++ b/packages/remix-serve/CHANGELOG.md
@@ -1,4 +1,20 @@
-# @remix-run/serve
+# `@remix-run/serve`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/express@2.15.1`
+ - `@remix-run/node@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/express@2.15.0`
+ - `@remix-run/node@2.15.0`
## 2.14.0
diff --git a/packages/remix-serve/package.json b/packages/remix-serve/package.json
index 77b8e2defab..11b9e7940ac 100644
--- a/packages/remix-serve/package.json
+++ b/packages/remix-serve/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/serve",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Production application server for Remix",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
diff --git a/packages/remix-server-runtime/CHANGELOG.md b/packages/remix-server-runtime/CHANGELOG.md
index b27911cf3e5..1d968025e09 100644
--- a/packages/remix-server-runtime/CHANGELOG.md
+++ b/packages/remix-server-runtime/CHANGELOG.md
@@ -1,4 +1,8 @@
-# @remix-run/server-runtime
+# `@remix-run/server-runtime`
+
+## 2.15.1
+
+## 2.15.0
## 2.14.0
diff --git a/packages/remix-server-runtime/package.json b/packages/remix-server-runtime/package.json
index 459d1bb2786..1a28f6cd0ea 100644
--- a/packages/remix-server-runtime/package.json
+++ b/packages/remix-server-runtime/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/server-runtime",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Server runtime for Remix",
"bugs": {
"url": "https://github.com/remix-run/remix/issues"
diff --git a/packages/remix-testing/CHANGELOG.md b/packages/remix-testing/CHANGELOG.md
index 9dd27a10cda..d747c4f16bb 100644
--- a/packages/remix-testing/CHANGELOG.md
+++ b/packages/remix-testing/CHANGELOG.md
@@ -1,4 +1,20 @@
-# @remix-run/testing
+# `@remix-run/testing`
+
+## 2.15.1
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/node@2.15.1`
+ - `@remix-run/react@2.15.1`
+
+## 2.15.0
+
+### Patch Changes
+
+- Updated dependencies:
+ - `@remix-run/node@2.15.0`
+ - `@remix-run/react@2.15.0`
## 2.14.0
diff --git a/packages/remix-testing/package.json b/packages/remix-testing/package.json
index 78efab644f7..d813a3f84bf 100644
--- a/packages/remix-testing/package.json
+++ b/packages/remix-testing/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-run/testing",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "Testing utilities for Remix apps",
"homepage": "https://remix.run",
"bugs": {
diff --git a/packages/remix/CHANGELOG.md b/packages/remix/CHANGELOG.md
index 31432239c24..8ec9b176ee2 100644
--- a/packages/remix/CHANGELOG.md
+++ b/packages/remix/CHANGELOG.md
@@ -1,3 +1,3 @@
-# remix
+# `remix`
See the `CHANGELOG.md` in individual Remix packages for all changes.
diff --git a/packages/remix/package.json b/packages/remix/package.json
index 1c73da5d284..2d421fe690d 100644
--- a/packages/remix/package.json
+++ b/packages/remix/package.json
@@ -1,6 +1,6 @@
{
"name": "remix",
- "version": "2.14.0",
+ "version": "2.15.1",
"description": "A framework for building better websites",
"homepage": "https://remix.run",
"bugs": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f0b20e33a11..5e0dd0f6f2c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -557,13 +557,13 @@ importers:
integration/helpers/vite-cloudflare-template:
dependencies:
'@remix-run/cloudflare':
- specifier: 2.14.0
+ specifier: 2.15.1
version: link:../../../packages/remix-cloudflare
'@remix-run/cloudflare-pages':
- specifier: 2.14.0
+ specifier: 2.15.1
version: link:../../../packages/remix-cloudflare-pages
'@remix-run/react':
- specifier: 2.14.0
+ specifier: 2.15.1
version: link:../../../packages/remix-react
isbot:
specifier: ^4.1.0
@@ -690,6 +690,9 @@ importers:
execa:
specifier: 5.1.1
version: 5.1.1
+ fs-extra:
+ specifier: ^10.0.0
+ version: 10.1.0
gunzip-maybe:
specifier: ^1.4.2
version: 1.4.2
@@ -736,9 +739,6 @@ importers:
esbuild-register:
specifier: ^3.3.2
version: 3.5.0(esbuild@0.17.6)
- fs-extra:
- specifier: ^10.0.0
- version: 10.1.0
msw:
specifier: ^1.2.3
version: 1.3.2(typescript@5.1.6)
@@ -880,7 +880,7 @@ importers:
specifier: workspace:*
version: link:../remix-node
'@remix-run/react':
- specifier: ^2.14.0
+ specifier: ^2.15.1
version: link:../remix-react
'@remix-run/router':
specifier: 1.21.0
@@ -8403,6 +8403,7 @@ packages:
graceful-fs: 4.2.11
jsonfile: 6.1.0
universalify: 2.0.0
+ dev: false
/fs-extra@11.2.0:
resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
@@ -10172,6 +10173,7 @@ packages:
universalify: 2.0.0
optionalDependencies:
graceful-fs: 4.2.11
+ dev: false
/jsprim@2.0.2:
resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==}
@@ -14710,6 +14712,7 @@ packages:
/universalify@2.0.0:
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
engines: {node: '>= 10.0.0'}
+ dev: false
/unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}