Subgraph-compatible server libraries
The following open-source GraphQL server libraries support acting as a subgraph in a federated graph, and their support is tracked in Apollo's subgraph compatibility repository. Check out the repository for details on the compatibility tests listed in the table below.
Language | Framework | _service | @key (single) | @key (multi) | @key (composite) | @requires | @provides | ftv1 |
---|---|---|---|---|---|---|---|---|
AppSync | aws-appsync | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
C# (.NET) | graphql-dotnet | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
C# (.NET) | hotchocolate | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Elixir | absinthe_federation | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ (in progress) |
Go | gqlgen | ✔️ | ✔️* | ✔️* | ❌ | ✔️ | ✔️ | ❌ |
JavaScript | apollo-server | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
JavaScript | express-graphql | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
JavaScript | Mercurius | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Java | federation-jvm | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Java / Kotlin | dgs | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Kotlin | graphql-kotlin | ✔️ | ✔️* | ✔️* | ✔️* | ✔️ | ✔️ | ✔️ |
PHP | apollo-federation-php | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
PHP | Lighthouse (Laravel) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Python | graphene | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ❌ |
Python | ariadne | ✔️ | ✔️* | ✔️* | ✔️* | ✔️ | ✔️ | ❌ |
Python | strawberry-graphql | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Ruby | apollo-federation-ruby | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Rust | async-graphql | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Scala | caliban | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
* Library does not support multiple @key
definitions, but all types of @key
definitions are supported
To add a library to this list, feel free to open an issue or check out the Apollo Federation Library Maintainers Implementation Guide to learn how to submit a PR for your library!