GraphQL: The Enterprise Honeymoon Is Over

https://news.ycombinator.com/rss Hits: 11
Summary

I’ve used GraphQL, specifically Apollo Client and Server, for a couple of years in a real enterprise-grade application.Not a toy app. Not a greenfield startup. A proper production setup with multiple teams, BFFs, downstream services, observability requirements, and real users.And after all that time, I’ve come to a pretty boring conclusion:GraphQL solves a real problem, but that problem is far more niche than people admit. In most enterprise setups, it’s already solved elsewhere, and when you add up the tradeoffs, GraphQL often ends up being a net negative.This isn’t a “GraphQL bad” post. It’s a “GraphQL after the honeymoon” post.what GraphQL is supposed to solveThe main problem GraphQL tries to solve is overfetching.The idea is simple and appealing:the client asks for exactly the fields it needsno more, no lessno wasted bytesno backend changes for every new UI requirementOn paper, that’s great. In practice, things are messier.overfetching is already solved by BFFsMost enterprise frontend architectures already have a BFF (Backend for Frontend).That BFF exists specifically to:shape data for the UIaggregate multiple downstream callshide backend complexityreturn exactly what the UI needsIf you’re using REST behind a BFF, overfetching is already solvable. The BFF can scope down responses and return only what the UI cares about.Yes, GraphQL can also do this. But here’s the part people gloss over.Most downstream services are still REST.So now your GraphQL layer still has to overfetch from downstream REST APIs, then reshape the response. You didn’t eliminate overfetching. You just moved it down a layer.That alone significantly diminishes GraphQL’s main selling point.There is a case where GraphQL wins here. If multiple pages hit the same endpoint but need slightly different fields, GraphQL lets you scope those differences per query.But let’s be honest about the trade.You’re usually talking about saving a handful of fields per request, in exchange for:more setupmore abstract...

First seen: 2025-12-14 18:55

Last seen: 2025-12-15 04:56