A GraphQL server implementation for Go with a minimal API and full spec support.
graphql-go is a GraphQL server library for Go that provides full support for the GraphQL specification with an idiomatic and easy-to-use API. It focuses on production readiness while maintaining a minimal and developer-friendly design, offering features like parallel execution, panic handling, and schema type-checking.
Go developers building production GraphQL servers who value idiomatic Go patterns, performance, and comprehensive spec compliance.
Developers choose graphql-go for its clean, minimal API that integrates seamlessly with Go's context and standard libraries, its production-oriented features like built-in observability and parallel execution, and its compile-time safety through schema type-checking.
GraphQL server with a focus on ease of use
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Seamlessly uses Go's context and structs for resolvers, making it familiar to Go developers, as shown in the resolver examples using context.Context and exported methods.
Includes built-in panic handling, parallel execution, and observability support for OpenTelemetry/OpenTracing, ensuring stability and performance in production environments.
Schema type-checking ensures resolvers match the GraphQL schema at compile time, reducing runtime errors and enhancing reliability, as mentioned in the features.
Parallel resolver execution and field selection inspection help avoid N+1 query problems, with configurable options like MaxParallelism for fine-tuning.
The README states that internal APIs are subject to change, which could lead to breaking updates and require extra maintenance in future versions.
Subscriptions are supported but only with a sample WebSocket transport, lacking robust out-of-the-box solutions for production-grade real-time applications.
Resolvers must be manually matched to schema fields using Go structs and methods, without automatic code generation tools, increasing initial setup effort.