⚠️
This is the documentation for the old GraphQL Yoga version 4. We recommend upgrading to the latest GraphQL Yoga version 5.
Migrate to GraphQL Yoga v5
Migrate to GraphQL Yoga v5
Batching
Batching is the process of taking a group of requests, combining them into one, and making a single request with the same data that all of the other queries would have made. This is a way to reduce the number of requests that your application makes to the server.
The Batching functionality is described via the
Batching RFC
.
Enable Batching
Batching is disabled by default, but you can enable it by setting the batching
option to true
:
Disable batching
import { createServer } from 'node:http'
import { createSchema, createYoga } from 'graphql-yoga'
export const yoga = createYoga<ServerContext, UserContext>({
schema: createSchema({
typeDefs: /* GraphQL */ `
type Query {
hello: String!
}
`
}),
batching: true
})
const server = createServer(yoga)
server.listen(4000, () => {
console.info('Server is running on http://localhost:4000/graphql')
})
Execute batched operation
curl -X POST -H 'Content-Type: application/json' http://localhost:4000/graphql \
-d '[{"query": "{ hee: hello }"}, {"query": "{ ho: hello }"}]'
Limit the amount of Batched Requests
By default up to 10 GraphQL requests are allowed within a single HTTP request. If this amount is
exceeded an error will be raised. You can customize this option by passing an object to the
batching
configuration option:
Limit the amount of Batched Requests to 2
import { createServer } from 'node:http'
import { createSchema, createYoga } from 'graphql-yoga'
export const yoga = createYoga<ServerContext, UserContext>({
schema: createSchema({
typeDefs: /* GraphQL */ `
type Query {
hello: String!
}
`
}),
batching: {
limit: 2
}
})
const server = createServer(yoga)
server.listen(4000, () => {
console.info('Server is running on http://localhost:4000/graphql')
})
Execute batched operation (exceed limit)
curl -X POST -H 'Content-Type: application/json' -i http://localhost:4000/graphql \
-d '[{"query": "{ hee: hello }"}, {"query": "{ ho: hello }"}, {"query": "{ holla: hello }"}]'
When exceeding the batching limit the HTTP status code will be
413
(Payload Too Large).
GraphQL Error response
{
"errors": [{ "message": "Batching is limited to 2 operations per request." }]
}