The REST vs GraphQL debate has been running for a decade. tRPC added a third serious option in 2022. Here is our current thinking after building hundreds of APIs across all three paradigms.
REST: still the right default for public APIs
REST's cache semantics, HTTP tooling ecosystem, and near-universal client support make it the safest choice for APIs consumed by third parties or mobile clients outside your control. OpenAPI documentation is a first-class deliverable on every REST project we ship.
GraphQL: right for complex, product-driven APIs
When a single client needs to compose data from many entities in a flexible way — dashboards, feeds, multi-step forms — GraphQL's typed schema and co-location of query with component pays off. The operations overhead (N+1 protection, persisted queries, schema governance) is real and should be costed in.
tRPC: the best DX for full-stack TypeScript monorepos
If your client and server are both TypeScript in the same repo, tRPC eliminates the schema-generation step entirely. End-to-end type safety with zero codegen is a meaningful productivity boost for product teams shipping fast. The trade-off is tight coupling — tRPC is not appropriate for APIs with external consumers.