Build and consume fully typesafe APIs without schemas or code generation.
tRPC is a TypeScript framework for building end-to-end typesafe APIs. It allows developers to define API routes on the server and automatically get fully typed client-side calls without any code generation, schemas, or manual type definitions. It solves the problem of keeping client and server types in sync, reducing bugs and improving developer productivity.
Full-stack TypeScript developers building applications with a frontend and backend, particularly those using React, Next.js, Express, or Fastify who want type safety across their entire stack.
Developers choose tRPC for its exceptional developer experience—it provides full static type safety and autocompletion without the overhead of code generation, schemas, or a complex build pipeline, making it lightweight and easy to adopt incrementally.
🧙♀️ Move Fast and Break Nothing. End-to-end typesafe APIs made easy.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Automatically propagates server-side types to the client, providing full autocompletion and type checking without manual definitions, as shown in the README's demo where the client imports only type declarations.
Eliminates code generation and complex build pipelines, offering a snappy developer experience with zero runtime bloat, which is highlighted as a key feature for fast iteration.
Has zero external dependencies and a minimal client-side footprint, ensuring small bundle sizes and reduced performance overhead, as stated in the features list.
Offers batteries-included adapters for React, Next.js, Express, and Fastify, plus community adapters for other libraries, making it adaptable to various project setups.
Heavily reliant on TypeScript's type system, making it ineffective for JavaScript-only projects or teams using other languages, which limits its applicability in heterogeneous environments.
Lacks native support for generating OpenAPI or GraphQL schemas, complicating integration with external tools or clients that require standardized API documentation, a gap compared to schema-first approaches.
While core adapters are well-supported, community adapters for less common frameworks may be less mature or documented, posing risks for adoption in niche or non-standard stacks.