Routes the incoming Request to the RSC server and appropriately proxies the server response for data / resource requests, or renders to HTML for a document request.
import { createFromReadableStream } from "@vitejs/plugin-rsc/ssr"; import * as ReactDomServer from "react-dom/server.edge"; import { unstable_RSCStaticRouter as RSCStaticRouter, unstable_routeRSCServerRequest as routeRSCServerRequest, } from "react-router"; routeRSCServerRequest({ request, serverResponse, createFromReadableStream, async renderHTML(getPayload) { const payload = getPayload(); return await renderHTMLToReadableStream( <RSCStaticRouter getPayload={getPayload} />, { bootstrapScriptContent, formState: await payload.formState, } ); }, }); async function routeRSCServerRequest({ request, serverResponse, createFromReadableStream, renderHTML, hydrate = true, }: { request: Request; serverResponse: Response; createFromReadableStream: SSRCreateFromReadableStreamFunction; renderHTML: ( getPayload: () => DecodedPayload, options: { onError(error: unknown): string | undefined; onHeaders(headers: Headers): void; }, ) => ReadableStream<Uint8Array> | Promise<ReadableStream<Uint8Array>>; hydrate?: boolean; }): Promise<Response> Your react-server-dom-xyz/client's createFromReadableStream function, used to decode payloads from the server.
A Response or partial response generated by the RSC handler containing a serialized unstable_RSCPayload.
Whether to hydrate the server response with the RSC payload. Defaults to true.
A function that renders the unstable_RSCPayload to HTML, usually using a <RSCStaticRouter>.
The request to route.
A Response that either contains the RSC payload for data requests, or renders the HTML for document requests.