diff --git a/docs/guides/migrating-react-router-app.md b/docs/guides/migrating-react-router-app.md index c4a13487858..24d5ed153f5 100644 --- a/docs/guides/migrating-react-router-app.md +++ b/docs/guides/migrating-react-router-app.md @@ -48,7 +48,7 @@ Let's start by creating two new files: ```tsx filename=app/entry.server.tsx import { PassThrough } from "stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; @@ -60,20 +60,23 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { return isbot(request.headers.get("user-agent")) ? handleBotRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ) : handleBrowserRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -81,7 +84,8 @@ function handleBotRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( @@ -123,7 +127,8 @@ function handleBrowserRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( diff --git a/docs/guides/streaming.md b/docs/guides/streaming.md index 6c0c078bae2..6d219b63a0e 100644 --- a/docs/guides/streaming.md +++ b/docs/guides/streaming.md @@ -80,11 +80,12 @@ Let's take a dive into how to accomplish this. First, to enable streaming with React 18, you'll update your `entry.server.tsx` file to use `renderToPipeableStream`. Here's a simple (and incomplete) version of that: -```tsx filename=app/entry.server.tsx lines=[1,9,18,25,30,35] +```tsx filename=app/entry.server.tsx lines=[1,10,20,27,32,37] import { PassThrough } from "stream"; import { Response } from "@remix-run/node"; // or cloudflare/deno import type { + AppLoadContext, EntryContext, Headers, } from "@remix-run/node"; // or cloudflare/deno @@ -95,7 +96,8 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve) => { const { pipe } = renderToPipeableStream( @@ -126,7 +128,7 @@ export default function handleRequest(
For a more complete example, expand this -This handles errors and properly disables streaming for bots which you typically want to force waiting so you can display all the content for SEO purposes. +This handles errors and properly disables streaming for bots which you typically want to force waiting, so you can display all the content for SEO purposes. ```tsx filename=app/entry.server.tsx import { PassThrough } from "stream"; @@ -146,7 +148,8 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { // If the request is from a bot, we want to wait for the full // response to render before sending it to the client. This @@ -156,7 +159,8 @@ export default function handleRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -164,7 +168,8 @@ export default function handleRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -172,7 +177,8 @@ function serveTheBots( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( @@ -207,7 +213,8 @@ function serveBrowsers( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { let didError = false; diff --git a/docs/guides/styling.md b/docs/guides/styling.md index 050689f21c6..c480c6d12f7 100644 --- a/docs/guides/styling.md +++ b/docs/guides/styling.md @@ -633,8 +633,11 @@ Here's some sample code to show how you might use Styled Components with Remix ( 2. Your `entry.server.tsx` will look something like this: - ```tsx filename=entry.server.tsx lines=[4,12,15-20,22-23] - import type { EntryContext } from "@remix-run/node"; // or cloudflare/deno + ```tsx filename=entry.server.tsx lines=[7,16,19-24,26-27] + import type { + AppLoadContext, + EntryContext, + } from "@remix-run/node"; // or cloudflare/deno import { RemixServer } from "@remix-run/react"; import { renderToString } from "react-dom/server"; import { ServerStyleSheet } from "styled-components"; @@ -643,7 +646,8 @@ Here's some sample code to show how you might use Styled Components with Remix ( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { const sheet = new ServerStyleSheet(); diff --git a/docs/route/headers.md b/docs/route/headers.md index b214b6fb03b..004c906bf70 100644 --- a/docs/route/headers.md +++ b/docs/route/headers.md @@ -91,8 +91,11 @@ All that said, you can avoid this entire problem by _not defining headers in par Note that you can also add headers in your `entry.server` file for things that should be global, for example: -```tsx lines=[16] -import type { EntryContext } from "@remix-run/node"; // or cloudflare/deno +```tsx lines=[20] +import type { + AppLoadContext, + EntryContext, +} from "@remix-run/node"; // or cloudflare/deno import { RemixServer } from "@remix-run/react"; import { renderToString } from "react-dom/server"; @@ -100,7 +103,8 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { const markup = renderToString( diff --git a/integration/defer-test.ts b/integration/defer-test.ts index 1d952148dbf..997c056ea50 100644 --- a/integration/defer-test.ts +++ b/integration/defer-test.ts @@ -949,7 +949,7 @@ test.describe("aborted", () => { files: { "app/entry.server.tsx": js` import { PassThrough } from "stream"; - import type { EntryContext } from "@remix-run/node"; + import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; @@ -961,20 +961,23 @@ test.describe("aborted", () => { request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { return isbot(request.headers.get("user-agent")) ? handleBotRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ) : handleBrowserRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -982,7 +985,8 @@ test.describe("aborted", () => { request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { let didError = false; @@ -1027,7 +1031,8 @@ test.describe("aborted", () => { request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { let didError = false; diff --git a/packages/remix-dev/__tests__/fixtures/indie-stack/app/entry.server.tsx b/packages/remix-dev/__tests__/fixtures/indie-stack/app/entry.server.tsx index 8210793665e..33226900af8 100644 --- a/packages/remix-dev/__tests__/fixtures/indie-stack/app/entry.server.tsx +++ b/packages/remix-dev/__tests__/fixtures/indie-stack/app/entry.server.tsx @@ -1,5 +1,5 @@ import { PassThrough } from "stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import { renderToPipeableStream } from "react-dom/server"; @@ -10,7 +10,8 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { let { pipe, abort } = renderToPipeableStream( diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/entry.server.tsx b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/entry.server.tsx index 7d9846a1bd5..971c930f4a2 100644 --- a/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/entry.server.tsx +++ b/packages/remix-dev/__tests__/fixtures/replace-remix-magic-imports/app/entry.server.tsx @@ -1,5 +1,5 @@ import { PassThrough } from "stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import { renderToPipeableStream } from "react-dom/server"; @@ -10,7 +10,8 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { let { pipe, abort } = renderToPipeableStream( diff --git a/packages/remix-dev/__tests__/fixtures/stack/app/entry.server.tsx b/packages/remix-dev/__tests__/fixtures/stack/app/entry.server.tsx index 068773556ca..f91d39b85ec 100644 --- a/packages/remix-dev/__tests__/fixtures/stack/app/entry.server.tsx +++ b/packages/remix-dev/__tests__/fixtures/stack/app/entry.server.tsx @@ -1,4 +1,4 @@ -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import { renderToString } from "react-dom/server"; @@ -6,7 +6,8 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { // eslint-disable-next-line testing-library/render-result-naming-convention let markup = renderToString( diff --git a/packages/remix-dev/config/defaults/cloudflare/entry.server.react-stream.tsx b/packages/remix-dev/config/defaults/cloudflare/entry.server.react-stream.tsx index 3e08f46fe53..28e2b69ed15 100644 --- a/packages/remix-dev/config/defaults/cloudflare/entry.server.react-stream.tsx +++ b/packages/remix-dev/config/defaults/cloudflare/entry.server.react-stream.tsx @@ -1,4 +1,4 @@ -import type { EntryContext } from "@remix-run/cloudflare"; +import type { AppLoadContext, EntryContext } from "@remix-run/cloudflare"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; import { renderToReadableStream } from "react-dom/server"; @@ -7,7 +7,8 @@ export default async function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { const body = await renderToReadableStream( , diff --git a/packages/remix-dev/config/defaults/cloudflare/entry.server.react-string.tsx b/packages/remix-dev/config/defaults/cloudflare/entry.server.react-string.tsx index 7a06117a362..a5b0fc4e06e 100644 --- a/packages/remix-dev/config/defaults/cloudflare/entry.server.react-string.tsx +++ b/packages/remix-dev/config/defaults/cloudflare/entry.server.react-string.tsx @@ -1,4 +1,4 @@ -import type { EntryContext } from "@remix-run/cloudflare"; +import type { AppLoadContext, EntryContext } from "@remix-run/cloudflare"; import { RemixServer } from "@remix-run/react"; import { renderToString } from "react-dom/server"; @@ -6,7 +6,8 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { let markup = renderToString( diff --git a/packages/remix-dev/config/defaults/deno/entry.server.react-stream.tsx b/packages/remix-dev/config/defaults/deno/entry.server.react-stream.tsx index 7be6c748061..ada79f78db6 100644 --- a/packages/remix-dev/config/defaults/deno/entry.server.react-stream.tsx +++ b/packages/remix-dev/config/defaults/deno/entry.server.react-stream.tsx @@ -1,4 +1,4 @@ -import type { EntryContext } from "@remix-run/deno"; +import type { AppLoadContext, EntryContext } from "@remix-run/deno"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; import { renderToReadableStream } from "react-dom/server"; @@ -7,7 +7,8 @@ export default async function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { const body = await renderToReadableStream( , diff --git a/packages/remix-dev/config/defaults/deno/entry.server.react-string.tsx b/packages/remix-dev/config/defaults/deno/entry.server.react-string.tsx index 4a65168cab0..23d2fe9a20e 100644 --- a/packages/remix-dev/config/defaults/deno/entry.server.react-string.tsx +++ b/packages/remix-dev/config/defaults/deno/entry.server.react-string.tsx @@ -1,4 +1,4 @@ -import type { EntryContext } from "@remix-run/deno"; +import type { AppLoadContext, EntryContext } from "@remix-run/deno"; import { RemixServer } from "@remix-run/react"; import { renderToString } from "react-dom/server"; @@ -6,7 +6,8 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { let markup = renderToString( diff --git a/packages/remix-dev/config/defaults/node/entry.server.react-stream.tsx b/packages/remix-dev/config/defaults/node/entry.server.react-stream.tsx index e9f6ac9846a..1ada06aae7d 100644 --- a/packages/remix-dev/config/defaults/node/entry.server.react-stream.tsx +++ b/packages/remix-dev/config/defaults/node/entry.server.react-stream.tsx @@ -1,6 +1,6 @@ import { PassThrough } from "stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; @@ -12,20 +12,23 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { return isbot(request.headers.get("user-agent")) ? handleBotRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ) : handleBrowserRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -33,7 +36,8 @@ function handleBotRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( @@ -75,7 +79,8 @@ function handleBrowserRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( diff --git a/packages/remix-dev/config/defaults/node/entry.server.react-string.tsx b/packages/remix-dev/config/defaults/node/entry.server.react-string.tsx index aa0aa0978b1..88fce490996 100644 --- a/packages/remix-dev/config/defaults/node/entry.server.react-string.tsx +++ b/packages/remix-dev/config/defaults/node/entry.server.react-string.tsx @@ -1,4 +1,4 @@ -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import { renderToString } from "react-dom/server"; @@ -6,7 +6,8 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { let markup = renderToString( diff --git a/scripts/playground/template/app/entry.server.tsx b/scripts/playground/template/app/entry.server.tsx index d66647db06a..79223d10e21 100644 --- a/scripts/playground/template/app/entry.server.tsx +++ b/scripts/playground/template/app/entry.server.tsx @@ -1,5 +1,5 @@ import { PassThrough } from "stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; @@ -11,7 +11,8 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { let callbackName = isbot(request.headers.get("user-agent")) ? "onAllReady" diff --git a/templates/arc/app/entry.server.tsx b/templates/arc/app/entry.server.tsx index ef312659bf5..5d182fcb54e 100644 --- a/templates/arc/app/entry.server.tsx +++ b/templates/arc/app/entry.server.tsx @@ -6,7 +6,7 @@ import { PassThrough } from "node:stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; @@ -18,20 +18,23 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { return isbot(request.headers.get("user-agent")) ? handleBotRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ) : handleBrowserRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -39,7 +42,8 @@ function handleBotRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( @@ -81,7 +85,8 @@ function handleBrowserRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( diff --git a/templates/cloudflare-pages/app/entry.server.tsx b/templates/cloudflare-pages/app/entry.server.tsx index 7fd5b88a948..e2e60dbd8fa 100644 --- a/templates/cloudflare-pages/app/entry.server.tsx +++ b/templates/cloudflare-pages/app/entry.server.tsx @@ -4,7 +4,7 @@ * For more information, see https://remix.run/file-conventions/entry.server */ -import type { EntryContext } from "@remix-run/cloudflare"; +import type { AppLoadContext, EntryContext } from "@remix-run/cloudflare"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; import { renderToReadableStream } from "react-dom/server"; @@ -13,7 +13,8 @@ export default async function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { const body = await renderToReadableStream( , diff --git a/templates/cloudflare-workers/app/entry.server.tsx b/templates/cloudflare-workers/app/entry.server.tsx index 7fd5b88a948..e2e60dbd8fa 100644 --- a/templates/cloudflare-workers/app/entry.server.tsx +++ b/templates/cloudflare-workers/app/entry.server.tsx @@ -4,7 +4,7 @@ * For more information, see https://remix.run/file-conventions/entry.server */ -import type { EntryContext } from "@remix-run/cloudflare"; +import type { AppLoadContext, EntryContext } from "@remix-run/cloudflare"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; import { renderToReadableStream } from "react-dom/server"; @@ -13,7 +13,8 @@ export default async function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { const body = await renderToReadableStream( , diff --git a/templates/deno/app/entry.server.tsx b/templates/deno/app/entry.server.tsx index 739f7b9d26a..e267f561821 100644 --- a/templates/deno/app/entry.server.tsx +++ b/templates/deno/app/entry.server.tsx @@ -4,7 +4,7 @@ * For more information, see https://remix.run/file-conventions/entry.server */ -import type { EntryContext } from "@remix-run/deno"; +import type { AppLoadContext, EntryContext } from "@remix-run/deno"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; import { renderToReadableStream } from "react-dom/server"; @@ -14,6 +14,7 @@ export default async function handleRequest( responseStatusCode: number, responseHeaders: Headers, remixContext: EntryContext, + _loadContext: AppLoadContext ) { const body = await renderToReadableStream( , @@ -23,7 +24,7 @@ export default async function handleRequest( console.error(error); responseStatusCode = 500; }, - }, + } ); if (isbot(request.headers.get("user-agent"))) { diff --git a/templates/express/app/entry.server.tsx b/templates/express/app/entry.server.tsx index ef312659bf5..5d182fcb54e 100644 --- a/templates/express/app/entry.server.tsx +++ b/templates/express/app/entry.server.tsx @@ -6,7 +6,7 @@ import { PassThrough } from "node:stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; @@ -18,20 +18,23 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { return isbot(request.headers.get("user-agent")) ? handleBotRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ) : handleBrowserRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -39,7 +42,8 @@ function handleBotRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( @@ -81,7 +85,8 @@ function handleBrowserRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( diff --git a/templates/fly/app/entry.server.tsx b/templates/fly/app/entry.server.tsx index ef312659bf5..5d182fcb54e 100644 --- a/templates/fly/app/entry.server.tsx +++ b/templates/fly/app/entry.server.tsx @@ -6,7 +6,7 @@ import { PassThrough } from "node:stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; @@ -18,20 +18,23 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { return isbot(request.headers.get("user-agent")) ? handleBotRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ) : handleBrowserRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -39,7 +42,8 @@ function handleBotRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( @@ -81,7 +85,8 @@ function handleBrowserRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( diff --git a/templates/netlify/app/entry.server.tsx b/templates/netlify/app/entry.server.tsx index ef312659bf5..5d182fcb54e 100644 --- a/templates/netlify/app/entry.server.tsx +++ b/templates/netlify/app/entry.server.tsx @@ -6,7 +6,7 @@ import { PassThrough } from "node:stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; @@ -18,20 +18,23 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { return isbot(request.headers.get("user-agent")) ? handleBotRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ) : handleBrowserRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -39,7 +42,8 @@ function handleBotRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( @@ -81,7 +85,8 @@ function handleBrowserRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( diff --git a/templates/remix/app/entry.server.tsx b/templates/remix/app/entry.server.tsx index ef312659bf5..5d182fcb54e 100644 --- a/templates/remix/app/entry.server.tsx +++ b/templates/remix/app/entry.server.tsx @@ -6,7 +6,7 @@ import { PassThrough } from "node:stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; @@ -18,20 +18,23 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { return isbot(request.headers.get("user-agent")) ? handleBotRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ) : handleBrowserRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -39,7 +42,8 @@ function handleBotRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( @@ -81,7 +85,8 @@ function handleBrowserRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( diff --git a/templates/vercel/app/entry.server.tsx b/templates/vercel/app/entry.server.tsx index ef312659bf5..5d182fcb54e 100644 --- a/templates/vercel/app/entry.server.tsx +++ b/templates/vercel/app/entry.server.tsx @@ -6,7 +6,7 @@ import { PassThrough } from "node:stream"; -import type { EntryContext } from "@remix-run/node"; +import type { AppLoadContext, EntryContext } from "@remix-run/node"; import { Response } from "@remix-run/node"; import { RemixServer } from "@remix-run/react"; import isbot from "isbot"; @@ -18,20 +18,23 @@ export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + loadContext: AppLoadContext ) { return isbot(request.headers.get("user-agent")) ? handleBotRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ) : handleBrowserRequest( request, responseStatusCode, responseHeaders, - remixContext + remixContext, + loadContext ); } @@ -39,7 +42,8 @@ function handleBotRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream( @@ -81,7 +85,8 @@ function handleBrowserRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, - remixContext: EntryContext + remixContext: EntryContext, + _loadContext: AppLoadContext ) { return new Promise((resolve, reject) => { const { pipe, abort } = renderToPipeableStream(