An implementation of GraphQL for Go / Golang
10.2k
Stars
842
Forks
242
Open issues
30
Contributors
AI Analysis
A Go implementation of GraphQL that follows the official graphql-js reference specification, supporting queries, mutations, and subscriptions. It serves Go developers and teams building GraphQL APIs in Go, particularly those who need a mature, spec-compliant library; it is not suitable for JavaScript/Node.js environments or projects requiring alternative language implementations.
Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.
AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.
Mature Go GraphQL runtime with 10 years of production history but facing stronger competition
graphql-go/graphql is a pure-Go implementation of the GraphQL specification, closely mirroring the official graphql-js reference implementation. It supports queries, mutations, and subscriptions, and provides a code-first schema definition API. Built for Go developers who want to serve GraphQL APIs without leaving the Go ecosystem, it has been in the field since 2015. Its ecosystem includes HTTP middleware, Relay support, and DataLoader integration via third-party libraries. The project has modest but real adoption given its age and star count, though the Go community has broadly shifted toward gqlgen as the preferred tool.
Created in July 2015 as an early Go port of graphql-js, it was among the first GraphQL libraries available for Go developers and established the initial patterns for GraphQL in the Go ecosystem.
Growth peaked during 2017-2020 as GraphQL adoption surged broadly. Stars accumulated steadily over the years, reaching ~10K, largely from organic discovery. The 2-stars-per-week current rate signals plateau, not collapse — the project has a stable, if slow-growing, user base.
With 10,154 stars and 841 forks accumulated over 11 years, some real-world production usage is plausible. A Gitter community chat is linked. However, no enterprise case studies, download statistics, or named production users are cited in the README. Adoption not verified at scale.
Appears to use a runtime-reflection, code-first approach where schemas are built programmatically using Go structs and resolver functions — mirroring the graphql-js architecture. Likely single-library with optional third-party HTTP handler layered on top. No code generation step appears required.
A coveralls badge is present in the README and CI runs via CircleCI, suggesting automated test coverage is tracked. Specific coverage percentage is not documented in the README.
Last push was 2026-06-23, just 3 days before analysis date, indicating active maintenance. The project has been continuously pushed to for 11 years. Slow star growth does not indicate abandonment; the core library appears stable and intentionally minimal in scope.
ADOPT IF: you are maintaining an existing codebase already using this library, prefer a code-first schema definition style in Go, or want a stable, dependency-light GraphQL runtime that closely tracks the spec. AVOID IF: you are starting a new Go GraphQL project and want maximum type safety, performance, and community momentum — gqlgen is the stronger choice for greenfield work. MONITOR IF: you are evaluating long-term maintenance risk; the project is still actively pushed but its growth has plateaued and community gravity has shifted toward gqlgen.
Independent dimensions
Mainstream potential
3/10
Technical importance
6/10
Adoption evidence
4/10
- Community momentum has clearly shifted to gqlgen; new Go GraphQL tutorials, templates, and ecosystem tooling increasingly assume gqlgen, potentially creating a long-term support gap.
- Code-first schema definition can become verbose and error-prone at scale compared to schema-first SDL approaches with generated types.
- The third-party HTTP handler and Relay libraries (graphql-go-handler, graphql-relay-go) appear to be maintained by the same small author group, creating a dependency risk if maintainer bandwidth shrinks.
- No publicly documented performance benchmarks in README; runtime reflection-based resolver dispatch may carry overhead compared to gqlgen's code-generated approach.
- Star growth of approximately 2 per week suggests the project is no longer attracting meaningful new users, which may reduce the contributor pool needed to handle future spec changes.
Likely to remain a viable, stable option for existing users for several more years, but unlikely to regain category leadership. New adoption will probably remain minimal as gqlgen continues to dominate the Go GraphQL space.
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
Information
- Language
- Go
- License
- MIT
- Last updated
- 2w ago
- Created
- 134mo ago
- Analyzed with
- anthropic/claude-haiku-4-5
Stars over time
Contributors over time
Top 100 contributors only — repos with more will plateau at 100.
Open issues
No limit in nested selection sets
Increase tests coverage.
Don't discard data in case of an error
Disable graphql suggestions
OverlappingFieldsCanBeMergedRule stack-overflows on cyclic fragment spreads
Top contributors
Recent releases
Similar repos
graph-gophers/graphql-go
graphql-go is a Go library providing full support for the September 2025...
graphql/graphql-spec
This is the official GraphQL language specification repository, maintained by...
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
10.2k | +1 | Go | 8/10 | 2w ago |
|
|
4.8k | — | Go | 8/10 | 1w ago |
|
|
20.4k | — | TypeScript | 9/10 | 1w ago |
|
|
10.7k | — | Go | 9/10 | 22h ago |
|
|
14.6k | — | JavaScript | 9/10 | 2w ago |
|
|
6.2k | — | Java | 8/10 | 1w ago |
The dominant Go GraphQL library today (~10.7K stars but significantly higher recent velocity). Code-generation based, type-safe, schema-first. gqlgen has overtaken graphql-go/graphql as the community default for new Go projects due to better performance, type safety, and active feature development.
The official reference implementation in TypeScript/JS. graphql-go/graphql explicitly follows its design. Not a Go alternative; relevant only as the specification baseline.
Serves a different primary use case (RPC with protobuf contracts rather than flexible query APIs), but often considered as an alternative API layer in Go microservices where GraphQL might otherwise be used.
The Java equivalent — similar maturity profile and similar competitive pressure from newer, more ergonomic tools in its own ecosystem. Useful reference point for understanding graphql-go's niche.
graph-gophers/graphql-go is a separate Go GraphQL library with schema-first approach, offering another alternative for Go developers who prefer SDL-first workflows over graphql-go/graphql's code-first style.