Felipe Moacir

tRPC: APIs Type-Safe sem Schema nem Codegen

TypeScriptAPIFull-StacktRPC
tRPC: APIs Type-Safe sem Schema nem Codegen

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.