Releases: graphql-java/graphql-java
25.0.beta-2
This is a beta release for the upcoming version 25.
A word of warning
While all features are tested and we consider them ready to be used, we don't guarantee that this is a stable version: this means there will be more breaking changes until we reach 25.0.
This version is intended for testing and providing feedback to the GraphQL Java team.
This 2nd beta release includes a few more commits than the 1st beta release, notably a nullability bugfix for DataLoader
What's Changed
- Bump com.graphql-java:java-dataloader from 5.0.0 to 5.0.1 by @dependabot in #4043
- This removes the FetchedValue wrapping by default by @bbakerman in #3924
- Improved access speed of isPossibleType by @bbakerman in #4040
- Improve Execution input nullability by @andimarek in #4046
- Removed more .streams() with our filterAndMap code by @bbakerman in #4044
Full Changelog: 25.0.beta-1...v25.0.beta-2
25.0.beta-1
This is a beta release for the upcoming version 25
.
A word of warning
While all features are tested and we consider them ready to be used, we don't guarantee that this is a stable version: this means there will be more breaking changes until we reach 25.0.
This version is intended for testing and providing feedback to the GraphQL Java team.
Changes
What's Changed
- Bump EnricoMi/publish-unit-test-result-action from 2.18.0 to 2.19.0 by @dependabot in #3906
- Add JSpecify nullability annotations to DataFetcherResult by @dondonz in #3891
- Clean up ReactiveSupport by @hantsy in #3908
- Remove unused import by @ngocnhan-tran1996 in #3905
- Bump com.tngtech.archunit:archunit-junit5 from 1.2.0 to 1.4.0 by @dependabot in #3907
- add dataloader performance test by @andimarek in #3913
- Fix and improve EngineRunning state by @andimarek in #3911
- move jmh tests into dedicated folder by @andimarek in #3916
- Revert "New spec validation: Subscriptions root field must not contain @Skip nor @include on root selection set" by @dondonz in #3917
- Bump org.junit.jupiter:junit-jupiter from 5.12.1 to 5.12.2 by @dependabot in #3915
- Bump com.google.code.gson:gson from 2.12.1 to 2.13.0 by @dependabot in #3914
- Bump io.projectreactor:reactor-core from 3.7.4 to 3.7.5 by @dependabot in #3923
- Large in memory query benchmark by @bbakerman in #3921
- Bad naming in runner by @bbakerman in #3928
- Bump com.google.code.gson:gson from 2.13.0 to 2.13.1 by @dependabot in #3937
- Bump com.fasterxml.jackson.core:jackson-databind from 2.18.3 to 2.19.0 by @dependabot in #3936
- avoid wrapping materialized fieldValueObject in a CompletableFuture by @samuelAndalon in #3943
- Test by @andimarek in #3946
- Test by @andimarek-atlassian in #3947
- reduce forks to 2 to make perf tests faster by @andimarek in #3948
- ResponseMapFactory #3857 by @dfa1 in #3894
- OSGI - Make org.jspecify.* imports optional by @schulm in #3949
- Specify nullness for some
graphql.schema.idl
classes by @mk868 in #3895 - fix case when a fragment is deferred and non deferred at the same time for overlapping fields by @andimarek in #3953
- Make JSpecify optional import more specific by @dondonz in #3959
- Retriveing singleton property fetchers will not create DataFetcherFactoryEnvironment objects by @bbakerman in #3942
- ExecutionStrategyParameters now has a direct transform without a Builder by @bbakerman in #3935
- ExecutionStepInfo now has a direct transform without a Builder by @bbakerman in #3934
- FpKit now longer uses streams for performance reasons by @bbakerman in #3932
- Implement toString/hashCode/equals for DataFetcherResult by @AlexandreCarlton in #3964
- add defer test case by @andimarek in #3967
- Add DataLoader 5.0.0 by @dondonz in #3958
- Introduce a filter and map imperative method to replace .stream() calls by @bbakerman in #3931
- Removing some of the Optional.map() and .stream() for performance reasons by @bbakerman in #3930
- Stop creating NonNullableFieldValidator every for every object or list field by @bbakerman in #3929
- Enable DataLoader chaining (nesting) by @andimarek in #3872
- Avoid rare TCK test failure by @andimarek in #3975
- Bump com.tngtech.archunit:archunit-junit5 from 1.4.0 to 1.4.1 by @dependabot in #3957
- A generalised configuration mechanism by @bbakerman in #3945
- update gradle wrapper validation by @andimarek in #3982
- Bump io.projectreactor:reactor-core from 3.7.5 to 3.7.6 by @dependabot in #3977
- deterministic SourceLocation serialization by @jbellenger in #3987
- make dataloader work inside defer blocks by @andimarek in #3980
- Bump EnricoMi/publish-unit-test-result-action from 2.19.0 to 2.20.0 by @dependabot in #3990
- Add ArchUnit rule to ban javax & JetBrains nullability annotations by @dondonz in #3985
- Query generator by @felipe-gdr in #3979
- upgrade antlr by @andimarek in #3997
- a bit more efficient load in case the strategy doesn't fit by @andimarek in #4001
- Bump org.apache.groovy:groovy-json from 4.0.26 to 4.0.27 by @dependabot in #3998
- Bump org.junit.jupiter:junit-jupiter from 5.12.2 to 5.13.0 by @dependabot in #3999
- Response factory as config by @bbakerman in #3950
- Bump org.apache.groovy:groovy from 4.0.26 to 4.0.27 by @dependabot in #4000
- minimize work done when chained dataloaders are disabled by @andimarek in #4003
- ensure DFEImpl graphql context is never null by @andimarek in #4004
- make DFE more nullable aware by @andimarek in #4005
- add method to parse field definition from Parser by @andimarek in #4006
- DataLoader dispatching for Subscriptions by @andimarek in #3988
- Add the new Sonatype URL by @dondonz in #4009
- Adding errorprone support and fix chained dataloader bug by @bbakerman in #4002
- Bump net.bytebuddy:byte-buddy from 1.17.5 to 1.17.6 by @dependabot in #4012
- Bump net.bytebuddy:byte-buddy-agent from 1.17.5 to 1.17.6 by @dependabot in #4013
- Bump io.projectreactor:reactor-core from 3.7.6 to 3.7.7 by @dependabot in #4014
- Bump com.fasterxml.jackson.core:jackson-databind from 2.19.0 to 2.19.1 by @dependabot in #4015
- Bump org.junit.jupiter:junit-jupiter from 5.13.0 to 5.13.1 by @dependabot in #4007
- Bump com.google.errorprone:error_prone_core from 2.37.0 to 2.39.0 by @dependabot in #4030
- Bump net.ltgt.errorprone from 4.2.0 to 4.3.0 by @dependabot in #4031
- Bump com.gradleup.shadow from 8.3.6 to 8.3.7 by @dependabot in #4029
- Bump org.jetbrains.kotlin.jvm from 2.1.21 to 2.2.0 by @dependabot in #4018
- Added support for Flow publishers coming back from the subscription field data fetcher by @bbakerman in #3910
- Bump org.junit.jupiter:junit-jupiter from 5.13.1 to 5.13.2 by @dependabot in #4032
- A few adjustments in the QueryGenerator util by @felipe-gdr in #4011
- Bump com.uber.nullaway:nullaway from 0.12.6 to 0.12.7 by @dependabot in #4019
- Add interface addition event in SchemaDiff by @mgadda in #3984
- Added Unit test cases for Pair.java by @surajdm123 in #4036
- Added Unit Test cases for EscapeUtil by @surajdm123 in #4035
- Added a read only copy of a type registry for performance reasons by @bbakerman in #4021
- A more memory efficient AstPrinter by @bbakerman in https://github.com/graphql-java/graphql-java/pul...
24.1
This is bugfix release for 24.
Main change is #3994: If you have defer enabled (an experimental feature) and use data loaders for mutations your requests would hang, because the data loaders are not dispatched correctly.
Additionally this release contains #3995.
Cheers
What's Changed
- bugfix: fix mutations data loading dispatching when defer is enabled by @andimarek in #3994
- Deterministic source location backport 24 by @andimarek in #3995
Full Changelog: v24.0...v24.1
24.0
24.0 is a breaking change
This release is an unexpected breaking change release. It was made to help propagate a fix in the DataLoader library
In DataLoader version 4.0.0 we introduced immutability into the DataLoaderOptions
class, which was a good thing.
However it left the old mutative setXXX
methods in place and made them immutable. This was a mistake. This leads to bugs at runtime for example
DataLoaderOptions options = DataLoaderOptions.newOptions();
if (maxBatchSize != BatchLoader.UNSET_BATCH_SIZE) {
options.setMaxBatchSize(maxBatchSize);
}
return options.setCacheMap(cache);
The above code would continue to compile but the setMaxBatchSize()
would never take affected at runtime with the immutable support.
So to help address this bug a DataLoader version 5.0.0 was released and it has removed the setXXX
methods and requires the Builder
methods to be used to ensure that code that relied on the old mutative methods now break at compile time and not at runtime.
In turn we have released this new version of graphql-java - we have designated it a breaking change because of this transitive DataLoader breaking change
We consider v23.x poisoned and we don't recommend you use it because of the latent bug above.
But the release notes of 23 are still relevant when you upgrade from 22: https://github.com/graphql-java/graphql-java/releases/tag/v23.0
Small performance fixes
There are also a set of small performance oriented fixes that have gone out in this release.
What's Changed
- 24.x Cherry pick JSpecify OSGI config by @dondonz in #3960
- 24.x Backport of avoid wrapping materialised value by @dondonz in #3962
- Upgrade to DataLoader 5.0.0 by @dondonz in #3961
- Cherry pick DataFetcherResult helpers by @dondonz in #3965
- Cherry pick PR 3942 To add singleton to factory method by @dondonz in #3968
- Cherry pick PR 3935 by @dondonz in #3969
- Cherry pick 3934 for execution step info builder changes by @dondonz in #3970
- Cherry pick 3932 to remove streams from FPKit by @dondonz in #3971
- Cherry pick 3931 imperative filters by @dondonz in #3972
- Cherry pick 3930 remove optional streams by @dondonz in #3973
- Cherry pick PR 3929 reduce nonnullablefieldvalidator allocations by @dondonz in #3974
Full Changelog: v23.1...v24.0
22.4
A very small release that backports an improvement to avoid wrapping materialized fieldValueObject
in a CompletableFuture
#3943
This change will shortly be released in the new 24.0 release. This is only a backport.
What's Changed
- avoid wrapping materialized fieldValueObject in a completable future by @samuelAndalon in #3944
Full Changelog: v22.3...v22.4
23.1
Do Not Use
Version 23.x is considered poisoned and we don't recommend you upgrade to it
See the release notes of v24 for more details on what this is the case.
Previous release notes
This reverts a bug in 23.0 introduced in #3871.
Please use 23.1, and not 23.0.
Update: we will shortly release 24.0, which replaces the 23 line of releases. Please do not use any v23 releases going forward.
23.0
Do Not Use
Version 23.x is considered poisoned and we don't recommend you upgrade to it
See the release notes of v24 for more details on what this is the case.
Previous release notes
Notice: there is a bug with https://github.com/graphql-java/graphql-java/pull/3871/files, a new bugfix release is about to be released. Use 23.1 instead, not 23.0
Thanks to everyone for contributing to this release, through pull requests, issues, and discussions!
This is a major release which contains breaking changes.
Key changes
-
Enable batching on Mutations #3737
-
Support for draft error handling directive
@experimental_disableErrorPropagation
#3772 -
DataFetchers can now return reactive-streams Publisher objects from them and they will be turned into a CompleteableFuture value. Note only a single value will be retrieved from the Publisher #3731
-
We changed from JetBrains nullability annotations to JSpecify annotations #3851. JSpecify is a new industry consortium effort, which has been adopted by Spring. See more in the documentation: https://jspecify.dev/docs/start-here/
-
A new experimental callback is available to track the execution state of GraphQL Java: it allows for being notified when GraphQL Java is running actively code vs waiting/finished. See https://github.com/graphql-java/graphql-java/blob/master/src/test/groovy/graphql/EngineRunningTest.groovy#L174 for how to use it
-
We have also released DataLoader 4.0.0 and made graphql-java dependent on it. See the release notes: https://github.com/graphql-java/java-dataloader/releases
-
@defer
directive is now included in the schema by default #3839
Performance improvements
-
Only call overlapping validation once during validation, which will significantly reduce validation time, with more savings for larger operations. We found ~150% improvement in benchmarks. #3835
-
Reducing object allocations and overhead from stream, thanks @kilink for contributing many improvements #3804 #3803 #3801 #3798 #3797 #3710
-
Reducing object allocations for
PropertyDataFetcher
andSchemaGeneratorHelper
#3755 #3754 -
Improvement on
DataFetchingSelectionSet.getImmediateFields()
, if descendant traversal is not required this saves considerable time. Thanks @timward60 #3855 -
Comparing performance improvements. We run performance benchmarks on all changes, and you can view these results inside the GitHub repo. You can then use this JMH visualisation tool to compare benchmarks from different commits, for example these before and after results from the DataFetcherSelectionSet optimisation: https://jmh.morethan.io/?sources=https://raw.githubusercontent.com/graphql-java/graphql-java/refs/heads/master/performance-results/2025-03-18T23%3A42%3A07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json,https://raw.githubusercontent.com/graphql-java/graphql-java/refs/heads/master/performance-results/2025-03-20T04%3A24%3A26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json
See all performance improvements on GitHub: https://github.com/graphql-java/graphql-java/issues?q=is%3Amerged%20label%3A%22performance%22%20milestone%3A%2223.0%20breaking%20changes%22%20
Breaking changes
-
Strict runtime wiring redefinition checks now on by default. We now have stricter runtime wiring redefinition checks by default to catch invalid cases. For example, a field that already had a DataFetcher registered must not have a second DataFetcher registered. This can be toggled off. #3824
-
Removed an unused protected method in ExecutionStrategy. #3881
-
A small breaking change to
AstPrinter
to enable re-use of StringBuilders #3853 -
Improvement in a few directive and applied directive builders to address a bug where all elements were cleared. #3825
-
Breaking change for a new specification requirement, to prevent
@include
and@skip
directives on subscription root fields #3871
See all breaking changes on GitHub: https://github.com/graphql-java/graphql-java/issues?q=is%3Amerged%20label%3A%22breaking%20change%22%20milestone%3A%2223.0%20breaking%20changes%22
Security
We have become a CVE Numbering Authority (CNA) for GraphQL Java and related projects. For more information, see our Security page https://www.graphql-java.com/security.
What's Changed
- Bump net.bytebuddy:byte-buddy from 1.15.1 to 1.15.5 by @dependabot in #3726
- Bump org.jetbrains:annotations from 24.1.0 to 26.0.1 by @dependabot in #3722
- Bump org.junit.jupiter:junit-jupiter from 5.11.0 to 5.11.3 by @dependabot in #3727
- Bump io.projectreactor:reactor-core from 3.6.9 to 3.6.11 by @dependabot in #3728
- Removed empty file ExecuteObjectInstrumentationContextAdapter by @bbakerman in #3732
- Bump net.bytebuddy:byte-buddy-agent from 1.15.1 to 1.15.7 by @dependabot in #3734
- Bump net.bytebuddy:byte-buddy from 1.15.5 to 1.15.7 by @dependabot in #3735
- Bump com.fasterxml.jackson.core:jackson-databind from 2.17.2 to 2.18.0 by @dependabot in #3733
- Bump google-github-actions/auth from 2.1.5 to 2.1.6 by @dependabot in #3718
- Bump net.bytebuddy:byte-buddy from 1.15.7 to 1.15.10 by @dependabot in #3743
- Bump com.fasterxml.jackson.core:jackson-databind from 2.18.0 to 2.18.1 by @dependabot in #3742
- Bump net.bytebuddy:byte-buddy-agent from 1.15.7 to 1.15.10 by @dependabot in #3741
- Bump google-github-actions/auth from 2.1.6 to 2.1.7 by @dependabot in #3740
- Bump org.eclipse.jetty:jetty-server from 11.0.22 to 11.0.24 by @dependabot in #3705
- Avoid unnecessary String allocations in AstPrinter by @kilink in #3710
- Added some more tests around providing default values by @bbakerman in #3709
- Remove SDLExtensionDefinition from InterfaceTypeDefinition by @gnawf in #3739
- Bump org.codehaus.groovy:groovy from 3.0.22 to 3.0.23 by @dependabot in #3745
- initial tests for regular performance testing by @andimarek in #3746
- Implement equals/hashCode for GraphqlErrorImpl by @AlexandreCarlton in #3720
- Bump io.projectreactor:reactor-core from 3.6.11 to 3.7.0 by @dependabot in #3748
- Add test result comment bot by @dondonz in #3749
- SchemaGeneratorHelper that does NOT put in an entry for defaulted values by @bbakerman in #3755
- Singleton property data fetcher by @bbakerman in #3754
- Filter out negative line and column error locations in toSpecification by @dondonz in #3753
- Enable batching on Mutations by @bbakerman in #3737
- Added support for reactive Publishers to be returned from data fetchers by @bbakerman in #3731
- Bump biz.aQute.bnd.builder from 6.4.0 to 7.1.0 by @dependabot in #3762
- Revert "Bump biz.aQute.bnd.builder from 6.4.0 to 7.1.0" by @bbakerman in #3763
- Bump com.fasterxml.jackson.core:jackson-databind from 2.18.1 to 2.18.2 by @dependabot in #3761
- Update SchemaDirectiveWiringEnvironment.java by @rafaeldcfarias in #3764
- ResultPath: Check object type before casting to int by @alex-cova in #3765
- Make deprecated reason non-null by @dondonz in #3759
- Deprecation time by @dondonz in #3768
- Security updates by @dondonz in #3767
- Adding hashcode and equals for defer & stream payloads by @dondonz in #3769
- Now t...
22.3
This is a bugfix release focusing on the @defer
directive implementation. There are no breaking changes in this release.
Thanks to the community for continuing to report issues and build improvements, which helps make graphql-java better! Kudos to @felipe-gdr and @jbellenger for contributing @defer
improvements in this release.
Key Changes
What's Changed
- Bump google-github-actions/auth from 2.1.3 to 2.1.4 by @dependabot in #3684
- transformable IncrementalExecutionResult by @jbellenger in #3693
- Defer dataloader integration by @felipe-gdr in #3639
- Bump net.bytebuddy:byte-buddy from 1.14.18 to 1.15.1 by @dependabot in #3699
- Bump google-github-actions/auth from 2.1.4 to 2.1.5 by @dependabot in #3695
- Bump net.bytebuddy:byte-buddy-agent from 1.14.18 to 1.15.1 by @dependabot in #3700
- Bump io.projectreactor:reactor-core from 3.6.8 to 3.6.9 by @dependabot in #3689
- Bump org.junit.jupiter:junit-jupiter from 5.10.3 to 5.11.0 by @dependabot in #3688
Full Changelog: v22.2...v22.3
22.2
This is a bugfix release. There are no breaking changes in this release.
Thanks to everyone in the community for reporting issues and contributing bugfixes for this release! And happy birthday to GraphQL Java, who recently turned 9!
Key changes:
- Bugfix for DataLoader dispatching which caused subscriptions to hang #3673. First reported to Spring for GraphQL spring-projects/spring-graphql#1019
- Improved
@oneOf
validation to run sooner in the validation phase #3577 #3580 - MultiSourceReader bugfix to handle different new line behaviour in Java 16+, thanks @gummybug #3670
What's Changed
- Bump net.bytebuddy:byte-buddy from 1.14.15 to 1.14.16 by @dependabot in #3606
- Bump net.bytebuddy:byte-buddy-agent from 1.14.15 to 1.14.16 by @dependabot in #3604
- Bump org.assertj:assertj-core from 3.25.3 to 3.26.0 by @dependabot in #3605
- Better javadoc on beginFieldFetching by @bbakerman in #3610
- nested nullable list validation bugfix by @jbellenger in #3599
- Adding missed properties on IncrementalExecutionResultImpl.Builder.from by @Juliano-Prado in #3593
- This provides validation on @OneOf input types during validation phase by @bbakerman in #3577
- Bump net.bytebuddy:byte-buddy from 1.14.16 to 1.14.17 by @dependabot in #3612
- Bump net.bytebuddy:byte-buddy-agent from 1.14.16 to 1.14.17 by @dependabot in #3613
- This will validate @OneOf variable values when the variables are coerced by @bbakerman in #3580
- Fix stale bot cache problem by @dondonz in #3615
- Add option to redact token details from parser error messages by @dondonz in #3618
- Make FetchedValue a public constructor by @bbakerman in #3624
- AstPrinter: Empty types should not include braces
{}
by @tinnou in #3619 - Add toString() implementations for RawVariables and CoercedVariables classes by @oliverlockwood in #3629
- Small tweak allowed on Java 9 and later by @bbakerman in #3635
- Subscription results keep in upstream order by @bbakerman in #3574
- Start draining deferred results on subscription by @bbakerman in #3634
- Fix builder return type and expose generic toSpecification by @gnawf in #3642
- Bump io.projectreactor:reactor-core from 3.6.5 to 3.6.7 by @dependabot in #3643
- Only use JetBrains nullability annotations by @dondonz in #3644
- Bump org.junit.jupiter:junit-jupiter from 5.10.2 to 5.10.3 by @dependabot in #3653
- Bump org.codehaus.groovy:groovy from 3.0.21 to 3.0.22 by @dependabot in #3654
- This introduces a Traversal Options to allow skipping the coercing of field arguments by @bbakerman in #3651
- produce better exception for diffing bug by @andimarek in #3655
- Add missing NamedNode interface to OperationDefinition by @dondonz in #3646
- Fix bug with error handling in the defer execution code by @felipe-gdr in #3640
- Bump org.eclipse.jetty:jetty-server from 11.0.21 to 11.0.22 by @dependabot in #3659
- Bump com.fasterxml.jackson.core:jackson-databind from 2.17.1 to 2.17.2 by @dependabot in #3660
- Bump io.projectreactor:reactor-core from 3.6.7 to 3.6.8 by @dependabot in #3666
- Bump net.bytebuddy:byte-buddy from 1.14.17 to 1.14.18 by @dependabot in #3664
- Bump org.assertj:assertj-core from 3.26.0 to 3.26.3 by @dependabot in #3665
- Bump net.bytebuddy:byte-buddy-agent from 1.14.17 to 1.14.18 by @dependabot in #3667
- Fix MultiSourceReader compatibility with Java 16+ by @gummybug in #3670
- Use static function to initialize a flag in MultiSourceReader by @gummybug in #3671
- upgrade gradle to 8.9 by @andimarek in #3672
- 3662 - fixes dataloader dispatching during subscriptions by @bbakerman in #3673
- upgrade gradle wrapper by @andimarek in #3675
- Add missing directive definitions by @dondonz in #3656
- schema diffing improvements by @andimarek in #3676
New Contributors
- @oliverlockwood made their first contribution in #3629
- @gummybug made their first contribution in #3670
Full Changelog: v22.1...v22.2
22.1
This is a bugfix release. There are no breaking changes in this release, however if you use Kotlin, please note some nullability changes were made with this release.
Key changes include:
- Fix to add field fetching method #3571
- Add validation rule for
@deprecated
on required arguments and input object fields #3591 - Nullability changes for DataFetchingEnvironment #3582. If you use Kotlin, this may be considered a breaking change for you. See discussion: #3630
Thanks to everyone who contributed to this release!
What's Changed
- Update readme badge by @dondonz in #3568
- Added a getBoolean onto GraphQLContext.java by @bbakerman in #3578
- getBoolean returns a boolean not a Boolean by @bbakerman in #3581
- Bump org.testng:testng from 7.10.1 to 7.10.2 by @dependabot in #3583
- Bump net.bytebuddy:byte-buddy from 1.14.13 to 1.14.14 by @dependabot in #3584
- Bump net.bytebuddy:byte-buddy-agent from 1.14.13 to 1.14.14 by @dependabot in #3585
- Bump com.fasterxml.jackson.core:jackson-databind from 2.17.0 to 2.17.1 by @dependabot in #3587
- Always include incremental props even if null by @gnawf in #3570
- Bump net.bytebuddy:byte-buddy-agent from 1.14.14 to 1.14.15 by @dependabot in #3595
- Bump net.bytebuddy:byte-buddy from 1.14.14 to 1.14.15 by @dependabot in #3596
- Ready: Add @deprecated validation for input object fields, field arguments, directive arguments by @dondonz in #3591
- Added field fetching method for Expedia by @bbakerman in #3571
- Update GitHub actions ahead of release by @dondonz in #3600
- Bump google-github-actions/auth from 2.1.2 to 2.1.3 by @dependabot in #3603
- Bump org.eclipse.jetty:jetty-server from 11.0.20 to 11.0.21 by @dependabot in #3602
- Bump com.google.code.gson:gson from 2.10.1 to 2.11.0 by @dependabot in #3601
- Add nullability annotations in DataFetchingEnvironment & sub-classes by @Salzian in #3582
- Now does not overwrite a types default data fetcher unless its nonnull by @bbakerman in #3579
- Add extend schema (AST print) to SchemaPrinter by @dondonz in #3471
New Contributors
Full Changelog: v22.0...v22.1