NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #2685 most downloaded on Packagist
A PHP port of GraphQL reference implementation
Last release 5 months ago
14 Apr 2026
Ships fairly regularly
a new release about every 2 weeks
Rarely documented
notes for 3 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
182 releases · first in 2015
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
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
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
Fix PHP 8.2 deprecated string interpolation syntax
Fixed:
Accept AST where field arguments are not given
Fixed:
Correct the broken 14.11.7 release - see https://github.com/webonyx/graphql-php/issues/1221
Fixed:
Fix PHP 8.2 deprecation of "static" in callables
Fixed:
Fix validation of modified sparse ASTs
Fixed:
Fix extend() to preserve repeatable
Fixed:
extend() to preserve repeatable (#931)Fix repeatable directive validation for AST
Fixed:
Fix compatibility of more methods with native return type in PHP 8.1
Fixed:
Support non-JSON ServerRequestInterface
Fixed:
ServerRequestInterfaceFix compatibility of methods with native return type in PHP 8.1
Fixed:
Allow field definitions to be defined as any iterable, not just array
Feat:
iterable, not just arrayMake IntType constants MAX_INT and MIN_INT public
Feat:
IntType constants MAX_INT and MIN_INT publicAdd support for type config decorator in SchemaExtender
Feat:
SchemaExtenderImplement GraphQL\Utils\AST::getOperationAST()
Feat:
GraphQL\Utils\AST::getOperationAST()Allow providing field definitions as a callable and resolve them lazily
Feat:
Avoid crashing in QueryPlan when __typename is used in the query
Fix:
QueryPlan when __typename is used in the queryImprove performance of subtype checks
Refactoring:
Fix overly eager validation of repeatable directive usage
Fix:
Add fallback for directive.isRepeatable in BuildClientSchema
Fix:
directive.isRepeatable in BuildClientSchemaOpen ReferenceExecutor for extending
Feat:
Fix Input Object field shortcut definition with callable
Fix:
Implement support for interfaces implementing interfaces (#740), huge kudos to @Kingdutch
Feat:
Deprecates:
Constant BreakingChangeFinder::BREAKING_CHANGE_INTERFACE_REMOVED_FROM_OBJECT.
Use BreakingChangeFinder::BREAKING_CHANGE_IMPLEMENTED_INTERFACE_REMOVED instead.
Constant value also changed from INTERFACE_REMOVED_FROM_OBJECT to IMPLEMENTED_INTERFACE_REMOVED.
Constant BreakingChangeFinder::DANGEROUS_CHANGE_INTERFACE_ADDED_TO_OBJECT
Use DANGEROUS_CHANGE_IMPLEMENTED_INTERFACE_ADDED instead.
Constant value also changed from INTERFACE_ADDED_TO_OBJECT to IMPLEMENTED_INTERFACE_ADDED.
Refactoring:
Fix signature of Error\FormattedError::prepareFormatter() to address PHP8 deprecation
Fix:
NodeList via []= (#767)Error\FormattedError::prepareFormatter() to address PHP8 deprecation (#742)Fixed SchemaPrinter so that it uses late static bindings when extended
Fix:
SchemaPrinter so that it uses late static bindings when extendedDirectiveDefinitionNode->locations as NodeList<NamedNode> (fixes AST::fromArray conversion) (#723)Parser::implementsInterfaces as NodeList<NamedTypeNode> (fixes AST::fromArray conversion)Parser::unionMemberTypes to match actual NodeList<NamedTypeNode>Allow typeLoader to return a type thunk
Feat:
typeLoader to return a type thunk (#687)Fix:
Public access to FieldDefinition::$type property
Deprecates:
FieldDefinition::$type property (#702)Fixes:
Handle nullable DirectiveNode#astNode in SchemaValidationContext
Fixes:
DirectiveNode#astNode in SchemaValidationContext (#708)Add partial parse functions for const variants
New:
Fixes:
IntValueNode (#691)Refactoring:
- Optimize lazy types
This release brings several breaking changes. Please refer to UPGRADE document for details.
Bug fixes:
Refactoring:
This release brings several breaking changes. Please refer to UPGRADE document for details.
GraphQL\Deferred now extends GraphQL\Executor\Promise\Adapter\SyncPromiseBreakingChangesFinder)GraphQL\Error\Debug to GraphQL\Error\DebugFlag.GraphQL\Executor\ExecutionResult, GraphQL\Error\FormattedError and GraphQL\Server\ServerConfig do not accept boolean value anymore but int only.$positions in GraphQL\Error\Error constructor are not nullable anymore. Same can be expressed by passing an empty array.Notable features and improvements:
Other noteworthy changes:
deprecationReason will now print the @deprecated directive (only a null deprecationReason won't print the @deprecated directive).Also some bugs fixed, heavily invested in PHPStan for static analysis.
Special thanks to @simPod, @spawnia and @shmax for their major contributions!
Your coding agent can read these notes before it upgrades. Set up the MCP server →