website/src/content/docs/clients/react.mdx
import { InstallPackage } from "@/components/docs/InstallPackage";
See the React quickstart guide for getting started.
Use the JavaScript client for raw HTTP and WebSocket access:
import { createClient } from "rivetkit/client";
const client = createClient();
const handle = client.chatRoom.getOrCreate(["general"]);
const response = await handle.fetch("history");
const history = await response.json();
const ws = await handle.webSocket("stream");
ws.addEventListener("message", (event) => {
console.log("message:", event.data);
});
ws.send("hello");
Use the JavaScript client on your backend (Node.js/Bun). See the JavaScript client docs.
Keys uniquely identify actor instances. Use compound keys (arrays) for hierarchical addressing:
<CodeGroup> <CodeSnippet file="examples/docs/clients-react/keys/ChatRoom.tsx" title="ChatRoom.tsx" /> </CodeGroup>Don't build keys with string interpolation like "org:${userId}" when userId contains user data. Use arrays instead to prevent key injection attacks.
createRivetKit() (and the underlying createClient() instance) automatically read:
RIVET_ENDPOINTRIVET_NAMESPACERIVET_TOKENRIVET_RUNNERDefaults to http://localhost:6420 when unset. RivetKit runs on port 6420 by default.
Endpoints support URL auth syntax:
https://namespace:[email protected]
You can also pass the endpoint without auth and provide RIVET_NAMESPACE and RIVET_TOKEN separately. For serverless deployments, use your app's /api/rivet URL. See Endpoints for details.
Package: @rivetkit/react
createRivetKit - Create hooks for ReactuseActor - Hook for actor instances