Skip to content

Commit

Permalink
Adopt latest entry.(client|server).tsx examples
Browse files Browse the repository at this point in the history
• update entry.server.tsx based on: https://github.com/remix-run/react-router-templates/blob/main/cloudflare/app/entry.server.tsx
• remove entry.client.tsx files (they aren’t in the template examples any more)
  • Loading branch information
acusti committed Feb 7, 2025
1 parent 1314eda commit 01f7b77
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 76 deletions.
17 changes: 0 additions & 17 deletions apps/site/app/entry.client.tsx

This file was deleted.

22 changes: 15 additions & 7 deletions apps/site/app/entry.server.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,30 @@ export default async function handleRequest(
request: Request,
responseStatusCode: number,
responseHeaders: Headers,
reactRouterContext: EntryContext,
_loadContext: AppLoadContext
routerContext: EntryContext
) {
let shellRendered = false;
const userAgent = request.headers.get("user-agent");

const body = await renderToReadableStream(
<ServerRouter context={reactRouterContext} url={request.url} />,
<ServerRouter context={routerContext} url={request.url} />,
{
onError(error: unknown) {
// Log streaming rendering errors from inside the shell
console.error(error);
responseStatusCode = 500;
// Log streaming rendering errors from inside the shell. Don't log
// errors encountered during initial shell rendering since they'll
// reject and get logged in handleDocumentRequest.
if (shellRendered) {
console.error(error);
}
},
signal: request.signal,
}
);
shellRendered = true;

if (isbot(request.headers.get("user-agent") || "")) {
// Ensure requests from bots and SPA Mode renders wait for all content to load before responding
// https://react.dev/reference/react-dom/server/renderToPipeableStream#waiting-for-all-content-to-load-for-crawlers-and-static-generation
if ((userAgent && isbot(userAgent)) || routerContext.isSpaMode) {
await body.allReady;
}

Expand Down
18 changes: 0 additions & 18 deletions examples/remix-cms/app/entry.client.tsx

This file was deleted.

24 changes: 16 additions & 8 deletions examples/remix-cms/app/entry.server.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,36 @@ export default async function handleRequest(
request: Request,
responseStatusCode: number,
responseHeaders: Headers,
reactRouterContext: EntryContext
routerContext: EntryContext
) {
let shellRendered = false;
const userAgent = request.headers.get("user-agent");

const body = await renderToReadableStream(
<ServerRouter context={reactRouterContext} url={request.url} />,
<ServerRouter context={routerContext} url={request.url} />,
{
onError(error: unknown) {
responseStatusCode = 500;
// Log streaming rendering errors from inside the shell
console.error(error);
// Log streaming rendering errors from inside the shell. Don't log
// errors encountered during initial shell rendering since they'll
// reject and get logged in handleDocumentRequest.
if (shellRendered) {
console.error(error);
}
},
signal: request.signal,
}
);
shellRendered = true;

if (isbot(request.headers.get("user-agent") || "")) {
// Ensure requests from bots and SPA Mode renders wait for all content to load before responding
// https://react.dev/reference/react-dom/server/renderToPipeableStream#waiting-for-all-content-to-load-for-crawlers-and-static-generation
if ((userAgent && isbot(userAgent)) || routerContext.isSpaMode) {
await body.allReady;
}

responseHeaders.set("Content-Type", "text/html");

return new Response(body, {
status: responseStatusCode,
headers: responseHeaders,
status: responseStatusCode,
});
}
18 changes: 0 additions & 18 deletions templates/remix/app/entry.client.tsx

This file was deleted.

24 changes: 16 additions & 8 deletions templates/remix/app/entry.server.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,36 @@ export default async function handleRequest(
request: Request,
responseStatusCode: number,
responseHeaders: Headers,
reactRouterContext: EntryContext
routerContext: EntryContext
) {
let shellRendered = false;
const userAgent = request.headers.get("user-agent");

const body = await renderToReadableStream(
<ServerRouter context={reactRouterContext} url={request.url} />,
<ServerRouter context={routerContext} url={request.url} />,
{
onError(error: unknown) {
responseStatusCode = 500;
// Log streaming rendering errors from inside the shell
console.error(error);
// Log streaming rendering errors from inside the shell. Don't log
// errors encountered during initial shell rendering since they'll
// reject and get logged in handleDocumentRequest.
if (shellRendered) {
console.error(error);
}
},
signal: request.signal,
}
);
shellRendered = true;

if (isbot(request.headers.get("user-agent") || "")) {
// Ensure requests from bots and SPA Mode renders wait for all content to load before responding
// https://react.dev/reference/react-dom/server/renderToPipeableStream#waiting-for-all-content-to-load-for-crawlers-and-static-generation
if ((userAgent && isbot(userAgent)) || routerContext.isSpaMode) {
await body.allReady;
}

responseHeaders.set("Content-Type", "text/html");

return new Response(body, {
status: responseStatusCode,
headers: responseHeaders,
status: responseStatusCode,
});
}

0 comments on commit 01f7b77

Please sign in to comment.