# result-rpc > Typed RPC for React. Errors accumulate along the call path and discharge along the component tree. ## Start here - [Coding-agent start](https://result-rpc.com/start/agents): Coding agents: begin at https://result-rpc.com/skill.md, then follow its task router before writing code. - [Introduction](https://result-rpc.com/start/introduction): Typed RPC for React. Errors accumulate along the call path and discharge along the component tree. - [Installation](https://result-rpc.com/start/installation): One versioned package with one entry per runtime; the root is the contract language. - [Quickstart](https://result-rpc.com/start/quickstart): One query, one domain error, a provider, and a hook — the smallest possible result-rpc app. ## The contract - [Errors](https://result-rpc.com/concepts/errors): Namespaced tagged errors with wire codecs and policy — declared once, shared by both sides, registered by the router. - [Result composition](https://result-rpc.com/concepts/results): better-result and neverthrow are built in — with tagged errors required, because every error here is presumed to eventually cross a wire. - [Contract and procedures](https://result-rpc.com/concepts/contract): Procedures, middleware, and routers: the shared contract both sides close over. - [Services and request context](https://result-rpc.com/concepts/context): Two kinds of context: a process-lifetime service graph and request middleware composed by requirement. - [The wire](https://result-rpc.com/concepts/wire): Dates, BigInts, Maps, and cycles cross intact — a pinned, versioned serializer with byte limits. Binaries stay out of band. ## Client and cache - [The client boundary](https://result-rpc.com/concepts/client-boundary): result-rpc ships a real client to the browser, not just a type — so what you import decides what bundles. Import the contract, never the router. - [The client](https://result-rpc.com/concepts/client): Every call resolves Result with the complete union; batching, cancellation, and wire-parity server calls. - [React hooks](https://result-rpc.com/concepts/react): Result-native queries: exhaustive states, stale data on failed refreshes, offline as lifecycle, SSR hydration. - [Mutations](https://result-rpc.com/concepts/mutations): Result-state mutations, optimistic arcs, and declared invalidation: the blast radius lives in the contract. - [Entities](https://result-rpc.com/concepts/entities): Automatic invalidation and in-place updates by model + id — the identity graph over the denormalized cache. - [Model source compatibility](https://result-rpc.com/concepts/model-sources): Use $satisfies() to catch drift without importing source code into the client. - [Pagination](https://result-rpc.com/concepts/pagination): Cursor pagination that stays one cache entry per list — every page patched by entity identity, no manual page-splicing. - [Subscriptions](https://result-rpc.com/concepts/subscriptions): Streams under the same union, with connection lifecycle separate from failure. ## Failure ownership - [Shells](https://result-rpc.com/concepts/shells): Error boundaries for values: providers that claim failure classes, pause or escalate, and subtract what they own from component unions. - [Layers](https://result-rpc.com/concepts/layers): One auth declaration deriving the middleware, the context procedure, and the shell — nothing left to drift. - [Deploys and stale clients](https://result-rpc.com/concepts/deploys): Contract digests, skew detection, and client/stale: the compatibility window as a detected, owned state. ## Guides - [Forms and the wire](https://result-rpc.com/guides/forms): Forms validate humans; wires validate applications. The bridge: validators as wire codecs and server issues onto fields. - [Database errors](https://result-rpc.com/guides/database-errors): Turn common database constraint failures into private tagged values. - [React Server Components](https://result-rpc.com/guides/rsc): Prefetch on the server, hydrate into the client cache — no loading flash, no waterfall, and server-rendered rows a client mutation still patches by identity. - [Bring your own router](https://result-rpc.com/guides/routing): Shells are providers and hooks; routes-as-shells and prefetch loaders are sixty lines of app-owned glue. - [Testing and SSR](https://result-rpc.com/guides/testing): Wire-faithful parity clients, the fetch-handler-as-fetch harness, and validated hydration. - [Observability](https://result-rpc.com/guides/observability): Four taps, one per tier — a redaction-safe wire stream, shell reactions, and policy-aware server hooks. - [Migrating from tRPC](https://result-rpc.com/guides/migrating-from-trpc): Per-router coexistence, a mechanical concept mapping, and the auth-layer-first first slice. ## Reference - [Ticket demo](https://result-rpc.com/reference/ticket-demo): A live Cloudflare Worker and D1 app that makes optimistic updates, entity coherence, pagination, and invalidation visible. - [Examples](https://result-rpc.com/reference/examples): The escalation ladder: eight runnable rungs that double as the DX regression suite — each one proves its claims with request counters, not screenshots. - [Sharp edges](https://result-rpc.com/reference/sharp-edges): Named here so they are not discovered at 2am: reference identity, HMR, digests, control-flow rejections. - [Agent skill](https://result-rpc.com/reference/agent-skill): Teach your coding agent result-rpc — a progressively-discoverable skill that maps into these docs, which every agent can read as Markdown.