Intro

I was an early adopter of GraphQL at Convoy. I implemented a lot of the early backend infrastructure, and spent 6 years intermittently maintaining the GraphQL APIs.

The last time I worked in GraphQL was 2022, so I’m probably a bit out of date on the actual technical libraries. But regardless of the implementation, I think GraphQL is a fundamentally flawed concept.

Here is why I would never add GraphQL to any new project, and would instead use vanilla JSON-over-HTTP (REST, if you like).

Experience:

  • set up early graphql resolver backend infrastructure in Convoy’s monolith
    • authorization
    • data loaders

What does GraphQL get right?

  • It makes it very easy for clients to request more data on existing API calls
  • It makes client-side API performance management simpler

What’s better about REST?

Simplicity

  • Authorization is far more straightforward
  • No N+1 queries by default

Parallelism

  • Schema awareness much more limited in intermediate systems. Method and route are all you need
  • There’s less need for a global API authority to limit what gets added
  • You can iterate on and deprecate APIs separately from each other