Skip to content

Commit

Permalink
Merge branch 'release-next'
Browse files Browse the repository at this point in the history
  • Loading branch information
brophdawg11 committed Jan 30, 2025
2 parents 1fd422a + a1c3909 commit 65326e3
Show file tree
Hide file tree
Showing 50 changed files with 552 additions and 160 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ tsconfig.tsbuildinfo
/fixtures/my-remix-app
/fixtures/deno-app
/integration/playwright-report
/test-results
/integration/test-results
/uploads

.eslintcache
Expand Down
131 changes: 75 additions & 56 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,175 +13,178 @@ We manage release notes in this file instead of the paginated Github Releases Pa
<summary>Table of Contents</summary>

- [Remix Releases](#remix-releases)
- [v2.15.2](#v2152)
- [v2.15.3](#v2153)
- [Patch Changes](#patch-changes)
- [Updated Dependencies](#updated-dependencies)
- [v2.15.1](#v2151)
- [v2.15.2](#v2152)
- [Patch Changes](#patch-changes-1)
- [v2.15.0](#v2150)
- [Updated Dependencies](#updated-dependencies-1)
- [v2.15.1](#v2151)
- [Patch Changes](#patch-changes-2)
- [v2.15.0](#v2150)
- [Patch Changes](#patch-changes-3)
- [v2.14.0](#v2140)
- [Minor Changes](#minor-changes)
- [Patch Changes](#patch-changes-3)
- [Updated Dependencies](#updated-dependencies-1)
- [Patch Changes](#patch-changes-4)
- [Updated Dependencies](#updated-dependencies-2)
- [Changes by Package](#changes-by-package)
- [v2.13.1](#v2131)
- [Patch Changes](#patch-changes-4)
- [Patch Changes](#patch-changes-5)
- [v2.13.0](#v2130)
- [What's Changed](#whats-changed)
- [Stabilized APIs](#stabilized-apis)
- [Minor Changes](#minor-changes-1)
- [Patch Changes](#patch-changes-5)
- [Updated Dependencies](#updated-dependencies-2)
- [Patch Changes](#patch-changes-6)
- [Updated Dependencies](#updated-dependencies-3)
- [Changes by Package](#changes-by-package-1)
- [v2.12.1](#v2121)
- [Patch Changes](#patch-changes-6)
- [Patch Changes](#patch-changes-7)
- [Changes by Package](#changes-by-package-2)
- [v2.12.0](#v2120)
- [What's Changed](#whats-changed-1)
- [Future Flag for Automatic Dependency Optimization (unstable)](#future-flag-for-automatic-dependency-optimization-unstable)
- [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-7)
- [Updated Dependencies](#updated-dependencies-3)
- [Changes by Package](#changes-by-package-3)
- [v2.11.2](#v2112)
- [Patch Changes](#patch-changes-8)
- [Updated Dependencies](#updated-dependencies-4)
- [Changes by Package](#changes-by-package-3)
- [v2.11.2](#v2112)
- [Patch Changes](#patch-changes-9)
- [Updated Dependencies](#updated-dependencies-5)
- [Changes by Package](#changes-by-package-4)
- [v2.11.1](#v2111)
- [Patch Changes](#patch-changes-9)
- [Patch Changes](#patch-changes-10)
- [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-10)
- [Updated Dependencies](#updated-dependencies-5)
- [Changes by Package](#changes-by-package-6)
- [v2.10.3](#v2103)
- [Patch Changes](#patch-changes-11)
- [Updated Dependencies](#updated-dependencies-6)
- [Changes by Package](#changes-by-package-6)
- [v2.10.3](#v2103)
- [Patch Changes](#patch-changes-12)
- [Updated Dependencies](#updated-dependencies-7)
- [Changes by Package](#changes-by-package-7)
- [v2.10.2](#v2102)
- [Patch Changes](#patch-changes-12)
- [Patch Changes](#patch-changes-13)
- [Changes by Package](#changes-by-package-8)
- [v2.10.1](#v2101)
- [Patch Changes](#patch-changes-13)
- [Updated Dependencies](#updated-dependencies-7)
- [Patch Changes](#patch-changes-14)
- [Updated Dependencies](#updated-dependencies-8)
- [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-14)
- [Updated Dependencies](#updated-dependencies-8)
- [Patch Changes](#patch-changes-15)
- [Updated Dependencies](#updated-dependencies-9)
- [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-15)
- [Updated Dependencies](#updated-dependencies-9)
- [Patch Changes](#patch-changes-16)
- [Updated Dependencies](#updated-dependencies-10)
- [Changes by Package](#changes-by-package-11)
- [v2.9.1](#v291)
- [Patch Changes](#patch-changes-16)
- [Patch Changes](#patch-changes-17)
- [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-17)
- [Updated Dependencies](#updated-dependencies-10)
- [Changes by Package](#changes-by-package-13)
- [v2.8.1](#v281)
- [Patch Changes](#patch-changes-18)
- [Updated Dependencies](#updated-dependencies-11)
- [Changes by Package](#changes-by-package-13)
- [v2.8.1](#v281)
- [Patch Changes](#patch-changes-19)
- [Updated Dependencies](#updated-dependencies-12)
- [Changes by Package](#changes-by-package-14)
- [v2.8.0](#v280)
- [Minor Changes](#minor-changes-6)
- [Patch Changes](#patch-changes-19)
- [Updated Dependencies](#updated-dependencies-12)
- [Patch Changes](#patch-changes-20)
- [Updated Dependencies](#updated-dependencies-13)
- [Changes by Package](#changes-by-package-15)
- [2.7.2](#272)
- [Patch Changes](#patch-changes-20)
- [2.7.1](#271)
- [Patch Changes](#patch-changes-21)
- [2.7.1](#271)
- [Patch Changes](#patch-changes-22)
- [v2.7.0](#v270)
- [What's Changed](#whats-changed-6)
- [Stabilized Vite Plugin](#stabilized-vite-plugin)
- [New `Layout` Export](#new-layout-export)
- [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-22)
- [Updated Dependencies](#updated-dependencies-13)
- [Patch Changes](#patch-changes-23)
- [Updated Dependencies](#updated-dependencies-14)
- [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-23)
- [Updated Dependencies](#updated-dependencies-14)
- [Changes by Package](#changes-by-package-17)
- [v2.5.1](#v251)
- [Patch Changes](#patch-changes-24)
- [Updated Dependencies](#updated-dependencies-15)
- [Changes by Package](#changes-by-package-17)
- [v2.5.1](#v251)
- [Patch Changes](#patch-changes-25)
- [Updated Dependencies](#updated-dependencies-16)
- [Changes by Package](#changes-by-package-18)
- [v2.5.0](#v250)
- [What's Changed](#whats-changed-8)
- [SPA Mode (unstable)](#spa-mode-unstable)
- [Server Bundles (unstable)](#server-bundles-unstable)
- [Minor Changes](#minor-changes-9)
- [Patch Changes](#patch-changes-25)
- [Updated Dependencies](#updated-dependencies-16)
- [Changes by Package](#changes-by-package-19)
- [v2.4.1](#v241)
- [Patch Changes](#patch-changes-26)
- [Updated Dependencies](#updated-dependencies-17)
- [Changes by Package](#changes-by-package-19)
- [v2.4.1](#v241)
- [Patch Changes](#patch-changes-27)
- [Updated Dependencies](#updated-dependencies-18)
- [Changes by Package](#changes-by-package-20)
- [v2.4.0](#v240)
- [What's Changed](#whats-changed-9)
- [Client Data](#client-data)
- [`future.v3_relativeSplatPath`](#futurev3_relativesplatpath)
- [Vite Updates (Unstable)](#vite-updates-unstable)
- [Minor Changes](#minor-changes-10)
- [Patch Changes](#patch-changes-27)
- [Updated Dependencies](#updated-dependencies-18)
- [Changes by Package](#changes-by-package-21)
- [v2.3.1](#v231)
- [Patch Changes](#patch-changes-28)
- [Updated Dependencies](#updated-dependencies-19)
- [Changes by Package](#changes-by-package-21)
- [v2.3.1](#v231)
- [Patch Changes](#patch-changes-29)
- [Updated Dependencies](#updated-dependencies-20)
- [Changes by Package](#changes-by-package-22)
- [v2.3.0](#v230)
- [What's Changed](#whats-changed-10)
- [Stabilized `useBlocker`](#stabilized-useblocker)
- [`unstable_flushSync` API](#unstable_flushsync-api)
- [Minor Changes](#minor-changes-11)
- [Patch Changes](#patch-changes-29)
- [Updated Dependencies](#updated-dependencies-20)
- [Patch Changes](#patch-changes-30)
- [Updated Dependencies](#updated-dependencies-21)
- [Changes by Package](#changes-by-package-23)
- [v2.2.0](#v220)
- [What's Changed](#whats-changed-11)
- [Vite!](#vite)
- [New Fetcher APIs](#new-fetcher-apis)
- [Persistence Future Flag](#persistence-future-flag)
- [Minor Changes](#minor-changes-12)
- [Patch Changes](#patch-changes-30)
- [Updated Dependencies](#updated-dependencies-21)
- [Patch Changes](#patch-changes-31)
- [Updated Dependencies](#updated-dependencies-22)
- [Changes by Package](#changes-by-package-24)
- [v2.1.0](#v210)
- [What's Changed](#whats-changed-12)
- [View Transitions](#view-transitions)
- [Stable `createRemixStub`](#stable-createremixstub)
- [Minor Changes](#minor-changes-13)
- [Patch Changes](#patch-changes-31)
- [Updated Dependencies](#updated-dependencies-22)
- [Patch Changes](#patch-changes-32)
- [Updated Dependencies](#updated-dependencies-23)
- [Changes by Package](#changes-by-package-25)
- [v2.0.1](#v201)
- [Patch Changes](#patch-changes-32)
- [Patch Changes](#patch-changes-33)
- [Changes by Package 🔗](#changes-by-package-)
- [v2.0.0](#v200)
- [Breaking Changes](#breaking-changes)
Expand All @@ -193,7 +196,7 @@ We manage release notes in this file instead of the paginated Github Releases Pa
- [Breaking Type Changes](#breaking-type-changes)
- [New Features](#new-features)
- [Other Notable Changes](#other-notable-changes)
- [Updated Dependencies](#updated-dependencies-23)
- [Updated Dependencies](#updated-dependencies-24)
- [Changes by Package](#changes-by-package-26)

</details>
Expand Down Expand Up @@ -245,6 +248,22 @@ Date: YYYY-MM-DD
-->

## v2.15.3

Date: 2025-01-30

### Patch Changes

- `@remix-run/react` - Properly handle interrupted manifest requests in lazy route discovery ([#10447](https://github.com/remix-run/remix/pull/10447))
- `@remix-run/server-runtime` - Avoid duplication of `Set-Cookie` headers if also returned from `headers` ([#10424](https://github.com/remix-run/remix/pull/10424))
- `@remix-run/server-runtime` - Properly handle status codes that cannot have a body in single fetch responses (204, etc.) ([#10410](https://github.com/remix-run/remix/pull/10410))

### Updated Dependencies

- [`[email protected]`](https://github.com/remix-run/react-router/releases/tag/react-router%406.29.0)

**Full Changelog**: [`v2.15.2...v2.15.3`](https://github.com/remix-run/remix/compare/[email protected]@2.15.3)

## v2.15.2

Date: 2024-12-20
Expand Down
62 changes: 62 additions & 0 deletions integration/fog-of-war-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1448,4 +1448,66 @@ test.describe("Fog of War", () => {
),
]);
});

test("handles interruptions from back to back navigations", async ({
page,
}) => {
let fixture = await createFixture({
config: {
future: {
v3_lazyRouteDiscovery: true,
},
},
files: {
...getFiles(),
"app/routes/a.tsx": js`
import { Link, Outlet, useLoaderData, useNavigate } from "@remix-run/react";
export function loader({ request }) {
return { message: "A LOADER" };
}
export default function Index() {
let data = useLoaderData();
let navigate = useNavigate();
return (
<>
<h1 id="a">A: {data.message}</h1>
<button data-link onClick={async () => {
navigate('/a/b');
setTimeout(() => navigate('/a/b'), 0)
}}>
/a/b
</button>
<Outlet/>
</>
)
}
`,
},
});
let appFixture = await createAppFixture(fixture);
let app = new PlaywrightFixture(appFixture, page);

await app.goto("/a", true);
expect(
await page.evaluate(() =>
Object.keys((window as any).__remixManifest.routes)
)
).toEqual(["root", "routes/a", "routes/_index"]);

// /a/b gets discovered on click
await app.clickElement("[data-link]");
await new Promise((resolve) => setTimeout(resolve, 1000));
expect(await (await page.$("body"))?.textContent()).not.toContain(
"Not Found"
);
await page.waitForSelector("#b");

expect(
await page.evaluate(() =>
Object.keys((window as any).__remixManifest.routes)
)
).toEqual(["root", "routes/a", "routes/_index", "routes/a.b"]);
});
});
50 changes: 50 additions & 0 deletions integration/headers-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -418,4 +418,54 @@ test.describe("headers export", () => {
])
);
});

test("does not duplicate set-cookie headers also returned via headers() function", async () => {
let fixture = await createFixture(
{
files: {
"app/root.tsx": js`
import { Links, Meta, Outlet, Scripts } from "@remix-run/react";
export default function Root() {
return (
<html lang="en">
<head>
<Meta />
<Links />
</head>
<body>
<Outlet />
<Scripts />
</body>
</html>
);
}
`,

"app/routes/_index.tsx": js`
export function headers({ loaderHeaders }) {
return loaderHeaders;
}
export function loader() {
return new Response(null, {
headers: {
"X-Test": "value",
"Set-Cookie": "cookie=yum"
}
})
}
export default function Index() {
return <div>Heyo!</div>
}
`,
},
},
ServerMode.Test
);
let response = await fixture.requestDocument("/");
expect([...response.headers.entries()]).toEqual([
["content-type", "text/html"],
["set-cookie", "cookie=yum"],
["x-test", "value"],
]);
});
});
Loading

0 comments on commit 65326e3

Please sign in to comment.