Skip to content

Latest commit

 

History

History
215 lines (190 loc) · 43.3 KB

File metadata and controls

215 lines (190 loc) · 43.3 KB

September 2025 Changelog

This describes the set of changes since the last edition of the GraphQL specification, October2021 (see prior changelog). It's intended to ease the review of changes since the last edition for reviewers or curious readers, but is not normative. Please read the specification document itself for full detail and context.

Thank you, contributors!

The last few years have seen GraphQL reach a wide breath of use, powering internal and external APIs at startups and enterprises, and integrating with various platforms and tools. Work contributed to GraphQL has fit into two priorities:

  1. Maintain a stable base. With a huge ecosystem built atop GraphQL, it's our responsibility to put stability above all else. The vast majority of work has fixed inconsistencies, improved behavior in edge and corner cases, improve security, and avoid performance pitfalls.

  2. Provide a productive expressive query language. GraphQL was designed with API consumers in mind, and this spec release includes significant improvements to the GraphQL query engine and language.

Significant contributions have been made since the last edition of the spec, and both of these priories remain active areas of investment with many exciting RFCs still in the works.

Over 100 commits made to the GraphQL spec since the last edition, most of which have dozens or hundreds of comments! It's a huge amount of work to champion these changes, and a great responsibility to evolve the technical foundations for this community and ecosystem.

Thank you!

Contributors

Anyone is welcome to join working group meetings and contribute to GraphQL. See Contributing.md for more information. Thank you to these community members for their technical contribution to this edition of the GraphQL specification.

Author Github
Alex Reilly @twof
Andreas Marek @andimarek
Ben Kraft @benjaminjkraft
Benedikt Franke @spawnia
Benjie @benjie
Benoit 'BoD' Lubek @BoD
dondonz @dondonz
dugenkui @dugenkui03
Glen @tempire
Ivan Goncharov @IvanGoncharov
Ivan Maximov @sungam3r
James Bellenger @jbellenger
Jan Melcher @Yogu
Jason Dent @Jason3S
Jeff Auriemma @bignimbus
Jovi De Croock @JoviDeCroock
Kevin Smithson @smitt04
Lee Byron @leebyron
Mark Larah @magicmark
Martin Bonnin @martinbonnin
Michael Staib @michaelstaib
Mike Solomon @msolomon
PascalSenn @PascalSenn
Renée @goto-bus-stop
Rob Richard @robrichard
Roman Ivantsov @rivantsov
Shane Krueger @Shane32
Stephen Spalding @fotoetienne
Thomas Heyenbrock @thomasheyenbrock
Yaacov Rydzinski @yaacovCR

Generated with:

node scripts/generate-contributor-list.mjs October2021..HEAD

Notable contributions

A few notable changes in this edition:

  • OneOf input objects, aka "input unions" (#825)
  • Schema coordinates as a standard for GraphQL tooling and reporting (#794)
  • Descriptions on documents, in motivation for AI-consumers (#1170)
  • Broader support for deprecation across a GraphQL Schema (#805 #1040 #1053 #1142)
  • GraphQL language has been updated to support the full Unicode range (#849)
  • Countless editorial improvements! The spec is much easier to read and contribute to, with fewer ambiguities.

Changeset

Listed in reverse-chronological order (latest commit on top).

Hash Change Authors
f29fbcd gpt guided style guide improvements (#1190) Lee Byron [email protected]
0157a79 Fix link format for input coercion rules (#1189) Yaacov Rydzinski [email protected]
f70abe2 Recommend that order of unordered collections is maintained where possible (#1092) Benjie [email protected] Lee Byron [email protected]
11c6664 condense the spec defs appendix (#1186) Lee Byron [email protected]
10331b0 RFC: OneOf Input Objects (#825) Benjie [email protected] Michael Staib [email protected] Shane Krueger [email protected] Yaacov Rydzinski [email protected] Glen [email protected] Lee Byron [email protected]
cd0b8bd Pull copyright and license into repo-level LICENSE.md (#1172) Lee Byron [email protected]
1e29b8a Schema Coordinates (#794) Mark Larah [email protected] Benjie Gillam [email protected] Lee Byron [email protected] Lee Byron [email protected] Martin Bonnin [email protected] Benoit 'BoD' Lubek [email protected]
bc4ddea Fix CoerceArgumentValues() hasValue (#1056) Benjie [email protected]
b1a23de Fix typo in merged "executable documents" PR (#1176) Benjie [email protected] Lee Byron [email protected]
9939469 Minor editorial tweaks following the merge of #1039 (#1175) Benjie [email protected]
468d848 editorial: move normative clause above example in descriptions (#1173) Lee Byron [email protected]
7eb8983 [RFC] Default value coercion rules (#793) Benjie [email protected] Lee Byron [email protected]
fca6653 Add descriptions to executable documents 2025 Update (#1170) Stephen Spalding [email protected] Ivan Goncharov [email protected] Glen [email protected] Lee Byron [email protected]
17e2a47 Replace ExecuteSelectionSet with ExecuteCollectedFields (#1039) Benjie [email protected] Yaacov Rydzinski [email protected] Lee Byron [email protected]
e71805e Fixed unclear wording in the validation section (#1096) PascalSenn [email protected] Benjie [email protected] Lee Byron [email protected]
ccf23e3 Define Data Collections used in the spec (#1102) Benjie [email protected] Lee Byron [email protected]
ac483bd Add validation rule that operation types exist (#955) Ben Kraft [email protected] Benjie Gillam [email protected] Shane Krueger [email protected]
883c759 Do not exclude schema keyword if schema has description (#1167) Benjie [email protected]
df9f4f8 Define "execution result" and "request error result" (#1159) Rob Richard [email protected] Benjie [email protected]
9d0710e Add Appendix C - Specified Type System Definitions (#1037) Martin Bonnin [email protected] Benjie [email protected] Lee Byron [email protected]
a44d4ec [RFC] Prevent @skip and @include on root subscription selection set (#860) Benjie [email protected]
3b0d8e6 Add 'Assert' consistency to algorithm format check (#1168) Benjie [email protected]
646f937 make includeDeprecated non nullable (#1142) Martin Bonnin [email protected]
73d8b26 Implementations may not deprecate a field that the interface hasn't deprecated (#1053) Benjie [email protected] Lee Byron [email protected]
1f690d4 Clarify 'Values of Correct Type' rule relates to literals (#1118) Benjie [email protected]
a1884bb 3.13 Directive validation edits (#1089) James Bellenger [email protected] Benjie [email protected]
c855454 3.10 Input Objects - clarify lists are permitted as Input fields (#1068) Mike Solomon [email protected] Benjie [email protected]
586cbed Add 'extensions' to request (#976) Benjie [email protected] Lee Byron [email protected]
4390617 Consistently use 'response name' not 'response key' (#1147) Benjie [email protected] Lee Byron [email protected]
521ef5b Rename field error to execution error; define response position (#1152) Benjie [email protected] Lee Byron [email protected]
4abd86e Consistently use result map when referring to objectTypes selection set result (#1148) Rob Richard [email protected]
0ab3d4b Ensure algorithm steps are always wrapped in braces (#1146) Benjie [email protected]
b7c57ea Fix choice of language used in algorithm (#1134) Benjie [email protected]
b41339a Editorial: Add response stream to Response Section (#1135) Rob Richard [email protected]
a1c025f Field merging validation: clarify pair members are distinct (#1136) Andreas Marek [email protected]
e9ac8c8 Editorial: move "Path" to it's own section (#1129) Rob Richard [email protected] Benjie [email protected]
2073bc8 Change 'original' to 'previous' to clarify multiple extensions (#1123) Benjie [email protected]
5bf400e "data" and "errors" appear in the "response", not the "result" (#1130) Benjie [email protected]
c37a4a4 Editorial changes for Event Streams (#1099) Lee Byron [email protected]
34730e8 Make the reason argument in @deprecated non-nullable (#1040) Martin Bonnin [email protected]
df1acea Fix coercion table for list (#1057) Benjie [email protected]
7073e3a enhance(ResolveFieldValue): note that list items may be async (#1066) Yaacov Rydzinski [email protected]
e5bddd9 Fix punctuation in grammar rule (#1084) Benjie [email protected]
a80f9ff Consistently spell 'implementers' (#1087) Benjie [email protected]
497e333 Fix reference mistake in subscription execution (#994) Jan Melcher [email protected]
7485a34 Reformat the parts of an execution request (#1090) Benjie [email protected]
8076f1e chore: add clarifying note for composite and expand term (#1078) Jovi De Croock [email protected] Benjie [email protected]
b5ecff0 Add definition of "selection set" and clarify serial execution examples (#1032) Benjie [email protected]
32d24f6 Be strict about error paths format (#1073) Martin Bonnin [email protected] Benjie [email protected]
4ab71e3 Add missing . (#1088) Benjie [email protected]
a5da8bb ID must always serialize as String would (#1086) Benjie [email protected]
0ba7cdf Enforce consistent punctuation in algorithms (#1069) Benjie [email protected]
8682a86 Fix 'response error' -> 'request error' (#1016) Benjie [email protected]
feac5a5 Fix punctuation in some algorithms (#1067) Yaacov Rydzinski [email protected]
56d6107 Fix heading level for Required Arguments validation rule (#1055) Renée [email protected]
3adfcca Add explicit definition for BlockString (#1042) Benjie [email protected]
6b7c2c4 Remove "subscriptions is a significant change" sentence (#983) Roman Ivantsov [email protected] Benjie [email protected] Roman Ivantsov [email protected]
a5cc6ea Clarify that selection sets cannot be empty (#1025) Benjie [email protected]
afc0a35 Add links to contributed custom scalar specs at scalars.graphql.org (#1009) dondonz [email protected] Benjie [email protected]
4e93488 Fix ambiguity around when schema definition may be omitted (#987) Benjie [email protected] Lee Byron [email protected]
12b7ad7 add explanation about argument name uniqueness. (#891) dugenkui [email protected] Benjie Gillam [email protected]
559063c Change 'server' to 'service' (#1005) Benjie [email protected]
cbb8354 Fix broken license link (#1007) Lee Byron [email protected]
e736f78 Add a style guide to the specification (#1003) Benjie [email protected]
193fba3 field merging - field TYPES must not differ (#979) Roman Ivantsov [email protected] Roman Ivantsov [email protected] Benjie [email protected] Lee Byron [email protected]
3d03cab P30: Fixed the explanatory text for algorithm checking uniqueness of non-repeatable directives (#975) Roman Ivantsov [email protected] Roman Ivantsov [email protected] Lee Byron [email protected]
342b838 P34: implementing field type is either exact match or of covariant type (#974) Roman Ivantsov [email protected] Roman Ivantsov [email protected] Lee Byron [email protected]
ab865f9 Provide explicit ref to Value Completion section (#982) Roman Ivantsov [email protected] Benjie Gillam [email protected] Roman Ivantsov [email protected]
edda836 Changed 'must NOT BE' to 'must not be' (#980) Roman Ivantsov [email protected] Roman Ivantsov [email protected]
3aa021f separate out IsSubType from IsValidImplementationFieldType (#977) Yaacov Rydzinski [email protected]
47a6bfd Editorial: Clarify intro for inline fragments (#969) Lee Byron [email protected]
3885a64 Editorial: Error Terminology (#966) Lee Byron [email protected] Roman Ivantsov [email protected] Benjie Gillam [email protected]
9a96fc4 Editorial: Clarity about subject being a GraphQL service or system (#965) Lee Byron [email protected] Roman Ivantsov [email protected]
57bd86d Editorial: Fix reference to object in interface introspection (#964) Lee Byron [email protected] Roman Ivantsov [email protected]
299ce69 Editorial: Remove inaccurate statement about line terminator within tokens (#963) Lee Byron [email protected] Roman Ivantsov [email protected]
1b8fe7a Leaf field selections clarification (#958) Benjie Gillam [email protected] Roman Ivantsov [email protected] Lee Byron [email protected]
a91e158 Light editorial around delivery agnostic subscriptions (#959) Benjie Gillam [email protected] Roman Ivantsov [email protected]
bb95060 Move punctuation outside quotation marks (#962) Benedikt Franke [email protected]
4de8782 Clarify query shorthand relationship with directives (#873) Benjie Gillam [email protected] Lee Byron [email protected]
94f73f4 Allow deprecation of input values (field args, directive args, input fields) (#805) Ivan Goncharov [email protected] Kevin Smithson [email protected] Lee Byron [email protected] Ivan Maximov [email protected] Stephen Spalding [email protected]
6b69577 use findDog query from example schema only after defining it (#927) Thomas Heyenbrock [email protected]
7dd73e7 Define request, note it is transport independent (#949) Benjie Gillam [email protected]
84ec339 RFC: Allow full unicode range (#849) Lee Byron [email protected] Andreas Marek [email protected]
00b88f0 Fix formatting Lee Byron [email protected]
a61e35d consistent indentation and punctuation (#925) Thomas Heyenbrock [email protected]
266fcca Rename VariableDefinitions to VariablesDefinition (#916) Ivan Maximov [email protected]
7908822 Format the spec with prettier (#727) Benjie Gillam [email protected]
c18590c Fix typo in Type System section (#905) Benoit Lubek [email protected]
60323c9 fix typo (#896) Alex Reilly [email protected]
357bb72 Start next working draft Lee Byron [email protected]

Generated with:

git log October2021..f29fbcd2ab5af763fce7ad62896eb62465a669b3 --format="| [%h](https://github.com/graphql/graphql-spec/commit/%H) | %s | %an <%ae> %(trailers:key=Co-authored-by,valueonly,separator=%x20)" -- spec

Diff

Github: diff from last spec cut