Skip to content

chore(release): v17.1.0 - #4992

Merged
yaacovCR merged 1 commit into
graphql:17.x.xfrom
yaacovCR:release-v17
Nov 4, 2026
Merged

yaacovCR merged 1 commit into
graphql:17.x.xfrom
yaacovCR:release-v17

Conversation

@yaacovCR

@yaacovCR yaacovCR commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

v17.1.0 (2026-11-04)

New Feature 🚀

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

Internal 🏠

13 PRs were merged

Committers: 9

## v17.1.0 (2026-11-04)

#### New Feature 🚀
* [graphql#4852](graphql#4852) spec change: allow empty selection sets ([@martinbonnin](https://github.com/martinbonnin))
* [graphql#4905](graphql#4905) feat: add maxComments parser option ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4906](graphql#4906) feat: add maxSourceLength parser option ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4950](graphql#4950) feat: configure list type nesting in the parser ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4953](graphql#4953) feat: configure printer indentation depth ([@yaacovCR](https://github.com/yaacovCR))

#### Bug Fix 🐞
* [graphql#4837](graphql#4837) fix(VariablesInAllowedPositionRule): allow fragments with variables prior to operations ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4838](graphql#4838) fix(DeferStreamDirectiveOnRootFieldRule): handle fragment cycles ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4839](graphql#4839) fix(OverlappingFieldsCanMergeRule): require same variable definitions ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4853](graphql#4853) fix(OverlappingFieldsCanMerge): fix var scope for fragment comparison cache ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4841](graphql#4841) Skip deferred fragments in collectFields only when same directive is used ([@robrichard](https://github.com/robrichard))
* [graphql#4859](graphql#4859) test(incremental): document bugs in shared deferred work ([@duckki](https://github.com/duckki))
* [graphql#4868](graphql#4868) fix(incremental): prevent lost or delayed successful shared results ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4869](graphql#4869) fix(incremental): prevent error completions for unannounced fragments ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4865](graphql#4865) fix(validation): keep argument defaults inside fragments ([@SashaMIT](https://github.com/SashaMIT))
* [graphql#4879](graphql#4879) fix(validation): keep collected fields separate by parent type ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4895](graphql#4895) fix(validation): bound conflict descriptions ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4896](graphql#4896) fix(validation): bound nested conflict locations ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4898](graphql#4898) perf(validation): prepare fragment spreads only for comparisons ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4897](graphql#4897) feat(validation): limit overlapping field complexity ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4903](graphql#4903) fix: rename maxTokens to maxLexicalTokens ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4904](graphql#4904) memoize pathToArray to reduce memory for multiple defers at the same path ([@robrichard](https://github.com/robrichard))
* [graphql#4908](graphql#4908) fix: pass parser options through buildSchema ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4916](graphql#4916) fix: bound shared fragment traversal in introspection validation ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4929](graphql#4929) fix: initialize subscription validation variables ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4937](graphql#4937) fix: skip disabled argument suggestions ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4946](graphql#4946) refactor: track fragment validation work ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4949](graphql#4949) refactor: account for subscription field collection ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4951](graphql#4951) refactor: account for field return type comparisons ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4915](graphql#4915) fix: align minified source location at chunk boundaries ([@fallintoplace](https://github.com/fallintoplace))
* [graphql#4977](graphql#4977) fix: keep minified EOF carets after the final character ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4979](graphql#4979) fix: reference ESM source maps from every emitted module ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4980](graphql#4980) fix: identify ESM modules in source map metadata ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4983](graphql#4983) fix: avoid inherited variable getters in nested literal values ([@yaacovCR](https://github.com/yaacovCR))

#### Docs 📝
<details>
<summary> 4 PRs were merged </summary>

* [graphql#4986](graphql#4986) docs: refresh the v16 and v17 API references ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4987](graphql#4987) docs: render constructor examples in the API reference ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4988](graphql#4988) docs: generate API reference during website builds ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4989](graphql#4989) docs: list v17 first in the API sidebar ([@yaacovCR](https://github.com/yaacovCR))
</details>

#### Polish 💅
<details>
<summary> 69 PRs were merged </summary>

* [graphql#4836](graphql#4836) refactor: add map keyed by set membership ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4843](graphql#4843) polish(OverlappingFieldsCanMerge: add tests documenting existing behavior ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4855](graphql#4855) refactor(validation): add overlapping fields rule context ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4856](graphql#4856) refactor(validation): name the variable map type ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4857](graphql#4857) polish(validation): skip empty field comparisons ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4851](graphql#4851) test: accept non-null union implementing a nullable union ([@jayphelps](https://github.com/jayphelps))
* [graphql#4845](graphql#4845) polish(validateInputValue): cover invalid values in iterable input ([@vrana055](https://github.com/vrana055))
* [graphql#4844](graphql#4844) polish(introspection): cover __Type.description on wrapping types ([@vrana055](https://github.com/vrana055))
* [graphql#4860](graphql#4860) docs: fix incorrect API doc examples and copy-pasted descriptions ([@Cito](https://github.com/Cito))
* [graphql#4867](graphql#4867) refactor(incremental): extract maybeFinishGroup ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4871](graphql#4871) refactor(validation): rename NodeAndDef to FieldDetails ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4872](graphql#4872) refactor(validation): name field detail lists ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4873](graphql#4873) refactor(validation): rename NodeAndDefCollection to GroupedFieldSet ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4874](graphql#4874) refactor(validation): align field collection names with execution ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4875](graphql#4875) refactor(validation): convert FieldDetails tuples to objects ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4876](graphql#4876) refactor(validation): convert CollectFieldsResult tuples to objects ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4877](graphql#4877) refactor(validation): convert conflict tuples to objects ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4878](graphql#4878) refactor(validation): make unordered pair lookup independent of key order ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4880](graphql#4880) refactor(validation): rename VariableMap to VariableScope ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4881](graphql#4881) perf(validation): share field collections across scopes ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4882](graphql#4882) refactor(validation): check stream overlap in findConflict ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4883](graphql#4883) perf(validation): prepare field comparison data together ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4885](graphql#4885) perf(validation): reuse scope maps across equivalent fragment spreads ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4886](graphql#4886) refactor(validation): compare value structure directly ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4888](graphql#4888) refactor(validation): compare variable scope identities ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4889](graphql#4889) perf(validation): cache field-pair source comparisons ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4890](graphql#4890) perf(validation): cache source value preparation ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4891](graphql#4891) perf(validation): cache value scope dependencies ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4892](graphql#4892) perf(validation): cache source fragment spread preparation ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4893](graphql#4893) perf(validation): reuse matching response groups across scopes ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4894](graphql#4894) perf(validation): skip redundant inline selection-set checks ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4902](graphql#4902) perf: avoid repeated SetMap key construction ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4920](graphql#4920) perf: reuse fragment dependencies across operations ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4921](graphql#4921) perf: reuse fragment variable usages ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4925](graphql#4925) perf: share fragment collection across operations ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4926](graphql#4926) refactor: use context fragment lookups in directive validation ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4927](graphql#4927) perf: share subscription fragment lookups ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4931](graphql#4931) perf: reuse subscription directive paths ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4932](graphql#4932) perf: reuse introspection fragment checks ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4933](graphql#4933) perf: share completed directive checks ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4935](graphql#4935) test: cover source location lookups ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4936](graphql#4936) perf: share source location lookups ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4938](graphql#4938) perf: reuse required fragment arguments ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4939](graphql#4939) perf: remove an extra list item type check ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4940](graphql#4940) perf: reuse identical field return types ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4941](graphql#4941) perf: reuse field return type names ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4942](graphql#4942) perf: index directive argument names ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4943](graphql#4943) perf: index directive locations ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4944](graphql#4944) perf: reuse field return type descriptions ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4945](graphql#4945) perf: reuse supported AST kinds ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4947](graphql#4947) refactor: extract visitSelectionSets ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4948](graphql#4948) refactor: simplify referenced fragment collection ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4952](graphql#4952) refactor: stream printer output ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4956](graphql#4956) perf: skip unused argument lookup preparation ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4957](graphql#4957) perf: skip required argument preparation for argument-free fields ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4958](graphql#4958) perf: scan single source locations directly ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4959](graphql#4959) perf: store visitor edits in a flat array ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4960](graphql#4960) perf: skip selection sets with no fields to compare ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4961](graphql#4961) perf: allocate visitor edits only when needed ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4963](graphql#4963) perf: reuse the visitor array check ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4964](graphql#4964) perf: skip pair metadata for compatible leaf fields ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4965](graphql#4965) perf: prepare type name lookups only when needed ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4972](graphql#4972) perf: flatten input-value printing ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4973](graphql#4973) perf: avoid arrays for single-line printer text ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4974](graphql#4974) perf: assemble printer output as a string ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4975](graphql#4975) perf: skip empty printer work ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4976](graphql#4976) perf: add a minimal AST reducer for printing ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4971](graphql#4971) perf: reuse fragment checks from fields exceeding the introspection depth ([@Cito](https://github.com/Cito))
* [graphql#4982](graphql#4982) revert: remove maxListDepth from graphql#4950 for now ([@yaacovCR](https://github.com/yaacovCR))
</details>

#### Internal 🏠
<details>
<summary> 13 PRs were merged </summary>

* [graphql#4884](graphql#4884) ci: use a stable language-based CodeQL category ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4887](graphql#4887) ci: run CodeQL in a dedicated workflow ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4907](graphql#4907) test: execute JSDoc API examples with Node ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4912](graphql#4912) internal: robustify examples test runner ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4928](graphql#4928) ci: shard integration tests across eight jobs ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4954](graphql#4954) ci: retire Node.js 25 ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4955](graphql#4955) ci: test Node.js 27 prereleases ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4967](graphql#4967) fix: accept zero-byte benchmark memory samples ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4968](graphql#4968) fix: collect warmup garbage before benchmark memory samples ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4970](graphql#4970) benchmark: cover schema document printing ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4969](graphql#4969) fix: use cumulative allocation counters in memory benchmarks ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4978](graphql#4978) build: remove the obsolete development entry point ([@yaacovCR](https://github.com/yaacovCR))
* [graphql#4981](graphql#4981) internal: further improve example test runner ([@yaacovCR](https://github.com/yaacovCR))
</details>

#### Committers: 9
* Christoph Zwerschke([@Cito](https://github.com/Cito))
* Duckki Oe([@duckki](https://github.com/duckki))
* Jay Phelps([@jayphelps](https://github.com/jayphelps))
* Martin Bonnin([@martinbonnin](https://github.com/martinbonnin))
* Minh Vu([@fallintoplace](https://github.com/fallintoplace))
* Rob Richard([@robrichard](https://github.com/robrichard))
* Sash([@SashaMIT](https://github.com/SashaMIT))
* Vibhanshu Rana([@vrana055](https://github.com/vrana055))
* Yaacov Rydzinski ([@yaacovCR](https://github.com/yaacovCR))
@vercel

vercel Bot commented Nov 4, 2026

Copy link
Copy Markdown

@yaacovCR is attempting to deploy a commit to the The GraphQL Foundation Team on Vercel.

A member of the Team first needs to authorize it.

@yaacovCR
yaacovCR merged commit a58e1fb into graphql:17.x.x Nov 4, 2026
30 of 31 checks passed
@yaacovCR
yaacovCR deleted the release-v17 branch November 4, 2026 20:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant