1import { createFromReadableStream } from "@vitejs/plugin-rsc/ssr";
2import { renderToReadableStream as renderHTMLToReadableStream } from "react-dom/server.edge";
3import {
4 unstable_routeRSCServerRequest as routeRSCServerRequest,
5 unstable_RSCStaticRouter as RSCStaticRouter,
6} from "react-router";
7
8export default async function handler(
9 request: Request,
10 serverResponse: Response,
11): Promise<Response> {
12 const bootstrapScriptContent =
13 await import.meta.viteRsc.loadBootstrapScriptContent("index");
14
15 return await routeRSCServerRequest({
16 request,
17 serverResponse,
18 createFromReadableStream,
19 async renderHTML(getPayload, options) {
20 const payload = getPayload();
21
22 return await renderHTMLToReadableStream(
23 <RSCStaticRouter getPayload={getPayload} />,
24 {
25 ...options,
26 bootstrapScriptContent,
27 signal: request.signal,
28 formState: await payload.formState,
29 },
30 );
31 },
32 });
33}