REST e GraphQL exigem schemas, codegen ou validação manual para manter o contrato entre cliente e servidor. O tRPC propõe outro caminho: compartilhar tipos TypeScript diretamente, sem schema intermediário.
Com base na documentação oficial e no estado atual do tRPC v11:
1. O que é tRPC
tRPC é um framework para construir e consumir APIs type-safe em projetos full-stack TypeScript. Você define procedimentos no servidor e os consome no cliente com autocomplete e checagem de tipos em tempo de build.
2. Principais Características
- Type-safe end-to-end — erros de contrato detectados em tempo de compilação
- Zero config — sem schemas, sem codegen
- Framework agnostic — React, Next.js, Express, Fastify, Lambda, Solid, Svelte
- Bundle leve — poucas dependências
- Subscriptions e batching — suporte a real-time e agrupamento de requisições
3. Exemplo Conceitual
// Servidor
const appRouter = router({
getUser: publicProcedure
.input(z.object({ id: z.string() }))
.query(({ input }) => db.user.findUnique({ where: { id: input.id } }))
})
// Cliente — types inferidos automaticamente
const user = await trpc.getUser.query({ id: '123' })
// user é tipado conforme o retorno do servidor
4. Quando Usar
- Projeto full-stack TypeScript
- Equipe que valoriza type-safety e DX
- Alternativa a REST/GraphQL quando você não precisa de API pública documentada
5. Quando Não Usar
- API consumida por clientes não-TypeScript
- Necessidade de contrato formal (OpenAPI, GraphQL schema) para parceiros
O tRPC é usado em produção por empresas como Cal.com, e é uma opção sólida para aplicações internas e full-stack TypeScript.