tRPC allows you to easily build & consume fully typesafe APIs, without schemas or code generation.
As TypeScript and static typing increasingly becomes a best practice in web programming, the API presents a major pain point. We need better ways to statically type our API endpoints and share those types between our client and server (or server-to-server). We set out to build a simple library for building typesafe APIs that leverages the full power of modern TypeScript. Introducing tRPC!
An alternative to traditional REST or GraphQL
Currently GraphQL is the dominant way to implement typesafe APIs in TypeScript (and it's amazing!). Since GraphQL is designed as a language-agnostic specification for implementing APIs, it doesn't take full advantage of the power of a language like TypeScript - further reading.
If your project is built with full-stack TypeScript, you can share types directly between your client and server, without relying on code generation.
- ✅ Well-tested and production ready.
- 🧙♂️ Full static typesafety & autocompletion on the client, for inputs, outputs and errors.
- 🐎 Snappy DX - No code generation, run-time bloat, or build pipeline.
- 🍃 Light - tRPC has zero deps and a tiny client-side footprint.
- 🐻 Easy to add to your existing brownfield project.
- 🔋 Batteries included - React.js/Next.js/Express.js/Fastify adapters. (But tRPC is not tied to React - reach out if you want to make a Svelte/Vue/... adapter)
- 🥃 Subscriptions support.
- ⚡️ Request batching - requests made at the same time can be automatically combined into one.
- 👀 Quite a few examples that you can use for reference or as a starting point.