Overview
tRPC is a TypeScript RPC framework that infers client input, output, and error types from server-side routers and procedures. It keeps frontend and backend types aligned without a separate schema-generation or code-generation step.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Infer client types from routers and procedures
Server procedures define validation and behavior while their type information flows to clients for completion and static checking.
Connect React and multiple HTTP server adapters
The ecosystem includes React Query integration plus adapters for Next.js, Express, Fastify, Fetch API, and other server environments.
Useful for TypeScript frontend and backend codebases managed together
It fits teams that want API changes to surface as TypeScript errors across a full-stack application before runtime.
Sources: [2]
Plan a separate contract boundary for public polyglot APIs
tRPC centers on shared TypeScript types. APIs consumed by third parties or non-TypeScript clients may still need a language-neutral contract such as OpenAPI.
Sources: [3]
Official sources
- [1]trpc/trpc repository(2026-09-21)
- [2]tRPC README(2026-09-21)
- [3]tRPC documentation(2026-09-21)
- [4]@trpc/server package(2026-09-21)
- [5]tRPC MIT license(2026-09-21)
Supplemental curator note
tRPC does not start from a language-neutral API contract such as OpenAPI; it propagates TypeScript server types to clients. That is powerful when frontend and backend live in a closely managed TypeScript environment, while public APIs and polyglot clients may need a separate contract strategy. The current `@trpc/server` package is 11.19.0.
Try it in 3 steps
- 1
Create the official Next.js example project
Use the README Next.js + Prisma starter to get a project with routers, a client, and shared tRPC types.
npx create-next-app --example https://github.com/trpc/trpc --example-path examples/next-prisma-starter trpc-prisma-starter - 2
Start the development server
Open the application and verify that a server procedure is connected to the typed client.
cd trpc-prisma-starter && npm run dev - 3
Add one procedure and inspect type propagation
Change an input or output type and verify that completion and type errors update immediately on the client.
Add a router procedure → call it from the client
Growth
Growth trends · Last 30 days
40,630 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 33
- Open PRs
- 56
Development activity is still being collected.
Built with
Categories and tags
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- typescript
- api
- nextjs
- prisma
- next
- react
- Stars
- 40,630
- Forks
- 1,680
- Watchers
- 106
- Open issues
- 145
- Contributors
- 460
- Primary language
- TypeScript
- License
- MIT
- Repository last updated
- Sep 17, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Cal.diy48,583 Stars
5 shared tag(s) · Same language
A MIT-licensed self-hosted community scheduling platform with Cal.com's enterprise code removed.
TypeScript - Linkwarden19,816 Stars
4 shared tag(s) · Same language
A self-hosted collaborative bookmark and knowledge archive with preserved pages, full-text search, annotations, and sharing.
TypeScript - Plasmic7,030 Stars
3 shared tag(s) · 2 shared category(s) · Same language
A visual builder that can drag-and-drop existing React components to create apps, websites, and CMS content integrated with a real codebase.
TypeScript - Medusa36,400 Stars
3 shared tag(s) · 1 shared category(s) · Same language
A TypeScript commerce platform for composing modules, workflows, and APIs into B2B, DTC, marketplace, and custom commerce systems.
TypeScript - Onlook26,774 Stars
3 shared tag(s) · 1 shared category(s) · Same language
An open-source visual code editor for directly designing and editing Next.js + Tailwind applications with AI.
TypeScript
Report incorrect information
Tell us if any listing information is incorrect or outdated.