@@ -10,9 +10,9 @@ import { Callout } from 'nextra/components';
1010# What Changed in GraphQL.js v17
1111
1212<Callout type = " info" >
13- GraphQL.js v17 has a release candidate available for final testing and
14- feedback. Use this guide to prepare v16 projects for testing the
15- release-candidate line .
13+ GraphQL.js v17 is the current release line. Use this guide to move v16
14+ projects onto v17 and to review compatibility work before adopting optional
15+ v17 features .
1616</Callout >
1717
1818GraphQL.js v17 keeps the core programming model: build a schema, parse a
@@ -175,10 +175,10 @@ GraphQL.js runtime APIs.
175175
176176This guide is for projects that depend on GraphQL.js, including applications,
177177servers, libraries, and tools. It compares the latest v16 release line with the
178- current v17 release candidate , and focuses on differences you will see when
179- testing that RC from an up-to-date v16 project. If a change is already present
180- in both lines, including v17 work that also shipped in v16, it is not listed
181- here as v16-to-v17 migration work.
178+ current v17 release line , and focuses on differences you will see when moving
179+ from an up-to-date v16 project. If a change is already present in both lines,
180+ including v17 work that also shipped in v16, it is not listed here as
181+ v16-to-v17 migration work.
182182
183183Changes described below use these labels:
184184
@@ -721,6 +721,16 @@ are now `Boolean! = false`. The `includeDeprecated` argument on
721721should omit the argument or pass a Boolean value; queries that pass
722722` includeDeprecated: null ` to those fields are invalid in v17.
723723
724+ ** Behavioral tightening.** Input object cycle validation now checks whether an
725+ input object can be provided any finite value. This preserves the existing
726+ non-null input-object cycle checks and also rejects recursive OneOf input
727+ objects where every possible branch leads back into the same unbreakable input
728+ object cycle.
729+
730+ ** Behavioral tightening.** SDL directive validation now applies directive
731+ location rules consistently to field, argument, and input-field definitions
732+ inside type and input-object extensions.
733+
724734### Programmatic schema APIs
725735
726736** New stable API.** v17 exposes TypeScript schema element types and runtime
@@ -960,6 +970,11 @@ separated from behavior changes.
960970 directives and directive extensions are now parsed by default.
961971- Update built-in scalar tests for JavaScript ` bigint ` values if your host
962972 passes ` bigint ` values directly.
973+ - Fix input-object cycles that cannot produce a finite value, including
974+ recursive OneOf input objects with no scalar, enum, list, or nullable escape
975+ branch.
976+ - Audit directives on type extensions; v17 validates directive locations on
977+ extension fields, arguments, and input fields consistently with definitions.
963978
964979### Execution and subscriptions
965980
0 commit comments