import { renderToString } from "react-dom/server"; import { RemixServer } from "remix"; import type { EntryContext } from "remix"; import { ServerStyleSheet } from "styled-components"; import StylesContext from "./StylesContext"; export default function handleRequest( request: Request, responseStatusCode: number, responseHeaders: Headers, remixContext: EntryContext ) { const sheet = new ServerStyleSheet(); // Render and extract styles let body = renderToString( sheet.collectStyles( ) ); // Note: getStyleTags is not really suitable here, using getStyleElement instead let styles = sheet.getStyleElement(); sheet.seal(); // Render with styles extracted from body let head = renderToString( ); let markup = `${head}${body}`; responseHeaders.set("Content-Type", "text/html"); return new Response(markup, { status: responseStatusCode, headers: responseHeaders }); }