Feature Backend Desk
REST, GraphQL or tRPC: what each puts on the wire, measured
One user lookup in three styles: tRPC’s batched GETs hit a 431 at 30 KB, GraphQL answers a failed query with 200, and only REST gives a cache a stable URL.

REST, GraphQL and tRPC are usually compared on developer experience, but the choice a small team makes is where its HTTP behaviour lives: in the URL, in a persisted query, or in a procedure name plus JSON. That decides how responses are cached, what your dashboards see as an error, and where requests start failing as they grow. Against tRPC 11.19.0, graphql 17.0.
2 and a hand-written REST handler on Node.js 22, the same user lookup produced a 304 revalidation, a 200 for a failed query, and a 431 once a batched URL passed about 30 KB. Two recent changes make the choice less binary than older comparisons assume: GraphQL’s September 2025 spec edition added @oneOf, and tRPC has an alpha OpenAPI generator. Three APIs, three different requests for the same lookup. The test API had one read (user by ID) and one write (create user). Each style was run locally and called with fetch, so the…



