Catch the highlights of GraphQLConf 2023!Click for recordings.Or check out our recap blog post.
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 (opens in a new tab), GraphQL Nexus (opens in a new tab), gqtx (opens in a new tab), or vanilla graphql-js (opens in a new tab), 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')
})