tRPC has changed how TypeScript developers think about building APIs. Created by Alex Johansson (known as KATT), the library lets you define API procedures on the server and call them from the client with full type safety — no code generation, no schema files, no runtime overhead. It just works because both sides share TypeScript types.
The name stands for “TypeScript Remote Procedure Call,” and the concept is simple: you write a function on the server, and on the client, you get autocomplete, type checking, and error detection for that function’s inputs and outputs automatically. Change a return type on the server, and your IDE immediately flags everywhere in the client that needs updating.
tRPC is not a replacement for REST or GraphQL in every scenario. It works best when you control both the client and server and both are written in TypeScript. For public APIs consumed by third parties, REST with OpenAPI or GraphQL still makes more sense. But for full-stack TypeScript applications — which describes a huge number of modern web projects — tRPC removes an enormous amount of boilerplate.
The library gained massive popularity through the T3 Stack (Next.js + tRPC + Prisma + NextAuth + Tailwind), created by Theo Browne, which became one of the most popular full-stack starter kits. tRPC integrates well with Next.js, Nuxt, Astro, Express, Fastify, and other frameworks.
Version 10 (released in 2022) was a significant rewrite that improved the API, added better support for subscriptions via WebSockets, and enhanced the middleware system. Version 11 continued refining the developer experience.
tRPC’s weekly npm downloads have grown from thousands to millions, reflecting its adoption in the TypeScript community. It’s become a standard tool in the modern TypeScript stack, particularly for startups and small teams where development velocity matters and the client-server boundary is under one team’s control.