“GraphQL doesn’t support caching” is something you can read in the inter-webs. The perception that GraphQL is at odds with caching is something Jamie Barton addresses in his post. He walks through different caching techniques and how to leverage cache for GraphQL queries.
In this article, the team at Courier goes through the initial reservations they had before adopting GraphQL and looks back on how the adoption impacted their organization over the last year. It's a great example that it doesn't have to be black or white with GraphQL and REST. Both can exist side by side.
GraphQL directives can be very powerful but also have unintended side effects. GraphQL clients like Relay might not be able to deal with specific directives the way they were intended by the GraphQL server, as they're not necessarily specced. Leonardo Losoviz differentiates between schema and query type directives and talks about their pros and cons.
Libraries and Tools
GraphQL can not only be used for client to server, but also inter-service communication. That's where the team and Khanacademy make heavy use of GraphQL. To make this communication more manageable, they built a new GraphQL Client for Go: genqlient. The design goals are minimal boilerplate and type-safety for requests and responses, which makes a big difference to developer ergonomics.
Federating data with GraphQL and the concept of Data Oriented Architectures - Join this event to explore how GraphQL is being used to solve data challenges for applications at scale.