NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1448 most downloaded on npm
Common package containing utils and types for GraphQL tools
Last release 3 days ago
01 Oct 2026
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
1794 releases · first in 2020
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
c8c13ed1: enhance: remove TypeMap and small improvements
Nothing published for this version
Nothing published for this version
2c807ddb: enhance(buildOperationNodeForField): mutation response return a field of type Query
b9684631: feat(validate-documents): more clear error messages with stack
b9684631: feat(validate-documents): more clear error messages with stack
67691b78: - schemaExtensions option has been added to mergeSchemas, makeExecutableSchema and
stitchSchemas configurations
Breaking Changes;
mergeSchemas and MergeSchemasConfig from @graphql-tools/merge to
@graphql-tools/schema package to prevent circular dependency between them.mergeSchemasAsync has been removed.NamedDefinitionNode, resetComments, collectComment, pushComment and printComment
from @graphql-tools/merge to @graphql-tools/utils.04830049: fix(utils): support old TypeScript versions
b823dbaf: fix(utils): fix AggregateErrorConstructor type issue
8c8d4fc0: BREAKING CHANGE: remove cloneSchema
af9a78de: BREAKING CHANGE
Now each loader handles glob patterns internally and returns an array of Source object instead
of single Source
GraphQL Tag Pluck now respects code locations and returns graphql-js Source objects for each
found code block
Thanks to the one above, CodeFileLoader now returns different Source objects for each found
SDL code block.
7d3e3006: BREAKING CHANGE
fieldToFieldConfig, argsToFieldConfigArgument and argumentToArgumentConfig.toConfig method instead for each.7d3e3006: BREAKING CHANGE
dae6dc7b: refactor: ExecutionParams type replaced by Request type
rootValue property is now a part of the Request type.
When delegating with delegateToSchema, rootValue can be set multiple ways:
When using wrapSchema/stitchSchemas, a subschemaConfig can specify the createProxyingResolver function which can pass whatever rootValue it wants to delegateToSchema as above.
6877b913: BREAKING CHANGES;
mergeDeep now takes an array of sources instead of set of parameters as input and it takes an
additional flag to enable prototype merging Instead of mergeDeep(...sources) =>
mergeDeep(sources)
c42e811d: BREAKING CHANGES;
Request to ExecutionRequestoperationType: OperationTypeNode field in ExecutionRequestcontext in createRequest and createRequestInfo instead of delegateToSchemaIt doesn't rely on info.operation.operationType to allow the user to call an operation from different root type. And it doesn't call getOperationAST again and again to get operation type from the document/operation because we have it in Request and ExecutionParams https://github.com/ardatan/graphql-tools/pull/3166/files#diff-d4824895ea613dcc1f710c3ac82e952fe0ca12391b671f70d9f2d90d5656fdceR38
Improvements;
defaultExecutor for a single GraphQLSchema so allow getBatchingExecutor to memoize
batchingExecutor correctly.defaultExecutor is created for subscription and other operation
types. Only one executor is used.Batch executor is memoized by
executorreference butcreateDefaultExecutordidn't memoize the default executor so this memoization wasn't working correctly onbatch-executeside. https://github.com/ardatan/graphql-tools/blob/remove-info-executor/packages/batch-execute/src/getBatchingExecutor.ts#L9
7d3e3006: BREAKING CHANGE
AggregateError
implementation. The major difference is the individual errors are kept under errors property
instead of the object itself with Symbol.iterator.// From;
for (const error of aggregateError)
// To;
for (const error of aggregateError.errors)
8c8d4fc0: BREAKING CHANGE: remove cloneSchema
7d3e3006: BREAKING CHANGE
debugLog but uses console.log directly only if DEBUG is available under
process.env7d3e3006: BREAKING CHANGE
camelCase naming convention in buildOperationNodeForField74581cf3: fix(getDirectives): preserve order around repeatable directives
BREAKING CHANGE: getDirectives now always return an array of individual DirectiveAnnotation
objects consisting of name and args properties.
New useful function getDirective returns an array of objects representing any args for each use
of a single directive (returning the empty object {} when a directive is used without
arguments).
Note: The getDirective function returns an array even when the specified directive is
non-repeatable. This is because one use of this function is to throw an error if more than one
directive annotation is used for a non repeatable directive!
When specifying directives in extensions, one can use either the old or new format.
c0ca3190: BREAKING CHANGE
Executor can receive AsyncIterable and subscriptions will also be handled by
Executor. This is a future-proof change for defer, stream and live queries7d3e3006: BREAKING CHANGE
SchemaVisitor, visitSchema and VisitSchemaKindmapSchema
insteadNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →