GraphQL is a query language for APIs and a runtime for fulfilling those queries with existing data. The author was initially skeptical of GraphQL but through experimenting with it realized it could help solve over-fetching and under-fetching problems by allowing clients to request specific fields from an API. GraphQL also provides a flexible yet strongly typed system that allows APIs to evolve without breaking existing clients.