Skip to main content

GraphQL Composite Schemas

At a glance

  • Identifier: CompositeSchemas
  • Stage: RFC0: Strawman
  • Champion: -
  • PR: -

Timeline


RFC: GraphQL Composite Schemas

There's a lot of different ways of combining multiple GraphQL schemas together to form a larger composite schema, and the wide variety of options can make it challenging to design schemas in a way that will be easy to compose later. To name but a few approaches:

  • Schema merging and stitching (various implementations in many languages)
  • GraphQL modules and other "extend type"-based approaches
  • Federation (Apollo's v1 and v2, Mercurius, WunderGraph, Hot Chocolate, etc)
  • Hasura's GraphQL Joins
  • Atlassian's Nadel
  • StepZen

Though these are all separate solutions to similar problems, there are various concerns that most of them have to consider:

  • Identifying the schemas to join
  • Discovering/defining the relationships between the types/schemas
  • Schema manipulation to avoid conflicts (e.g. renaming types/fields)
  • Resolving questions around type "ownership", redundancy and/or sharing; detecting conflicts
  • Detecting breaking changes
  • Actually fetching the relevant data, and combining it to fulfil the GraphQL request
  • Managing composition metadata with respect to handling the above concerns
  • etc

It feels like it would be of benefit to the ecosystem at large if there were a shared specification that covers a few of these needs.

If this is of interest to you, please enter your name, GitHub handle, and organization below:

NameGitHubOrganizationLocation
Benjie Gillam@BenjieGraphileChandler's Ford, UK
Yaacov Rydzinski@yaacovCRIndividualNeve Daniel, IL
Roman Ivantsov@rivantsovMicrosoftRedmond, WA, US
Tim Suchanek@timsuchanekGraphCDNBerlin, DE
Saihajpreet Singh@saihajThe GuildOttawa, ON, CA
Matteo Collina@mcollinaNearFormForlì, IT
Uri Goldshtein@urigoThe GuildTel Aviv, IL
Marc-Andre Giroux@xuorigNetflixMontreal, Canada
Praveen Durairaju@praveenwebHasuraBangalore, India
Hugh Willson@hwillsonApolloOttawa, ON, CA
Michael Staib@michaelstaibChilliCream Inc.Zurich, CH
Nicholas DeJaco@ndejaco2AmazonSeattle, WA, US
Rafael Abreu@grillorafaelIndividualDublin, IE.
Julian Mayorga@okjulianGraphQLAppsRS, Brazil
Caleb Thomas@linux-jediMetaBrooklyn, NY, US
Nathan Chapman@nathanchapmanIndividualAustin, TX, US
Bobbie Cochrane@bobbiejcStepZenOriental, NC
Chi Chan@chikitMetaSan Jose, CA, US
Agata Witkowska@agata-witTykGdansk, PL
Predrag Gruevski@obi1kenobiKenshoBoston, MA, US
Dariusz Kuc@dariuszkucApolloChicago, IL, US
John Starich@JohnStarichIBMAustin, TX, US
Jason Webb@jwebb49IntuitSan Diego, CA, US
Laurin Quast@n1rualThe GuildMannheim, DE
Jens Neuse@jensneuseWunderGraphBretten, DE
Dustin Deus@starptechWunderGraphWuppertal, DE
Martijn Walraven@martijnwalravenApolloAmsterdam, NL
Jonny Green@jonnydgreenUnityBath, UK
Daniel Winter@d-winterHygraphGießen, DE
Jonas Faber@flexzuuHygraphButzbach, DE