v5 (latest)
Features
GraphQL Schema

GraphQL Schema

GraphQL Yoga makes no assumptions about the schema building library you want to use. Whether you’re using a library such as Pothos, GraphQL Nexus, gqtx, or vanilla graphql-js, as long as it provides you with a GraphQLSchema to schema, you can pass it to GraphQL Yoga.

Providing a Schema

Simply pass a schema to the schema option:

Provide a conditional schema
import { createServer } from 'node:http'
import { createYoga } from 'graphql-yoga'
import { schema } from './schema.js'
 
const yoga = createYoga({ schema })
const server = createServer(yoga)
 
// Start the server and you're done!
server.listen(4000, () => {
  console.info('Server is running on http://localhost:4000/graphql')
})

Conditional Schema

You can also pass a factory function for your schema that can return a Promise. The factory function is invoked for every GraphQL request.

⚠️

We do not recommend building a GraphQL schema from scratch for every single incoming request. Please, use a caching mechanism or pre-build your GraphQL schemas before starting the server.

Provide a sync conditional schema
import { createServer } from 'node:http'
import { createYoga } from 'graphql-yoga'
import { getSchemaForViewer } from './schema.js'
 
const yoga = createYoga({
  schema: async ({ request }) => getSchemaForViewer(request.headers.get('x-schema') ?? 'default')
})
const server = createServer(yoga)
 
// Start the server and you're done!
server.listen(4000, () => {
  console.info('Server is running on http://localhost:4000/graphql')
})