Docs
Try Apollo Studio

Federation-compatible subgraph implementations

For use in a federated supergraph


The following open-source GraphQL server libraries and hosted solutions support acting as a subgraph in a federated supergraph. 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.

To add a subgraph to this list, feel free to open an issue or check out the Apollo Federation Subgraph Maintainers Implementation Guide to learn how to submit a PR for your implementation!

Table Legend

IconDescription
🟩Functionality is supported
🟥Critical functionality is not supported
🔲Additional Federation functionality is not supported

C# / .NET

LibraryFederation 1 SupportFederation 2 Support
GraphQL for .NET
_service🟩
@key (single)🟩
@key (multi)🔲
@key (composite)🔲
@requires🔲
@provides🔲
@ftv1🔲
@link🟥
@shareable🔲
@tag🔲
@override🔲
@inaccessible🔲
Hot Chocolate
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟥
@shareable🔲
@tag🔲
@override🔲
@inaccessible🔲

Elixir

LibraryFederation 1 SupportFederation 2 Support
Absinthe.Federation
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩

Go

LibraryFederation 1 SupportFederation 2 Support
gqlgen
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🟩
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩

Java / Kotlin

LibraryFederation 1 SupportFederation 2 Support
dgs-framework
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🟩
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩
Federation JVM
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🟩
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩
GraphQL Java Kickstart (Spring Boot)
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🟩
@link🟥
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩
GraphQL Kotlin
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🟩
@link🟥
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩

JavaScript / TypeScript

LibraryFederation 1 SupportFederation 2 Support
Apollo Server
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🟩
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩
express-graphql
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩
GraphQL Yoga
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩
Mercurius
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟥
@shareable🔲
@tag🔲
@override🔲
@inaccessible🔲
NestJS
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🟩
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩
Pothos GraphQL
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🟩
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩

PHP

LibraryFederation 1 SupportFederation 2 Support
Lighthouse (Laravel)
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟥
@shareable🔲
@tag🔲
@override🔲
@inaccessible🔲
Apollo Federation PHP
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟥
@shareable🔲
@tag🔲
@override🔲
@inaccessible🔲

Python

LibraryFederation 1 SupportFederation 2 Support
Ariadne
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟥
@shareable🔲
@tag🔲
@override🔲
@inaccessible🔲
Graphene
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🔲
@requires🟩
@provides🔲
@ftv1🔲
@link🟥
@shareable🔲
@tag🔲
@override🔲
@inaccessible🔲
Strawberry
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟥
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩

Ruby

LibraryFederation 1 SupportFederation 2 Support
GraphQL Ruby
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🟩
@link🟥
@shareable🔲
@tag🔲
@override🔲
@inaccessible🔲

Rust

LibraryFederation 1 SupportFederation 2 Support
Async-graphql
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟥
@shareable🔲
@tag🔲
@override🔲
@inaccessible🔲

Scala

LibraryFederation 1 SupportFederation 2 Support
Caliban
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🟩
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩

Hosted Subgraphs

LibraryFederation 1 SupportFederation 2 Support
AWS AppSync
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🟩
@requires🟩
@provides🟩
@ftv1🔲
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩
StepZen
_service🟩
@key (single)🟩
@key (multi)🟩
@key (composite)🔲
@requires🟩
@provides🟩
@ftv1🔲
@link🟩
@shareable🟩
@tag🟩
@override🟩
@inaccessible🟩
Edit on GitHub
Previous
Subgraphs in Apollo Server
Next
Graph router/gateway