Skip to content

Instantly share code, notes, and snippets.

@jjenzz
Last active February 18, 2023 20:04
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jjenzz/b67c8bd263bbf0f4e39c5fca55db93ee to your computer and use it in GitHub Desktop.
Save jjenzz/b67c8bd263bbf0f4e39c5fca55db93ee to your computer and use it in GitHub Desktop.
// entry.server.tsx
import * as ReactDOMServer from 'react-dom/server';
import * as Remix from 'remix';
import { getCssText } from '~/stitches.config';
import type { EntryContext } from 'remix';
export default function handleRequest(
request: Request,
responseStatusCode: number,
responseHeaders: Headers,
remixContext: EntryContext
) {
const markup = ReactDOMServer.renderToString(
<Remix.RemixServer context={remixContext} url={request.url} />
).replace(/<\/head>/, `<style>${getCssText()}</style></head>`);
responseHeaders.set('Content-Type', 'text/html');
return new Response('<!DOCTYPE html>' + markup, {
status: responseStatusCode,
headers: responseHeaders,
});
}
// root.tsx
import { globalStyles } from '~/stitches.config';
export default function App() {
globalStyles();
return (
<html lang="en">
<head>
<meta charSet="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<Remix.Meta />
<Remix.Links />
<style dangerouslySetInnerHTML={{ __html: getCssText() }} />
</head>
<body>
<Remix.Outlet />
<Remix.ScrollRestoration />
<Remix.Scripts />
{process.env.NODE_ENV === 'development' && <Remix.LiveReload />}
</body>
</html>
);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment