[September 2025 version of GraphQL spec](https://spec.graphql.org/September2025) has been [released](https://github.com/graphql/graphql-spec/releases/tag/September2025). [Changelog](https://github.com/graphql/graphql-spec/blob/September2025/changelogs/September2025.md) > ## Notable contributions > > A few notable changes in this edition: > - OneOf input objects, aka "input unions" (graphql/graphql-spec#825) > - Schema coordinates as a standard for GraphQL tooling and reporting (graphql/graphql-spec#794) > - Descriptions on documents, in motivation for AI-consumers (graphql/graphql-spec#1170) > - Broader support for deprecation across a GraphQL Schema (graphql/graphql-spec#805 graphql/graphql-spec#1040 graphql-spec#1053 graphql/graphql-spec#1142) > - GraphQL language has been updated to support the full Unicode range (graphql/graphql-spec#849) > - Countless editorial improvements! The spec is much easier to read and contribute to, with fewer ambiguities. ## Roadmap - [x] Support `@oneOf` input objects - #1354 - #1062 - #1055 - graphql/graphql-spec#825 - [x] Support full unicode range - #1349 - graphql/graphql-spec#849 - graphql/graphql-spec#687 - [x] Support `@deprecated` on input values - #1348 - #864 - graphql/graphql-spec#805 - [x] Make `@deprecated(reason: ...)` non-`Null` - #1348 - graphql/graphql-spec#1040 - [ ] Reject deprecated fields when interface field is not deprecated - graphql/graphql-spec#1053 - [x] Make `includeDeprecated` field in introspection non-`Null` - #1348 - graphql/graphql-spec#1142 - [x] Support `description` on documents - #1349 - graphql/graphql-spec#1170 - [x] ~~Allow specifying schema description~~ (already possible) - #1349 - graphql/graphql-spec#1167 - [x] Rename `VariableDefinitions` to `VariablesDefinition` - #1353 - graphql/graphql-spec#916 - [ ] Recheck `IsValidImplementationFieldType` and `IsSubType` algos - graphql/graphql-spec#977 - [ ] Recheck interface fields and arguments covariance - graphql/graphql-spec#974 - [x] Recheck argument name uniqueness - Checked: covered by `unique_argument_names` validation rule - graphql/graphql-spec#891 - [x] ~~Ensure root types are named properly~~ (generated SDL always has `schema` definition) - graphql/graphql-spec#987 - [x] Recheck selection set cannot be empty - Checked: empty selection set returns parsing error - graphql/graphql-spec#1025 - [ ] Recheck lists coercion - #1362 - graphql/graphql-spec#1057 - [ ] Support `extensions` in request - #1356 - graphql/graphql-spec#976 - [ ] Recheck literals validation - #1362 - graphql/graphql-spec#1118 - [x] ~~Adjust documentation of built-in scalars~~ (reverted in graphql/graphql-spec#1186) - graphql/graphql-spec#1037 - [x] ~~Adjust "execution result"/"response" terminology~~ (well enough already) - graphql/graphql-spec#1159 - [x] ~~Replace `ExecuteSelectionSet` with `ExecuteCollectedFields`~~ (not required) - graphql/graphql-spec#1039 - [ ] Support default value coercion rules - #1362 - graphql/graphql-spec#793 - [ ] Recheck `CoerceArgumentValues()` `hasValue` - #1362 - graphql/graphql-spec#1056 - [ ] Update links to September 2025 spec
September 2025 version of GraphQL spec has been released.
Changelog
Roadmap
@oneOfinput objects@oneOfinput objects (#1062, #1055, #1347) #1354@OneOfInput Object feature #1062@deprecatedon input values@deprecated(reason: ...)non-Null@deprecatednon-nullable graphql/graphql-spec#1040includeDeprecatedfield in introspection non-NullincludeDeprecatednon nullable graphql/graphql-spec#1142descriptionon documentsAllow specifying schema description(already possible)VariableDefinitionstoVariablesDefinitionVariableDefinitionstoVariablesDefinition(#1347) #1353IsValidImplementationFieldTypeandIsSubTypealgosunique_argument_namesvalidation ruleEnsure root types are named properly(generated SDL always hasschemadefinition)extensionsin requestextensionsinGraphQLRequest(#1347, graphql/graphql-spec#976) #1356Adjust documentation of built-in scalars(reverted in condense the spec defs appendix graphql/graphql-spec#1186)Adjust "execution result"/"response" terminology(well enough already)Replace(not required)ExecuteSelectionSetwithExecuteCollectedFieldsExecuteSelectionSetwithExecuteCollectedFieldsgraphql/graphql-spec#1039CoerceArgumentValues()hasValue