Repository navigation
Releases
Releases · graphql/graphql-js
v17.1.0
v17.1.0 (2026-11-04)
New Feature 🚀
- #4852 spec change: allow empty selection sets (@martinbonnin)
- #4905 feat: add maxComments parser option (@yaacovCR)
- #4906 feat: add maxSourceLength parser option (@yaacovCR)
- #4950 feat: configure list type nesting in the parser (@yaacovCR)
- #4953 feat: configure printer indentation depth (@yaacovCR)
Bug Fix 🐞
- #4837 fix(VariablesInAllowedPositionRule): allow fragments with variables prior to operations (@yaacovCR)
- #4838 fix(DeferStreamDirectiveOnRootFieldRule): handle fragment cycles (@yaacovCR)
- #4839 fix(OverlappingFieldsCanMergeRule): require same variable definitions (@yaacovCR)
- #4853 fix(OverlappingFieldsCanMerge): fix var scope for fragment comparison cache (@yaacovCR)
- #4841 Skip deferred fragments in collectFields only when same directive is used (@robrichard)
- #4859 test(incremental): document bugs in shared deferred work (@duckki)
- #4868 fix(incremental): prevent lost or delayed successful shared results (@yaacovCR)
- #4869 fix(incremental): prevent error completions for unannounced fragments (@yaacovCR)
- #4865 fix(validation): keep argument defaults inside fragments (@SashaMIT)
- #4879 fix(validation): keep collected fields separate by parent type (@yaacovCR)
- #4895 fix(validation): bound conflict descriptions (@yaacovCR)
- #4896 fix(validation): bound nested conflict locations (@yaacovCR)
- #4898 perf(validation): prepare fragment spreads only for comparisons (@yaacovCR)
- #4897 feat(validation): limit overlapping field complexity (@yaacovCR)
- #4903 fix: rename maxTokens to maxLexicalTokens (@yaacovCR)
- #4904 memoize pathToArray to reduce memory for multiple defers at the same path (@robrichard)
- #4908 fix: pass parser options through buildSchema (@yaacovCR)
- #4916 fix: bound shared fragment traversal in introspection validation (@yaacovCR)
- #4929 fix: initialize subscription validation variables (@yaacovCR)
- #4937 fix: skip disabled argument suggestions (@yaacovCR)
- #4946 refactor: track fragment validation work (@yaacovCR)
- #4949 refactor: account for subscription field collection (@yaacovCR)
- #4951 refactor: account for field return type comparisons (@yaacovCR)
- #4915 fix: align minified source location at chunk boundaries (@fallintoplace)
- #4977 fix: keep minified EOF carets after the final character (@yaacovCR)
- #4979 fix: reference ESM source maps from every emitted module (@yaacovCR)
- #4980 fix: identify ESM modules in source map metadata (@yaacovCR)
- #4983 fix: avoid inherited variable getters in nested literal values (@yaacovCR)
Docs 📝
4 PRs were merged
Polish 💅
69 PRs were merged
- #4836 refactor: add map keyed by set membership (@yaacovCR)
- #4843 polish(OverlappingFieldsCanMerge: add tests documenting existing behavior (@yaacovCR)
- #4855 refactor(validation): add overlapping fields rule context (@yaacovCR)
- #4856 refactor(validation): name the variable map type (@yaacovCR)
- #4857 polish(validation): skip empty field comparisons (@yaacovCR)
- #4851 test: accept non-null union implementing a nullable union (@jayphelps)
- #4845 polish(validateInputValue): cover invalid values in iterable input (@vrana055)
- #4844 polish(introspection): cover __Type.description on wrapping types (@vrana055)
- #4860 docs: fix incorrect API doc examples and copy-pasted descriptions (@Cito)
- #4867 refactor(incremental): extract maybeFinishGroup (@yaacovCR)
- #4871 refactor(validation): rename NodeAndDef to FieldDetails (@yaacovCR)
- #4872 refactor(validation): name field detail lists (@yaacovCR)
- #4873 refactor(validation): rename NodeAndDefCollection to GroupedFieldSet (@yaacovCR)
- #4874 refactor(validation): align field collection names with execution (@yaacovCR)
- #4875 refactor(validation): convert FieldDetails tuples to objects (@yaacovCR)
- #4876 refactor(validation): convert CollectFieldsResult tuples to objects (@yaacovCR)
- #4877 refactor(validation): convert conflict tuples to objects (@yaacovCR)
- #4878 refactor(validation): make unordered pair lookup independent of key order (@yaacovCR)
- #4880 refactor(validation): rename VariableMap to VariableScope (@yaacovCR)
- #4881 perf(validation): share field collections across scopes (@yaacovCR)
- #4882 refactor(validation): check stream overlap in findConflict (@yaacovCR)
- #4883 perf(validation): prepare field comparison data together (@yaacovCR)
- #4885 perf(validation): reuse scope maps across equivalent fragment spreads (@yaacovCR)
- #4886 refactor(validation): compare value structure directly (@yaacovCR)
- #4888 refactor(validation): compare var...
v16.15.0
v16.15.0 (2026-11-04)
New Feature 🚀
Backports:
- Fix performance issue with ESLint (#3586)
- refactor: add map keyed by set membership (#4836)
- perf: reuse fragment dependencies across operations (#4920)
- perf: reuse fragment variable usages (#4921)
- perf: share fragment collection across operations (#4925)
- refactor: track fragment validation work (#4946)
- refactor: simplify referenced fragment collection (#4948)
- perf: share subscription fragment lookups (#4927)
- refactor: extract visitSelectionSets (#4947)
- refactor: account for subscription field collection (#4949)
- perf: reuse identical field return types (#4940)
- perf: reuse field return type names (#4941)
- perf: reuse field return type descriptions (#4944)
- refactor: account for field return type comparisons (#4951)
- perf: skip selection sets with no fields to compare (#4960)
- perf: skip pair metadata for compatible leaf fields (#4964)
- perf: reuse introspection fragment checks (#4932)
- perf: reuse fragment checks from fields exceeding the introspection depth (#4971)
- perf: share source location lookups (#4936)
- perf: scan single source locations directly (#4958)
- refactor: stream printer output (#4952)
- feat: configure printer indentation depth (#4953)
- perf: flatten input-value printing (#4972)
- perf: avoid arrays for single-line printer text (#4973)
- perf: assemble printer output as a string (#4974)
- perf: skip empty printer work (#4975)
- perf: add a minimal AST reducer for printing (#4976)
- perf: index directive argument names (#4942)
- feat: Allow skipping suggestions (#4214)
- fix: skip disabled argument suggestions (#4937)
- fix(execute): handle defaultTypeResolver promise rejections (#4646)
- fix(mapAsyncIterable): always close source when mapped iterable is thrown (#4494)
- fix(valueFromAST): forward port #4652 (#4671)
- fix: avoid inherited variable getters in nested literal values (#4983)
- fix(changelog): ignore open associated PRs (#4723)
Bug Fix 🐞
- #4900 Backport OverlappingFieldsCanMerge changes (v16) (@yaacovCR)
- #4909 Backport maxLexicalTokens, maxComments, maxSourceLength parser options (v16) (@yaacovCR)
- #4917 fix: bound shared fragment traversal in introspection validation (v16) (@yaacovCR)
Docs 📝
Internal 🏠
Committers: 1
- Yaacov Rydzinski (@yaacovCR)
v15.11.0
v15.11.0 (2026-11-04)
New Feature 🚀
Backported PRs:
- Fix performance issue with ESLint (#3586)
- refactor: add map keyed by set membership (#4836)
- perf: reuse fragment dependencies across operations (#4920)
- perf: reuse fragment variable usages (#4921)
- perf: share fragment collection across operations (#4925)
- refactor: track fragment validation work (#4946)
- refactor: simplify referenced fragment collection (#4948)
- perf: reuse identical field return types (#4940)
- perf: reuse field return type names (#4941)
- perf: reuse field return type descriptions (#4944)
- refactor: account for field return type comparisons (#4951)
- perf: skip selection sets with no fields to compare (#4960)
- perf: skip pair metadata for compatible leaf fields (#4964)
- perf: reuse introspection fragment checks (#4932)
- perf: reuse fragment checks from fields exceeding the introspection depth (#4971)
- perf: share source location lookups (#4936)
- perf: scan single source locations directly (#4958)
- refactor: stream printer output (#4952)
- feat: configure printer indentation depth (#4953)
- perf: flatten input-value printing (#4972)
- perf: avoid arrays for single-line printer text (#4973)
- perf: assemble printer output as a string (#4974)
- perf: skip empty printer work (#4975)
- perf: add a minimal AST reducer for printing (#4976)
- perf: index directive argument names (#4942)
- feat: Allow skipping suggestions (#4214)
- fix: skip disabled argument suggestions (#4937)
- Catch unhandled exception in abstract resolution (#4392)
- fix(execute): handle defaultTypeResolver promise rejections (#4646)
- fix(valueFromAST): forward port #4652 (#4671)
- fix: avoid inherited variable getters in nested literal values (#4983)
- fix(changelog): ignore open associated PRs (#4723)
Bug Fix 🐞
- #4899 Backport OverlappingFieldsCanMerge changes (v15) (@yaacovCR)
- #4910 Backport maxLexicalTokens, maxComments, maxSourceLength parser options (v15) (@yaacovCR)
- #4918 fix: bound shared fragment traversal in introspection validation (v15) (@yaacovCR)
Committers: 1
- Yaacov Rydzinski (@yaacovCR)
v15.10.3
v17.0.2
v17.0.1
v17.0.0
v17.0.0 (2026-06-15)
New Feature 🚀
Bug Fix 🐞
- #4799 fix: raise request error on invalid fragment variables (@yaacovCR)
- #4800 fix: apply directives when SDL contains type definitions and extensions with directives (@yaacovCR)
- #4564 OneOf Inhabitability (@jbellenger)
- #4814 fix(KnownDirectivesRule): locations for input field arguments in extensions (@yaacovCR)
- #4726 feat(validation): reject directive definition cycles (@yaacovCR)
- #4815 Revert "feat(validation): reject directive definition cycles (#4726)" (@yaacovCR)
Docs 📝
11 PRs were merged
- #4790 docs: minor diagnostics doc comment improvements (@yaacovCR)
- #4791 fix: docs: polish diagnostics comments further (@yaacovCR)
- #4793 docs: further improve general execution and tracing docs (@yaacovCR)
- #4802 docs: correct extension field comments - v17 (@yaacovCR)
- #4805 docs: publish fixed extensions comments (@yaacovCR)
- #4807 docs: add prettier for jsdoc examples (@yaacovCR)
- #4435 Subscriptions docs suggestions (@Urigo)
- #4811 docs: fix a few indentations inside string literals (@yaacovCR)
- #4813 internal: docs update (@yaacovCR)
- #4820 docs: document
@experimental_disableErrorPropagation(@yaacovCR) - #4817 docs: post 17.rc-0 update (@yaacovCR)
Polish 💅
2 PRs were merged
Internal 🏠
6 PRs were merged
- #4795 chore: move website publishing from 16.x.x to 17.x.x (@yaacovCR)
- #4796 internal: fix broken npm/deno deployments (@yaacovCR)
- #4797 ci: update GitHub Actions versions (@yaacovCR)
- #4806 internal: update frontmatter (@yaacovCR)
- #4808 intenral: fix ci badge (@yaacovCR)
- #4810 internal: add prettier:examples to lint-staged (@yaacovCR)
Committers: 3
- James Bellenger(@jbellenger)
- Uri Goldshtein(@Urigo)
- Yaacov Rydzinski (@yaacovCR)
v16.14.2
v16.14.2 (2026-06-09)
Docs 📝
7 PRs were merged
- #4782 docs: update API (@yaacovCR)
- #4783 docs: website review (@yaacovCR)
- #4788 docs: add Node.js tracing channels guide (@logaretm)
- #4789 docs: overhaul index and update/add additional migration guides (@yaacovCR)
- #4792 docs: remove extra asterisks from single line jsdoc comments (@yaacovCR)
- #4794 docs: refresh website with broader execution/tracing update (@yaacovCR)
- #4801 docs: correct extension field comments - v16 (@yaacovCR)
Polish 💅
Committers: 2
v17.0.0-rc.0
v17.0.0-rc.0 (2026-06-02)
New Feature 🚀
Bug Fix 🐞
- #4761 fix: DeferStreamDirectiveOnRootField forbids fragments on abstract types (@robrichard)
- #4762 fix: DeferStreamDirectiveOnValidOperations fragment tracking (@robrichard)
- #4784 fix: do not copy over stack from error cause (@Malien)
Docs 📝
Committers: 4
- Abdelrahman Awad(@logaretm)
- Rob Richard(@robrichard)
- Yaacov Rydzinski (@yaacovCR)
- Yaroslav Petryk(@Malien)
v17.0.0-beta.2
v17.0.0-beta.2 (2026-06-02)
Breaking Change 💥
- #4751 build: strip private discriminator from package types (@yaacovCR)
- #4752 fix: discriminate between GraphQLNonNull and GraphQLList (@yaacovCR)
- #4770 refactor: extract ExecutionArgs types to separate file (@yaacovCR)
New Feature 🚀
Bug Fix 🐞
- #4739 chore(tests): add test for directive extensions without flag enabled (#4738) (@yaacovCR)
- #4743 api: export VariableValues (@yaacovCR)
- #4744 api: export ValidationOptions (@yaacovCR)
- #4745 api: export SchemaChange (@yaacovCR)
- #4746 api: export defer and stream validation rules (@yaacovCR)
- #4747 api: export legacy incremental execution functions and helpers (@yaacovCR)
- #4753 fix(build): development declaration stubs (@yaacovCR)
- #4773 fix: FragmentVariableValueSource.value can be non-constant (@yaacovCR)
- #4775 fix: remove unnecessary native promise coercion (@yaacovCR)