diff --git a/integration/client-data-test.ts b/integration/client-data-test.ts index 7f23da815b0..5a1046d59ed 100644 --- a/integration/client-data-test.ts +++ b/integration/client-data-test.ts @@ -780,6 +780,66 @@ test.describe("Client Data", () => { expect(html).not.toMatch("Should not see me"); console.error = _consoleError; }); + + test("server loader errors are persisted for non-hydrating routes", async ({ + page, + }) => { + let _consoleError = console.error; + console.error = () => {}; + appFixture = await createAppFixture( + await createFixture( + { + files: { + ...getFiles({ + parentClientLoader: true, + parentClientLoaderHydrate: false, + // Hydrate the parent clientLoader but don't add a HydrateFallback + parentAdditions: js` + clientLoader.hydrate = true; + `, + childClientLoader: false, + childClientLoaderHydrate: false, + }), + "app/routes/parent.child.tsx": js` + import { json } from '@remix-run/node' + import { useRouteError } from '@remix-run/react' + export function loader() { + throw json({ message: 'Child Server Error'}); + } + export default function Component() { + return
{JSON.stringify(error, null, 2)}+ > + ); + } + `, + }, + }, + ServerMode.Development // Avoid error sanitization + ), + ServerMode.Development // Avoid error sanitization + ); + let app = new PlaywrightFixture(appFixture, page); + + await app.goto("/parent/child"); + let html = await app.getHtml("main"); + expect(html).toMatch("Parent Server Loader"); + expect(html).toMatch("Child Server Error"); + expect(html).not.toMatch("Should not see me"); + // Ensure we hydrate and remain on the boundary + await new Promise((r) => setTimeout(r, 100)); + html = await app.getHtml("main"); + expect(html).toMatch("Parent Server Loader (mutated by client)"); + expect(html).toMatch("Child Server Error"); + expect(html).not.toMatch("Should not see me"); + console.error = _consoleError; + }); }); test.describe("clientLoader - lazy route module", () => { diff --git a/packages/remix-dev/package.json b/packages/remix-dev/package.json index 5ecb52e1a3e..0cc96d24b8e 100644 --- a/packages/remix-dev/package.json +++ b/packages/remix-dev/package.json @@ -29,7 +29,7 @@ "@mdx-js/mdx": "^2.3.0", "@npmcli/package-json": "^4.0.1", "@remix-run/node": "2.7.2", - "@remix-run/router": "1.15.1", + "@remix-run/router": "1.15.2-pre.0", "@remix-run/server-runtime": "2.7.2", "@types/mdx": "^2.0.5", "@vanilla-extract/integration": "^6.2.0", diff --git a/packages/remix-react/package.json b/packages/remix-react/package.json index dc0e61c87c5..e28bcf3f848 100644 --- a/packages/remix-react/package.json +++ b/packages/remix-react/package.json @@ -16,10 +16,10 @@ "typings": "dist/index.d.ts", "module": "dist/esm/index.js", "dependencies": { - "@remix-run/router": "1.15.1", + "@remix-run/router": "1.15.2-pre.0", "@remix-run/server-runtime": "2.7.2", - "react-router": "6.22.1", - "react-router-dom": "6.22.1" + "react-router": "6.22.2-pre.0", + "react-router-dom": "6.22.2-pre.0" }, "devDependencies": { "@testing-library/jest-dom": "^5.17.0", diff --git a/packages/remix-server-runtime/package.json b/packages/remix-server-runtime/package.json index b418b48aae0..314e26eebff 100644 --- a/packages/remix-server-runtime/package.json +++ b/packages/remix-server-runtime/package.json @@ -16,7 +16,7 @@ "typings": "dist/index.d.ts", "module": "dist/esm/index.js", "dependencies": { - "@remix-run/router": "1.15.1", + "@remix-run/router": "1.15.2-pre.0", "@types/cookie": "^0.6.0", "@web3-storage/multipart-parser": "^1.0.0", "cookie": "^0.6.0", diff --git a/packages/remix-testing/package.json b/packages/remix-testing/package.json index cd4ffa18a57..de267c4f782 100644 --- a/packages/remix-testing/package.json +++ b/packages/remix-testing/package.json @@ -18,8 +18,8 @@ "dependencies": { "@remix-run/node": "2.7.2", "@remix-run/react": "2.7.2", - "@remix-run/router": "1.15.1", - "react-router-dom": "6.22.1" + "@remix-run/router": "1.15.2-pre.0", + "react-router-dom": "6.22.2-pre.0" }, "devDependencies": { "@types/node": "^18.17.1", diff --git a/yarn.lock b/yarn.lock index bef19c75aa2..821a1110fbd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2482,10 +2482,10 @@ "@changesets/types" "^5.0.0" dotenv "^8.1.0" -"@remix-run/router@1.15.1": - version "1.15.1" - resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.15.1.tgz#221fd31a65186b9bc027b74573485fb3226dff7f" - integrity sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w== +"@remix-run/router@1.15.2-pre.0": + version "1.15.2-pre.0" + resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.15.2-pre.0.tgz#7c045fa57c7eeb64306a92c0611949b5d3bebfe5" + integrity sha512-87zTVzkwSWTlaHH5vLziaQkyYWTEy8tTs/XPkwKlDfIZVdvnVtuDuwMCsCyzccJw8FxPvS2xoOeExeaQIlhacQ== "@remix-run/web-blob@^3.1.0": version "3.1.0" @@ -11300,20 +11300,20 @@ react-refresh@^0.14.0: resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== -react-router-dom@6.22.1: - version "6.22.1" - resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.1.tgz#cfa109d4b6b0a4d00bac179bc0ad2a6469455282" - integrity sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw== +react-router-dom@6.22.2-pre.0: + version "6.22.2-pre.0" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.2-pre.0.tgz#9892bc8bcb15e25b1bc2050fb9f3b80646264d59" + integrity sha512-37KoToqJmM8Di0WPojcLQvywjfN8fDUKtRgCxASzjnXnUr2AY55FWMYImBC6/zgwgVCZP8wodKoNysAiBEst8w== dependencies: - "@remix-run/router" "1.15.1" - react-router "6.22.1" + "@remix-run/router" "1.15.2-pre.0" + react-router "6.22.2-pre.0" -react-router@6.22.1: - version "6.22.1" - resolved "https://registry.npmjs.org/react-router/-/react-router-6.22.1.tgz#a5ff849bfe709438f7e139421bb28138209662c7" - integrity sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ== +react-router@6.22.2-pre.0: + version "6.22.2-pre.0" + resolved "https://registry.npmjs.org/react-router/-/react-router-6.22.2-pre.0.tgz#2b82e32367b28e962a7f8539c96e8d2bf4efb864" + integrity sha512-bVT5azwFuWqfarpI7JV/NdejUR8/2A0N6YTA8X8hhuxYnJZlD/XdWAiErFL8Rfe2emhlJ7Zf3qZTHF+6yLf4fg== dependencies: - "@remix-run/router" "1.15.1" + "@remix-run/router" "1.15.2-pre.0" react@^18.2.0: version "18.2.0"