GraphQL.js

Frameworks & Libraries

The JavaScript reference implementation for GraphQL.

Latest v17.0.2 · by GraphQL FoundationWebsitegraphql/graphql-js

Release activity

Release activity — 10 releases across 9 days since May 6, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before May 6, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
Sunday1 release on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026
MondayNo releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 20262 releases on Jun 1, 2026No releases on Jun 8, 20261 release on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026
TuesdayNo releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 20261 release on Jun 2, 20261 release on Jun 9, 20261 release on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026
Wednesday1 release on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
Thursday1 release on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 20261 release on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026

10 releases since May 6, 2026, busiest day 2

Changelog

v17.0.2

Fixed 2
  • Detect default-value changes on input object fields
  • Fix context for schema argument mapper in mapSchemaConfig
v17.0.2 (2026-07-03)
Bug Fix 🐞
  • #4832 fix: detect default-value changes on input object fields (@spokodev)
Polish 💅
  • #4829 fix(mapSchemaConfig): fix context for schema argument mapper (@yaacovCR)
Committers: 2
View originalPermalink
How v17.0.2 went

v17.0.1

Fixed 1
  • emit asyncStart after promise settlement to match native tracePromise in diagnostics
v17.0.1 (2026-06-16)
Bug Fix 🐞
  • #4824 fix(diagnostics): emit asyncStart after promise settlement to match native tracePromise (@logaretm)
Internal 🏠
Committers: 2
View originalPermalink
How v17.0.1 went

v17.0.0

Added 1
  • Graduate directives on directives
Fixed 4
  • Raise request error on invalid fragment variables
  • Apply directives when SDL contains type definitions and extensions with directives
  • Fix OneOf inhabitability
  • Fix KnownDirectivesRule locations for input field arguments in extensions
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 📝
Polish 💅
Internal 🏠
Committers: 3
View originalPermalink
How v17.0.0 went

v16.14.2

v16.14.2 (2026-06-09)
Docs 📝
Polish 💅
  • #4787 docs: update documentation for v17 release candidate (@yaacovCR)
Committers: 2
View originalPermalink
How v16.14.2 went

v17.0.0-rc.0

Pre-release
Added 1
  • Implement tracing channels
Fixed 3
  • DeferStreamDirectiveOnRootField forbids fragments on abstract types
  • DeferStreamDirectiveOnValidOperations fragment tracking
  • Do not copy over stack from error cause
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
View originalPermalink
How v17.0.0-rc.0 went

v16.14.1

v16.14.1 (2026-06-02)
Docs 📝
Polish 💅
  • #4738 chore(tests): add test for directive extensions without flag enabled (@yaacovCR)
Internal 🏠
Committers: 2
View originalPermalink
How v16.14.1 went

v17.0.0-beta.2

Pre-release
Added 6
  • Adopt Error.cause in favor of originalError
  • Export VariableValues
  • Export ValidationOptions
  • Export SchemaChange
  • Export defer and stream validation rules
  • Export legacy incremental execution functions and helpers
Changed 2
  • Discriminate between GraphQLNonNull and GraphQLList
  • Extract ExecutionArgs types to separate file
Fixed 3
  • Development declaration stubs
  • FragmentVariableValueSource.value can be non-constant
  • Remove unnecessary native promise coercion
Removed 1
  • Strip private discriminator from package types
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 📝
  • #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 🏠
Committers: 2
View originalPermalink
How v17.0.0-beta.2 went

v17.0.0-beta.1

Pre-release
Added 1
  • Support Node v26
Changed 2
  • Replace perEventExecutor with mapSourceToResponseEvent in subscribe
  • Extract buildResolveInfo helper in execution
Fixed 2
  • Forward-port directives on directive definitions
  • Forward-port configuration of the ofType introspection depth
Removed 1
  • Drop Node 20 support
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 🐞
  • #4725 chore: forward-port directives on directive definitions (#4521) (@yaacovCR)
  • #4727 chore: forward-port configuration of the ofType introspection depth (#4317) (@yaacovCR)
Polish 💅
  • #4728 polish: group FRAGMENT_VARIABLE_DEFINITION with executable defs (@yaacovCR)
Internal 🏠
  • #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
View originalPermalink
How v17.0.0-beta.1 went

v17.0.0-beta.0

Pre-release
Added 4
  • Expose asyncWorkFinished execution hook
  • Expose partial result on abort errors
  • Export validateExecutionArgs helper
  • Add ValidatedSubscriptionArgs and validateSubscriptionArgs
Changed 2
  • Demote createSourceEventStream to helper taking ValidatedExecutionArgs
  • Rename executeQueryOrMutationOrSubscriptionEvent to executeRootSelectionSet
Fixed 13
  • Treat undefined as absent with respect to variables
  • Ignore undefined-valued unknown fields in input objects
  • Replace stopped promise with onStop handlers
  • Close stream iterator only on abnormal stop
  • Await async incremental cleanup
  • Do not close unnecessarily in withConcurrentAbruptClose
Removed 1
  • Use Object.create(null) over {} to avoid prototype issues
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 💅
  • #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 🏠
Committers: 5
View originalPermalink
How v17.0.0-beta.0 went

v16.14.0

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
View originalPermalink
How v16.14.0 went
View all

Discussion