Skip to content

Releases: graphql/graphql-js

v17.0.0

15 Jun 17:11

Choose a tag to compare

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

Polish 💅

2 PRs were merged

Internal 🏠

6 PRs were merged

Committers: 3

v16.14.2

09 Jun 09:08

Choose a tag to compare

v16.14.2 (2026-06-09)

Docs 📝

7 PRs were merged

Polish 💅

  • #4787 docs: update documentation for v17 release candidate (@yaacovCR)

Committers: 2

v17.0.0-rc.0

02 Jun 11:20

Choose a tag to compare

v17.0.0-rc.0 Pre-release
Pre-release

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 📝

  • #4781 docs: improve deprecation information regarding originalError and cause (@yaacovCR)

Committers: 4

v17.0.0-beta.2

01 Jun 23:35

Choose a tag to compare

v17.0.0-beta.2 Pre-release
Pre-release

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 🚀

  • #4485 Adopt Error.cause in favor of originalError (@Malien)

Bug Fix 🐞

Docs 📝

3 PRs were merged
  • #4742 docs: add v17 API docs lint coverage (@yaacovCR)
  • #4756 docs: hide private internals schema.__validationErrors and inputValue._memoizedCoercedDefaultValue (@yaacovCR)
  • #4758 docs: fix inline examples, deprecation descriptions, type category (@yaacovCR)

Polish 💅

Internal 🏠

3 PRs were merged

Committers: 2

v16.14.1

01 Jun 23:41

Choose a tag to compare

v16.14.1 (2026-06-02)

Docs 📝

9 PRs were merged

Polish 💅

  • #4738 chore(tests): add test for directive extensions without flag enabled (@yaacovCR)

Internal 🏠

Committers: 2

v17.0.0-beta.1

10 May 20:24

Choose a tag to compare

v17.0.0-beta.1 Pre-release
Pre-release

v17.0.0-beta.1 (2026-05-10)

Breaking Change 💥

  • #4729 subscribe: replace perEventExecutor with mapSourceToResponseEvent (@yaacovCR)
  • #4730 chore(engines): drop Node 20 support (@yaacovCR)
  • #4731 refactor(execution): extract buildResolveInfo helper (@yaacovCR)

New Feature 🚀

Bug Fix 🐞

Polish 💅

  • #4728 polish: group FRAGMENT_VARIABLE_DEFINITION with executable defs (@yaacovCR)

Internal 🏠

3 PRs were merged
  • #4460 internal: use node experimental-strip-types instead of ts-node (@yaacovCR)
  • #4732 internal: use node test instead of mocha + c8 (@yaacovCR)
  • #4734 internal: add comment re: rewriteRelativeImportExtensions (@yaacovCR)

Committers: 1

v17.0.0-beta.0

07 May 13:23

Choose a tag to compare

v17.0.0-beta.0 Pre-release
Pre-release

v17.0.0-beta.0 (2026-05-07)

Breaking Change 💥

  • #4634 Use Object.create(null) over {} to avoid prototype issues (@benjie)
  • #4700 Demote createSourceEventStream to helper taking ValidatedExecutionArgs (@yaacovCR)
  • #4703 rename executeQueryOrMutationOrSubscriptionEvent to executeRootSelectionSet (@yaacovCR)
  • #4708 fix(variables): treat undefined as absent with respect to variables (@yaacovCR)
  • #4710 fix: ignore undefined-valued unknown fields in input objects (@yaacovCR)

New Feature 🚀

  • #4658 feat(execution): expose asyncWorkFinished execution hook (@yaacovCR)
  • #4674 feat(execution): expose partial result on abort errors (@yaacovCR)
  • #4701 export validateExecutionArgs helper (@yaacovCR)
  • #4702 feat: add ValidatedSubscriptionArgs and validateSubscriptionArgs (@yaacovCR)

Bug Fix 🐞

  • #4637 refactor(queue): replace stopped promise with onStop handlers (@yaacovCR)
  • #4641 refactor(incremental): close stream iterator only on abnormal stop (@yaacovCR)
  • #4642 fix(incremental): await async incremental cleanup (@yaacovCR)
  • #4644 fix(withConcurrentAbruptClose): do not close unnecessarily (@yaacovCR)
  • #4645 fix(cancellablePromise): handle rejection when cancelling already-aborted promise (@yaacovCR)
  • #4643 fix(execute): handle list promise rejections (@yaacovCR)
  • #4646 fix(execute): handle defaultTypeResolver promise rejections (@yaacovCR)
  • #4648 refactor(executor): separate finish/abort orchestration (@yaacovCR)
  • #4655 fix(execution): finish executors before publishing responses (@yaacovCR)
  • #4661 fix: bubbling sync errors need not become async (@yaacovCR)
  • #4663 fix(executor): let aborted async paths reach finish (@yaacovCR)
  • #4657 refactor(execution): track pending work (@yaacovCR)
  • #4664 fix(perf): hoist error creation (@yaacovCR)
  • #4665 execution: reduce parent executor retention in incremental callbacks (@yaacovCR)
  • #4671 fix(valueFromAST): forward port #4652 (@yaacovCR)
  • #4672 fix(execution): convert all promise-like results to promises (@yaacovCR)
  • #4518 Fix TypeInfo.getInputType() for custom scalar list literals. (@yuchenshi)
  • #4692 fix incremental label null validation (@jbellenger)
  • #4711 fix(coerceInputLiteral): null variable input object fields should override defaults (@yaacovCR)
  • #4712 fix: name fragment variables as such in execution errors (@yaacovCR)
  • #4714 fix: enhance runtime invalid default value error messages (@yaacovCR)
  • #4715 unify OneOf non-null and count error messages (@yaacovCR)
  • #4716 fix(OneOf): fail coercion when two fields are provided "pre-coercion-only" (@yaacovCR)
  • #4717 fix(valueFromAST): reject unknown input object fields (@yaacovCR)
  • #4718 fix(OneOf): count only known fields for one-of validation (@yaacovCR)
  • #4719 fix(OneOf): fail coercion for OneOf is the single field is invalidly provided by a default (@yaacovCR)

Polish 💅

19 PRs were merged
  • #4635 polish: remove a few superfluous awaits (@yaacovCR)
  • #4636 allow forwarding of cancellation reasons within computations/queues (@yaacovCR)
  • #4638 test(queue): cover async onStop cleanup (@yaacovCR)
  • #4639 refactor(computation): rename cancel to abort (@yaacovCR)
  • #4640 refactor(workqueue): propagate async computation abort cleanup (@yaacovCR)
  • #4647 refactor(executor): rename finished state to aborted (@yaacovCR)
  • #4649 refactor(cancellablePromise): extract withCancellation (@yaacovCR)
  • #4650 refactor(executor): replace internal abort signal with lightweight version (@yaacovCR)
  • #4656 refactor(execution): introduce shared execution context (@yaacovCR)
  • #4653 fix: avoid prototype-colliding names in execution values (@abishekgiri)
  • #4673 refactor(execution): separate response construction from finish checks (@yaacovCR)
  • #4675 polish(execution): remove obsolete abort async checks (@yaacovCR)
  • #4686 refactor(benchmark): extract shared mean stats helper (@yaacovCR)
  • #4687 polish(benchmark): handle theoretical stats errors (@yaacovCR)
  • #4693 polish: add expectToThrow test helper (@yaacovCR)
  • #4694 polish: add expectPromise.toReject helper (@yaacovCR)
  • #4695 polish: clean up stream tests (@yaacovCR)
  • #4696 polish: introduce spy test helper (@yaacovCR)
  • #4704 refactor: add executionMode/serially argument to executeRootSelectionSet (@yaacovCR)

Internal 🏠

17 PRs were merged
Read more

v16.14.0

06 May 12:31
57b385b

Choose a tag to compare

v16.14.0 (2026-05-03)

New Feature 🚀

  • #4317 Allow configuration of the ofType introspection depth (@Nols1000)
  • #4521 Add experimental support for directives on directive definitions (@BoD)

Bug Fix 🐞

Docs 📝

Committers: 4

v16.13.2

24 Mar 12:26
123e958

Choose a tag to compare

v16.13.2 (2026-03-24)

Docs 📝

Polish 💅

  • #4631 Use Object.create(null) over {} to avoid prototype issues - v16 (@benjie)

Internal 🏠

Committers: 2

v17.0.0-alpha.14

11 Mar 13:38
4399655

Choose a tag to compare

v17.0.0-alpha.14 Pre-release
Pre-release

v17.0.0-alpha.14 (2026-03-11)

First released published to jsr.io.

Internal 🏠

  • #4623 internal: satisfy stricter deno type/package checks (@yaacovCR)

Committers: 1