Releases: graphql/graphql-js
Releases · graphql/graphql-js
v17.0.0-alpha.11
v17.0.0-alpha.11 (2026-03-01)
First release with trusted publishing and provenance, see: https://docs.npmjs.com/trusted-publishers for additional information.
Internal 🏠
6 PRs were merged
- #4599 add changesets to 17.x.x alpha (@yaacovCR)
- #4600 pin node 25 to 25.6 (@yaacovCR)
- #4601 internal: switch from changesets to simpler release automation (@yaacovCR)
- #4603 internal: remove version/preversion scripts
(@yaacovCR) - #4604 fix(changelog): adjust end-ref to not skip last PR
(@yaacovCR) - #4605 lock down supported scenarios for gen-changelog
(@yaacovCR)
Committers: 1
- Yaacov Rydzinski (@yaacovCR)
v17.0.0-alpha.10
v17.0.0-alpha.10 (2026-02-24)
Breaking Change 💥
NOTE: This release introduced new/refined implementations of incremental delivery and execution cancellation. The prior implementations were reverted and the new implementations were re-implemented from scratch, see PRs below. Importantly, the newest cancellation implementation exposes the AbortSignal to resolvers via info.getAbortSignal() rather than info.abortSignal, a BREAKING CHANGE from the previous alpha. The newest incremental delivery implementation has only new features compared to the prior alpha (primarily sensitivity to back-pressure).
- #4447 chore: drop unsupported node versions (@yaacovCR)
- #4464 use
enableDevMode()or development condition instead of NODE_ENV (@yaacovCR) - #4537 Reference implementation of defer and stream spec (@yaacovCR)
- #4536 Allow cancellation via abortSignal (@yaacovCR)
- #4535 temporarily revert cancellation (@yaacovCR)
- #4534 temporarily revert incremental delivery (@yaacovCR)
- #4560 fix incremental types (@yaacovCR)
- #3385 fix type for first argument to isTypeOf (@ryym)
New Feature 🚀
- #4448 enable conditional exports (@yaacovCR)
- #4468 predicates: replace instanceof with symbol based brand check (@yaacovCR)
- #3044 Schema Coordinates (@leebyron)
- #4546 introduce legacy incremental executor (@yaacovCR)
- #4550 add bigint support (@yaacovCR)
- #4561 let GraphQLArgs inherit all parse/validate/execute options (@yaacovCR)
- #4562 add graphql "harness" abstraction along with async parse/validate support (@yaacovCR)
- #4565 frontport #4482: Implement changes for executable descriptions (@yaacovCR)
Bug Fix 🐞
- #4441 Ensure that 'schema' keyword kept when schema has description (@benjie)
- #4462 avoid re-visiting deferred fragment spreads (@yaacovCR)
- #4358 incremental: add new deferred fragments to the wrapped graphql result (@yaacovCR)
- #4469 perf: do not use undefined for empty error array (@yaacovCR)
- #4424 buildClientSchema: build enum type value maps lazily (@yaacovCR)
- #4481 Fix incorrect
FormattedCompletedResultfields and add aFormattedPendingResult(@jerelmiller) - #4495 chore: use latest npm lockfile metadata (@yaacovCR)
- #4494 fix(mapAsyncIterable): always close source when mapped iterable is thrown (@yaacovCR)
- #4496 refactor(execution): extract withCleanup from mapAsyncIterable (@yaacovCR)
- #4497 fix(withCleanup): remove extra tick (@yaacovCR)
- #4510 fix(Queue): calling stop should not drop pushed values (@yaacovCR)
- #4520 incremental: improve perf of OverlappingFieldsCanBeMerged (@yaacovCR)
- #4526 reduce ticks stemming from withCleanup (@yaacovCR)
- #4531 refactor: move errorPropagation to ValidatedExecutionArgs (@yaacovCR)
- #4533 add abrupt return handling for sync iterables (@yaacovCR)
- #4544 fix inner stream with async iterables (@yaacovCR)
- #4547 remove unnecessary Executor property (@yaacovCR)
- #4548 fix: memoize collectSubfields and getStreamUsage across Executors (@yaacovCR)
- #4554 use single phase of resolver abortSignal cancellation (@yaacovCR)
- #4559 restore FormattedExperimentalIncrementalExecutionResults (@yaacovCR)
- #4563 polish: improve GraphQL schema element config typing (@yaacovCR)
- #4567 frontport: incorrect validation errors when variable descriptions are used (#4517) (@yaacovCR)
- #4568 fix: treat dot as punctuator for schema coordinate parsing (@yaacovCR)
- #4569 export all schema coordinate types (@yaacovCR)
- #4572 add "as const" to schema change type "enum" (@yaacovCR)
- #4583 validation: align MaxIntrospectionDepthRule with v16 backport (@yaacovCR)
- #4596 chore(eslint): simplify ignore-pattern (@yaacovCR)
Docs 📝
3 PRs were merged
Polish 💅
35 PRs were merged
- #4454 integrationTests: pin bun/deno versions (@yaacovCR)
- #4459 upgrade dependencies (@yaacovCR)
- #4472 docs: update dual-build information within README (@yaacovCR)
- #4500 polish(withCleanup): condense one line (@yaacovCR)
- #4499 refactor(mapAsyncIterable): use withCleanup to simplify (@yaacovCR)
- #4498 refactor: extract Queue from IncrementalPublisher and IncrementalGraph (@yaacovCR)
- #4501 polish(Queue): further simplify algorithm (@yaacovCR)
- #4502 polish(IncrementalPublisher): introduce ensureId helper (@yaacovCR)
- #4503 polish(IncrementalPublisher): simplify early return handling (@yaacovCR)
- #4527 refactor(execution): add separate entrypoints file (@yaacovCR)
- #4528 refactor(execute): minor refactor (@yaacovCR)
- #4529 refactor: streamline variable name (@yaacovCR)
- #4532 withConcurrentAbruptClose should await handlers (@yaacovCR)
- #4538 rename execute.ts to Executor.ts file (@yaacovCR)
- #4539 rename
entrypoints.tstoexecute.ts([@yaacovCR](http...
16.13.0
v16.13.0 (2026-02-24)
New Feature 🚀
Bug Fix 🐞
- #4336 add deprecated note to assertValidExecutionArguments (@yaacovCR)
- #4517 fix(validation): incorrect validation errors when variable descriptions are used (@phryneas)
Internal 🏠
3 PRs were merged
Committers: 4
- Benjie(@benjie)
- Jovi De Croock(@JoviDeCroock)
- Lenz Weber-Tronic(@phryneas)
- Yaacov Rydzinski (@yaacovCR)
16.12.0
v16.12.0 (2025-11-01)
New Feature 🚀
- #4482 Implement changes for executable descriptions (@JoviDeCroock)
- #4493 Backport schema coordinates (@JoviDeCroock)
Bug Fix 🐞
- #4392 Catch unhandled exception in abstract resolution (@JoviDeCroock)
Docs 📝
28 PRs were merged
- #4374 docs: testing graphQL servers (@sarahxsanders)
- #4376 docs: type generation for graphql servers (@sarahxsanders)
- #4380 docs: add guides for custom scalars (@sarahxsanders)
- #4381 docs: anatomy of a resolver (@sarahxsanders)
- #4382 docs: understanding graphql errors (@sarahxsanders)
- #4383 docs: N+1 problem and DataLoader (@sarahxsanders)
- #4391 docs: cursor-based pagination guide (@sarahxsanders)
- #4393 docs: add page on abstract types (@sarahxsanders)
- #4394 docs: editorial on abstract types page (@benjie)
- #4395 docs: editorial for recent documentation updates (@benjie)
- #4396 docs: add page on authorization strategies (@sarahxsanders)
- #4398 docs: update "going to production" guide (@sarahxsanders)
- #4399 Update mutations-and-input-types.mdx (@roman-lakhnov)
- #4400 Remove CJS from docs (@JoviDeCroock)
- #4401 docs: add guide on directives (@sarahxsanders)
- #4402 docs: add guide for operation complexity controls (@sarahxsanders)
- #4405 docs: add guide on nullability (@sarahxsanders)
- #4406 docs: add guide on subscriptions (@sarahxsanders)
- #4411 docs: add guide on caching strategies (@sarahxsanders)
- #4414 docs: guide on scaling your API (@sarahxsanders)
- #4416 Editorial for #4405 (nullability) (@benjie)
- #4417 Indicate that field arguments should always be preferred over directives (@benjie)
- #4418 docs: trusted documents (@benjie)
- #4419 docs: cleanup and fixes (@sarahxsanders)
- #4436 Suggestions for federation links (@Urigo)
- #4444 Fix navigation (@JoviDeCroock)
- #4452 fix(docs/mutations-and-input-types.mdx): root being inside of SDL (@alesculek)
- #4473 docs: remove fourth permutation of the visit API (@janmeier)
Polish 💅
- #4453 Remove oneof validation from values of correct type (@JoviDeCroock)
Internal 🏠
3 PRs were merged
Committers: 9
- Aleš Culek(@alesculek)
- Benjie(@benjie)
- Jan Aagaard Meier(@janmeier)
- Jovi De Croock(@JoviDeCroock)
- Mark Larah(@magicmark)
- null(@roman-lakhnov)
- Sarah Sanders(@sarahxsanders)
- Uri Goldshtein(@Urigo)
- Yaacov Rydzinski (@yaacovCR)
v17.0.0-alpha.9
v17.0.0-alpha.9 (2025-06-11)
Breaking Change 💥
- #4342 Validate against
@streamon different instances of the same field (@robrichard) - #3974 Forbid
@skipand@includedirectives in subscription root selection (@benjie) - #3986 Reject deprecated fields when interface field is not deprecated (@benjie)
- #4354 Make
includeDeprecatednon-null (@martinbonnin) - #4425 feat: pass abortSignal to resolvers via GraphQLResolveInfo (@glasser)
New Feature 🚀
- #4348 Add support for @experimental_disableErrorPropagation (@martinbonnin)
Bug Fix 🐞
Polish 💅
Internal 🏠
5 PRs were merged
Committers: 6
- Benjie(@benjie)
- David Glasser(@glasser)
- Jovi De Croock(@JoviDeCroock)
- Martin Bonnin(@martinbonnin)
- Rob Richard(@robrichard)
- Yaacov Rydzinski (@yaacovCR)
16.11.0
v16.11.0 (2025-04-26)
New Feature 🚀
- #4363 Ensure we validate for using nullable variables in oneOf input fields (@JoviDeCroock)
- #4366 feat(execution): add max coercion errors option to execution context (@cristunaranjo)
Bug Fix 🐞
- #4367 fix(coerce-input-value): input object coercion rejects arrays (@cristunaranjo)
Docs 📝
11 PRs were merged
- #4310 First draft for upgrade guide to v17 (@JoviDeCroock)
- #4331 fix sidebar for documentation and
/api-v16(@dimaMachina) - #4335 Add cspell exception (@JoviDeCroock)
- #4340 Improve flow of documentation around GraphiQL (@benjie)
- #4343 typofix: removes extra parenthesis from getting started code snippet (@rabahalishah)
- #4351 fixed wrong variable name (@fto-dev)
- #4352 docs(getting-started): promises current links (@guspan-tanadi)
- #4368 Update docs for execution options (@JoviDeCroock)
- #4369 Correct some syntax (@JoviDeCroock)
- #4372 Refactor every code-first example to leverage resolve (@JoviDeCroock)
- #4373 docs: Update getting-started.mdx (@Shubhdeep12)
Polish 💅
- #4312 Increase print/visit performance (@JoviDeCroock)
Internal 🏠
4 PRs were merged
- #4327 Add redirect for /api (@JoviDeCroock)
- #4377 Chore: bump setup-node (@JoviDeCroock)
- #4378 Change to gqlConf 2025 (@JoviDeCroock)
- #4379 Add missing parenthesis (@benjie)
Committers: 8
- Benjie(@benjie)
- Cris Naranjo (@cristunaranjo)
- Dimitri POSTOLOV(@dimaMachina)
- Fatih Ozdemir(@fto-dev)
- Guspan Tanadi(@guspan-tanadi)
- Jovi De Croock(@JoviDeCroock)
- Rabah Ali Shah(@rabahalishah)
- Shubhdeep Chhabra(@Shubhdeep12)
v17.0.0-alpha.8
v17.0.0-alpha.8 (2025-01-14)
Breaking Change 💥
- #3814 RFC: Default value validation & coercion (@yaacovCR)
- #4288 introduce GraphQLField, GraphQLInputField, GraphQLArgument, and GraphQLEnumValue (@yaacovCR)
- #4296 ease upgrade path for programmatic default values (@yaacovCR)
- #4322 Make
@streaminitialCount NonNull (@robrichard)
New Feature 🚀
- #4261 feat: pass abortSignal to resolvers (@yaacovCR)
- #4267 cancel execution despite hanging async resolvers (@yaacovCR)
- #4263 stop resolvers after execution ends (@yaacovCR)
- #4275 Add safe schema change for descriptions changing (@JoviDeCroock)
- #4277 Detect directive argument changes (@JoviDeCroock)
- #4274 add cancellation support to async iterable iteration (@yaacovCR)
- #3601 Add KnownOperationTypes rule (@yaacovCR)
Bug Fix 🐞
- #4299 Make deprecated.reason non-nullable (@martinbonnin)
- #4313 type fix for ExperimentalIncrementalExecutionResults (@yaacovCR)
Polish 💅
13 PRs were merged
- #4260 adjust prefix for toError (@yaacovCR)
- #4265 use object for GraphQLWrappedResult instead of tuple (@yaacovCR)
- #4254 Remove typescript enums in favor of plain JS/TS solution (@JoviDeCroock)
- #4273 polish: refactor execution plan functions to match spec (@yaacovCR)
- #4282 rename PromiseCanceller to AbortSignalListener (@yaacovCR)
- #4294 polish: fix lexer state comment (@yaacovCR)
- #4270 refactor: treeshakable kind enum (@jasonkuhrt)
- #4297 introduces mapSchemaConfig utility function (@yaacovCR)
- #4306 polish: fix switched comments in GraphQLScalarTypeConfig (@hayes)
- #4308 move subscription
@defercheck out of collectFields (@yaacovCR) - #4309 use
operation.selectionSetas argument tocollectFields()instead ofoperation(@yaacovCR) - #4307 update validateInputValue to use renamed method (@yaacovCR)
- #4320 polish: skip recollecting a named fragment's selections even when deferred (@yaacovCR)
Internal 🏠
2 PRs were merged
Committers: 6
- Jason Kuhrt(@jasonkuhrt)
- Jovi De Croock(@JoviDeCroock)
- Martin Bonnin(@martinbonnin)
- Michael Hayes(@hayes)
- Rob Richard(@robrichard)
- Yaacov Rydzinski (@yaacovCR)
v15.10.1
v15.10.1 (2025-01-14)
Bug Fix 🐞
- #4326 Re-export GraphQLFormattedError as type (@enisdenjo)
Committers: 1
- Denis Badurina(@enisdenjo)
v15.10.0
v15.10.0 (2025-01-13)
New Feature 🚀
- #4324 Backport GraphQLError toJSON method to v15 (@enisdenjo)
Committers: 1
- Denis Badurina(@enisdenjo)
16.10.0
v16.10.0 (2024-12-15)
New Feature 🚀
- #4286 fix: properly type
extensionsin GraphQLFormattedError (@tpoisseau) - #4292 Expose tokenCount on the DocumentNode (@JoviDeCroock)
Bug Fix 🐞
- #4137 backport(v16): Require non-empty directive locations (#4100) (@benjie)
- #4168 fix(validation): catch OverlappingFieldsCanBeMergedRule violations with nested fragments (@sachindshinde)
- #4226 Backport introspection type fix (@JoviDeCroock)
- #4291 Address empty selection-set (@JoviDeCroock)
Docs 📝
10 PRs were merged
- #4240 Convert from docusaurus to nextra (@JoviDeCroock)
- #4248 Add content from graphql/graphql.github.io#1782 (@JoviDeCroock)
- #4249 Styling fixes (@JoviDeCroock)
- #4256 Various fixes to docs (@JoviDeCroock)
- #4279 Solve some low hanging fruit in the documentation (@JoviDeCroock)
- #4283 Add overview page and add stackblitz to tutorial (@JoviDeCroock)
- #4284 Provide people with tabs so they can use classes as well (@JoviDeCroock)
- #4289 Add note about defer/stream being v17 (@JoviDeCroock)
- #4290 Write about
@oneOfin the graphql-js documentation (@JoviDeCroock) - #4295 Split up in v16 API documentation (@JoviDeCroock)
Internal 🏠
4 PRs were merged
- #4138 Upgrade codecov action and pass token (@benjie)
- #4139 Fix codecov workflow (@benjie)
- #4157 Add GraphQLConf 2024 banner (@bignimbus)
- #4193 Upgrade deprecated actions (@JoviDeCroock)
Committers: 5
- Benjie(@benjie)
- Jeff Auriemma(@bignimbus)
- Jovi De Croock(@JoviDeCroock)
- Sachin D. Shinde(@sachindshinde)
- tpoisseau(@tpoisseau)