Repository navigation
chore(release): v17.1.0 - #4992
Merged
Merged
Conversation
## 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))
|
@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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v17.1.0 (2026-11-04)
New Feature 🚀
Bug Fix 🐞
Docs 📝
4 PRs were merged
Polish 💅
69 PRs were merged
Internal 🏠
13 PRs were merged
Committers: 9