--- title: createCallServer unstable: true --- # unstable_createCallServer [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 Create a React `callServer` implementation for React Router. ```tsx import { createFromReadableStream, createTemporaryReferenceSet, encodeReply, setServerCallback, } from "@vitejs/plugin-rsc/browser"; import { unstable_createCallServer as createCallServer } from "react-router"; setServerCallback( createCallServer({ createFromReadableStream, createTemporaryReferenceSet, encodeReply, }) ); ``` ## Signature ```tsx function createCallServer({ createFromReadableStream, createTemporaryReferenceSet, encodeReply, fetch: fetchImplementation = fetch, }: { createFromReadableStream: BrowserCreateFromReadableStreamFunction; createTemporaryReferenceSet: () => unknown; encodeReply: EncodeReplyFunction; fetch?: (request: Request) => Promise; }) ``` ## Params ### opts.createFromReadableStream Your `react-server-dom-xyz/client`'s `createFromReadableStream`. Used to decode payloads from the server. ### opts.createTemporaryReferenceSet A function that creates a temporary reference set for the [RSC](https://react.dev/reference/rsc/server-components) payload. ### opts.encodeReply Your `react-server-dom-xyz/client`'s `encodeReply`. Used when sending payloads to the server. ### opts.fetch Optional [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) implementation. Defaults to global [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch). ## Returns A function that can be used to call server actions.