graphql-go

graphql-go/graphql

Go MIT Web Dev

An implementation of GraphQL for Go / Golang

10.2k stars
842 forks
recent
GitHub +1 / week

10.2k

Stars

842

Forks

242

Open issues

30

Contributors

v0.8.1 10 Apr 2023

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.

Web Dev Library Discovery value: 3/10
Documentation 8/10
Activity 7/10
Community 9/10
Code quality 7/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

graphql go-library api-server schema-driven subscriptions
Actively maintained Well documented MIT licensed Popular Beginner friendly Production ready
Deep Analysis · Based on README and public signals
2w ago

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.

Origin

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

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.

In production

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.

Code analysis
Architecture

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.

Tests

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.

Maintenance

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.

Honest verdict

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

Risks
  • 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.
Prediction

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.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Go
100%

Information

Language
Go
License
MIT
Last updated
2w ago
Created
134mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

graph-gophers

graph-gophers/graphql-go

graphql-go is a Go library providing full support for the September 2025...

4.8k Go Web Dev
graphql

graphql/graphql-js

GraphQL.js is the official JavaScript reference implementation of GraphQL, a...

20.4k TypeScript Web Dev
99designs

99designs/gqlgen

gqlgen is a schema-first code generation library for building type-safe GraphQL...

10.7k Go Web Dev
graphql

graphql/graphql-spec

This is the official GraphQL language specification repository, maintained by...

14.6k JavaScript Dev Tools
graphql-java

graphql-java/graphql-java

GraphQL Java is a mature, specification-compliant GraphQL implementation for...

6.2k Java Web Dev
vs. alternatives
99designs/gqlgen

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.

graphql/graphql-js

The official reference implementation in TypeScript/JS. graphql-go/graphql explicitly follows its design. Not a Go alternative; relevant only as the specification baseline.

grpc/grpc-go

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.

graphql-java/graphql-java

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.

vektah/dataloaden + graph-gophers/graphql-go

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.