--- title: matchRSCServerRequest unstable: true --- # unstable_matchRSCServerRequest [MODES: data]

This API is experimental and subject to breaking changes in minor/patch releases. Please use with caution and pay **very** close attention to release notes for relevant changes. ## Summary [Reference Documentation ↗](https://api.reactrouter.com/v7/variables/react_router.unstable_matchRSCServerRequest.html) Matches the given routes to a [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) and returns an [RSC](https://react.dev/reference/rsc/server-components) [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) encoding an [`unstable_RSCPayload`](https://api.reactrouter.com/v7/types/react_router.unstable_RSCPayload.html) for consumption by an [RSC](https://react.dev/reference/rsc/server-components) enabled client router. ```tsx import { createTemporaryReferenceSet, decodeAction, decodeReply, loadServerAction, renderToReadableStream, } from "@vitejs/plugin-rsc/rsc"; import { unstable_matchRSCServerRequest as matchRSCServerRequest } from "react-router"; matchRSCServerRequest({ createTemporaryReferenceSet, decodeAction, decodeFormState, decodeReply, loadServerAction, request, routes: routes(), generateResponse(match) { return new Response( renderToReadableStream(match.payload), { status: match.statusCode, headers: match.headers, } ); }, }); ``` ## Signature ```tsx async function matchRSCServerRequest({ createTemporaryReferenceSet, basename, decodeReply, requestContext, loadServerAction, decodeAction, decodeFormState, onError, request, routes, generateResponse, }: { createTemporaryReferenceSet: () => unknown; basename?: string; decodeReply?: DecodeReplyFunction; decodeAction?: DecodeActionFunction; decodeFormState?: DecodeFormStateFunction; requestContext?: RouterContextProvider; loadServerAction?: LoadServerActionFunction; onError?: (error: unknown) => void; request: Request; routes: RSCRouteConfigEntry[]; generateResponse: ( match: RSCMatch, { onError, temporaryReferences, }: { onError(error: unknown): string | undefined; temporaryReferences: unknown; }, ) => Response; }): Promise ``` ## Params ### opts.basename The basename to use when matching the request. ### opts.createTemporaryReferenceSet A function that returns a temporary reference set for the request, used to track temporary references in the [RSC](https://react.dev/reference/rsc/server-components) stream. ### opts.decodeAction Your `react-server-dom-xyz/server`'s `decodeAction` function, responsible for loading a server action. ### opts.decodeFormState A function responsible for decoding form state for progressively enhanceable forms with React's [`useActionState`](https://react.dev/reference/react/useActionState) using your `react-server-dom-xyz/server`'s `decodeFormState`. ### opts.decodeReply Your `react-server-dom-xyz/server`'s `decodeReply` function, used to decode the server function's arguments and bind them to the implementation for invocation by the router. ### opts.generateResponse A function responsible for using your `renderToReadableStream` to generate a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) encoding the [`unstable_RSCPayload`](https://api.reactrouter.com/v7/types/react_router.unstable_RSCPayload.html). ### opts.loadServerAction Your `react-server-dom-xyz/server`'s `loadServerAction` function, used to load a server action by ID. ### opts.onError An optional error handler that will be called with any errors that occur during the request processing. ### opts.request The [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) to match against. ### opts.requestContext An instance of [`RouterContextProvider`](../utils/RouterContextProvider) that should be created per request, to be passed to [`action`](../../start/data/route-object#action)s, [`loader`](../../start/data/route-object#loader)s and [middleware](../../how-to/middleware). ### opts.routes Your [route definitions](https://api.reactrouter.com/v7/types/react_router.unstable_RSCRouteConfigEntry.html). ## Returns A [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) that contains the [RSC](https://react.dev/reference/rsc/server-components) data for hydration.