In my experience, the open source tooling around GraphQL is much better than the tools that generate types from other SDLs like protobufs.
This makes it really easy for servers and clients to behave in a typesafe manner.
I've seen a backend service / front-end SPA use REST, grpc and then GraphQL to communicate. Type safety has been the easiest to understand and scale across the eng team using the GraphQL ecosystem.
In my experience, the open source tooling around GraphQL is much better than the tools that generate types from other SDLs like protobufs.
This makes it really easy for servers and clients to behave in a typesafe manner.
I've seen a backend service / front-end SPA use REST, grpc and then GraphQL to communicate. Type safety has been the easiest to understand and scale across the eng team using the GraphQL ecosystem.