tRPC

Advanced Ecosystem 🟡 Mid

Définition

Bibliothèque qui expose des procédures TypeScript côté serveur et les rend appelables côté client avec des types inférés de bout en bout, sans schéma ni génération de code : une signature change, le client ne compile plus. tRPC v11, annoncée le 21 mars 2025, reste très compatible avec la v10 et ajoute le streaming de réponses (httpBatchStreamLink), les contenus non JSON (FormData, Blob, fichiers) et des fonctions serveur expérimentales. Pertinent quand front et back partagent un même monorepo TypeScript.

Analogie

Deux collègués qui parlent la même langue dans le même bureau n'ont pas besoin d'un traducteur assermenté (OpenAPI) : ils se comprennent à la virgule près.

Exemple de code

// server/router.ts
import { initTRPC } from '@trpc/server';
import { z } from 'zod';
const t = initTRPC.create();
export const appRouter = t.router({
  userById: t.procedure
    .input(z.object({ id: z.string() }))
    .query(({ input }) => db.user.findUnique({ where: { id: input.id } })),
});
export type AppRouter = typeof appRouter;

// client.ts – aucun type dupliqué
const trpc = createTRPCClient<AppRouter>({ links: [httpBatchLink({ url: '/api/trpc' })] });
const user = await trpc.userById.query({ id: 'u_1' }); // user typé

Cas d'usage

Application full-stack TypeScript (Next.js, monorepo) où l'API n'est consommée que par vos propres fronts.

Anti-pattern

Exposer une API publique ou multi-langages en tRPC : les consommateurs non TypeScript n'ont ni contrat ni outillage ; préférer REST/OpenAPI ou GraphQL.
#typescript#api#fullstack

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre