[!WARNING]
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
apollographql/apollo-kotlin (com.apollographql.apollo3)
### [`v4.0.0-beta.6`](https://togithub.com/apollographql/apollo-kotlin/blob/HEAD/CHANGELOG.md#Version-400-beta6)
*2024-04-23*
#### SQL cache performance improvements
If you're using a chained memory + SQL cache, [#5840](https://togithub.com/apollographql/apollo-kotlin/issues/5840) makes sure cache writes are wrapped in a transaction, making them much faster.
#### Apollo Compiler Plugins
`Plugin` is renamed to `ApolloCompilerPlugin`. There is a new `documentTransform` API as well as other fixes. More details in the [compiler plugins documentation](https://www.apollographql.com/docs/kotlin/v4/advanced/compiler-plugins).
#### Experimental WebSockets
A new `.websocket` package is available that makes it easier to retry WebSockets and handle errors. More details and migration guide in the [experimental websockets documentation](https://www.apollographql.com/docs/kotlin/v4/advanced/experimental-websockets).
#### ApolloIdlingResource is deprecated
We recommend using reactive patterns to test your UI instead. See [this article about ways to do so](https://medium.com/androiddevelopers/alternatives-to-idling-resources-in-compose-tests-8ae71f9fc473).
#### Removed androidx.startup dependency
androidx.startup was introduced in beta.5 but is problematic for unit tests and other cases. beta.6 removes that dependency. More details in the [network connectivity documentation](https://www.apollographql.com/docs/kotlin/v4/advanced/network-connectivity).
#### WasmJS support for apollo-adapter
You can see Wasm in action at https://wasm.confetti-app.dev/
Many thanks to [@joreilly](https://togithub.com/joreilly), [@ychescale9](https://togithub.com/ychescale9) and [@japhib](https://togithub.com/japhib) for their contributions to this release 💙!
#### 👷 All changes
- \[normalized-cache]: use a single SQL transaction when using MemoryCache chaining ([#5840](https://togithub.com/apollographql/apollo-kotlin/issues/5840))
- \[compiler] expose apollo-ast as an api dependency ([#5838](https://togithub.com/apollographql/apollo-kotlin/issues/5838))
- \[compiler] Rename `Plugin` to `ApolloCompilerPlugin` and add error message for bad configurations ([#5821](https://togithub.com/apollographql/apollo-kotlin/issues/5821))
- \[IJ Plugin] Fix pulling file from device not working on AS Koala ([#5822](https://togithub.com/apollographql/apollo-kotlin/issues/5822))
- \[compiler] Add `@ApolloEnumConstructor` and make enum as sealed class Unknown constructor opt-in ([#5813](https://togithub.com/apollographql/apollo-kotlin/issues/5813))
- \[runtime] Move ApolloParseException to ApolloNetworkException ([#5816](https://togithub.com/apollographql/apollo-kotlin/issues/5816))
- \[normalized-cache] Let isFromCache be about the ApolloResponse ([#5805](https://togithub.com/apollographql/apollo-kotlin/issues/5805))
- \[compiler] Add DocumentTransform API ([#5809](https://togithub.com/apollographql/apollo-kotlin/issues/5809))
- \[idling-resource] Deprecate ApolloIdlingResource ([#5817](https://togithub.com/apollographql/apollo-kotlin/issues/5817), [#5764](https://togithub.com/apollographql/apollo-kotlin/issues/5764))
- \[runtime] Share the default OkHttpBuilder ([#5811](https://togithub.com/apollographql/apollo-kotlin/issues/5811))
- \[runtime] \[BREAKING] change `isOnline` to a suspend fun
- \[adapters] Support Kotlin/Wasm for apollo-adapters ([#5803](https://togithub.com/apollographql/apollo-kotlin/issues/5803))
- \[all] Bump Kotlin to 2.0.0-RC1 ([#5802](https://togithub.com/apollographql/apollo-kotlin/issues/5802))
- \[Codegen] Add CompiledArgumentDefinition ([#5797](https://togithub.com/apollographql/apollo-kotlin/issues/5797), [#5837](https://togithub.com/apollographql/apollo-kotlin/issues/5837))
- \[runtime] Merge experimental WebSocketNetworkTransport in apollo-runtime ([#5790](https://togithub.com/apollographql/apollo-kotlin/issues/5790))
- \[normalized-cache] Cache pagination: add FieldNameGenerator and EmbeddedFieldsProvider ([#5772](https://togithub.com/apollographql/apollo-kotlin/issues/5772))
- \[runtime] Support configuring `ApolloClient` with lazily initialized `Call.Factory`. ([#5784](https://togithub.com/apollographql/apollo-kotlin/issues/5784))
- \[runtime] fix ApolloClient.Builder.okHttpClient() returns null instead of this ([#5778](https://togithub.com/apollographql/apollo-kotlin/issues/5778))
- \[normalized-cache] Fix variable coercion in lists. Absent variables are coerced to null ([#5773](https://togithub.com/apollographql/apollo-kotlin/issues/5773))
- \[IJ Plugin] Fix an NPE ([#5770](https://togithub.com/apollographql/apollo-kotlin/issues/5770))
- \[runtime] Simplify ApolloCall ([#5765](https://togithub.com/apollographql/apollo-kotlin/issues/5765))
- \[runtime] remove `androidx.startup` dependency ([#5761](https://togithub.com/apollographql/apollo-kotlin/issues/5761), [#5720](https://togithub.com/apollographql/apollo-kotlin/issues/5720))
- \[compiler] Bump kotlin_labs definitions to v0.3 ([#5762](https://togithub.com/apollographql/apollo-kotlin/issues/5762))
- \[Pagination] Support nodes in Connection types ([#5754](https://togithub.com/apollographql/apollo-kotlin/issues/5754))
- \[compiler] Directive validation is now enforced by default ([#5758](https://togithub.com/apollographql/apollo-kotlin/issues/5758))
- \[cache] Make ApolloStore.publish() suspend ([#5755](https://togithub.com/apollographql/apollo-kotlin/issues/5755))
- \[runtime] Change the dispatcher earlier in the chain ([#4319](https://togithub.com/apollographql/apollo-kotlin/issues/4319))
- \[IJ Plugin] Add an advanced setting to include generated code references in GraphQL "Go To Declaration" ([#5743](https://togithub.com/apollographql/apollo-kotlin/issues/5743))
- \[IJ Plugin] Fix presentation of Kotlin elements when navigating to them from GraphQL ([#5739](https://togithub.com/apollographql/apollo-kotlin/issues/5739))
- \[IJ Plugin] Consider all Gradle projects recursively ([#5734](https://togithub.com/apollographql/apollo-kotlin/issues/5734))
- \[runtime] Deprecate ApolloClient.Builder.addInterceptors() ([#5733](https://togithub.com/apollographql/apollo-kotlin/issues/5733))
- \[all] use jdk-release ([#5731](https://togithub.com/apollographql/apollo-kotlin/issues/5731))
- \[http-cache] Ignore IOException when calling ApolloHttpCache.remove ([#5729](https://togithub.com/apollographql/apollo-kotlin/issues/5729))
- \[IJ plugin] Bump platformVersion and pluginSinceBuild from 232 to 233 ([#5726](https://togithub.com/apollographql/apollo-kotlin/issues/5726))
- \[runtime] add ApolloClient.failFastIfOffline ([#5725](https://togithub.com/apollographql/apollo-kotlin/issues/5725))
- \[all] Introduce "filesystem" sourceSet and use okio 3.9.0 ([#5719](https://togithub.com/apollographql/apollo-kotlin/issues/5719))
- \[runtime] Do not use Ktor in Js HttpEngine, use fetch directly instead ([#5702](https://togithub.com/apollographql/apollo-kotlin/issues/5702))
### [`v4.0.0-beta.5`](https://togithub.com/apollographql/apollo-kotlin/blob/HEAD/CHANGELOG.md#Version-400-beta5)
*2024-03-12*
Main changes:
- **Apollo compiler plugins**: The GraphQL compiler now has APIs that you can use to customize the generated code. This can be used for changing visibility of some symbols, renaming them or more generally customizing the output for any advanced use cases. Moving forward, Apollo compiler plugins are the preferred way to customize operation IDs as well as package names and both `PackageNameGenerator` and `OperationOutputGenerator` are deprecated. See the [documentation page about Apollo compiler plugins](https://www.apollographql.com/docs/kotlin/v4/advanced/compiler-plugins) for more details.
- **Reduced lock contention in apollo-normalized-cache-incubating**: the incubating normalized cache now uses lock-free memory structures inspired by guava and [MobileNativeFoundation/Store](https://togithub.com/MobileNativeFoundation/Store/). We have seen improvements by up to 20% in some scenarios. Please share your numbers if you notice any positive (or negative) change.
- **Nullability directives**: The version of the supported nullability directives was bumped from 0.1 to 0.3 (See [apollographql/specs#42](https://togithub.com/apollographql/specs/pull/42) and [apollographql/specs#48](https://togithub.com/apollographql/specs/pull/48)). If you are using `@semanticNonNull` or `@catch` you should bump your `@link` directives to use `0.3`. See the [nullability documentation page](https://www.apollographql.com/docs/kotlin/v4/advanced/nullability) for more details.
- **New snapshot repository for the IntelliJ/Android Studio plugin**: The repository to use for the weekly snapshots has changed. You can now use `https://go.apollo.dev/ij-plugin-snapshots` to get the latest weekly snapshots. ([#5600](https://togithub.com/apollographql/apollo-kotlin/pull/5600))
- **Multi-version KDoc**: The [published KDoc](https://www.apollographql.com/docs/kotlin/kdoc/index.html) now includes both v3 and v4 versions.
Many thanks to [@ribafish](https://togithub.com/ribafish), [@molundb](https://togithub.com/molundb), [@mboyd1993](https://togithub.com/mboyd1993), [@rohandhruva](https://togithub.com/rohandhruva) and [@baconz](https://togithub.com/baconz) for their help in this release 💙!
#### 👷 All changes
- \[mockserver] Add MockServer.enqueueError() and MockServer.assertNoRequest() ([#5694](https://togithub.com/apollographql/apollo-kotlin/pull/5694))
- \[runtime] Implement NetworkMonitor for apple platforms ([#5691](https://togithub.com/apollographql/apollo-kotlin/pull/5691))
- \[runtime] Add `NetworkMonitor` ([#5690](https://togithub.com/apollographql/apollo-kotlin/pull/5690))
- \[runtime] Add `ApolloClient.retryOnError(Boolean)` ([#5685](https://togithub.com/apollographql/apollo-kotlin/pull/5685))
- \[websockets-network-transport-incubating] Publish apollo-websocket-network-transport-incubating ([#5693](https://togithub.com/apollographql/apollo-kotlin/pull/5693))
- \[normalized-cache-incubating] Use Store Cache and merge optimistic cache with Memory cache ([#5651](https://togithub.com/apollographql/apollo-kotlin/pull/5651))
- \[runtime] Fix ApolloClient.Builder if the Builder is mutated by the caller after calling build() ([#5683](https://togithub.com/apollographql/apollo-kotlin/pull/5683))
- \[websockets-network-transport-incubating] Introduce incubating WebSocketNetworkTransport ([#5678](https://togithub.com/apollographql/apollo-kotlin/pull/5678))
- \[websockets-network-transport-incubating] Introduce incubating WebSocketEngine ([#5676](https://togithub.com/apollographql/apollo-kotlin/pull/5676))
- \[runtime] Don't assume a single emission in AutoPersistedQueryInterceptor ([#5677](https://togithub.com/apollographql/apollo-kotlin/pull/5677))
- \[runtime] Use expect funs instead of expect classes for DefaultHttpEngine ([#5672](https://togithub.com/apollographql/apollo-kotlin/pull/5672))
- \[runtime] Fix JS websocket throws an ISE on error on Safari and Firefox ([#5670](https://togithub.com/apollographql/apollo-kotlin/pull/5670))
- \[runtime] Use the streaming HttpEngine by default on Apple ([#5671](https://togithub.com/apollographql/apollo-kotlin/pull/5671))
- \[intellij-plugin] Only send telemetry for Apollo Kotlin projects ([#5663](https://togithub.com/apollographql/apollo-kotlin/pull/5663))
- \[gradle-plugin] Use Gradle normalization instead of ours ([#5636](https://togithub.com/apollographql/apollo-kotlin/pull/5636))
- \[execution] Fix converting int and floats to their Kotlin value ([#5637](https://togithub.com/apollographql/apollo-kotlin/pull/5637))
- \[runtime] Add ApolloClient.Builder(ApolloHttpCache) ([#5638](https://togithub.com/apollographql/apollo-kotlin/pull/5638))
- \[gradle-plugin] Use com.android.lint Gradle rules ([#5639](https://togithub.com/apollographql/apollo-kotlin/pull/5639))
- \[all] Update coroutines to 1.8.0 ([#5626](https://togithub.com/apollographql/apollo-kotlin/pull/5626))
- \[runtime] Allow buildPostBody to write operation extensions ([#5630](https://togithub.com/apollographql/apollo-kotlin/pull/5630))
- \[compiler] Add support for [@catch](https://togithub.com/catch) on fieldDefinitions, interfaces and objects ([#5623](https://togithub.com/apollographql/apollo-kotlin/pull/5623))
- \[all] Bump Kotlin to 2.0.0-Beta4 ([#5624](https://togithub.com/apollographql/apollo-kotlin/pull/5624))
- \[normalized-cache-incubating] Cache lock changes ([#5608](https://togithub.com/apollographql/apollo-kotlin/pull/5608))
- \[rx-support] Keep rx-support as DeprecationLevel.Error ([#5610](https://togithub.com/apollographql/apollo-kotlin/pull/5610))
- \[gradle-plugin] Add dependsOn(dependencyNotation, bidirectional) ([#5606](https://togithub.com/apollographql/apollo-kotlin/pull/5606))
- \[gradle-plugin] Fix a regression in alwaysGenerateTypesMatching where all types would be generated by default ([#5605](https://togithub.com/apollographql/apollo-kotlin/pull/5605))
- \[️compiler] Add Apollo compiler plugin API ([#5604](https://togithub.com/apollographql/apollo-kotlin/pull/5604), [#5599](https://togithub.com/apollographql/apollo-kotlin/pull/5599), [#5591](https://togithub.com/apollographql/apollo-kotlin/pull/5591), [#5589](https://togithub.com/apollographql/apollo-kotlin/pull/5589), [#5588](https://togithub.com/apollographql/apollo-kotlin/pull/5588), [#5582](https://togithub.com/apollographql/apollo-kotlin/pull/5582), [#5573](https://togithub.com/apollographql/apollo-kotlin/pull/5573), [#5561](https://togithub.com/apollographql/apollo-kotlin/pull/5561), [#5560](https://togithub.com/apollographql/apollo-kotlin/pull/5560), [#5557](https://togithub.com/apollographql/apollo-kotlin/pull/5557), [#5556](https://togithub.com/apollographql/apollo-kotlin/pull/5556), [#5554](https://togithub.com/apollographql/apollo-kotlin/pull/5554), [#5516](https://togithub.com/apollographql/apollo-kotlin/pull/5516), [#5589](https://togithub.com/apollographql/apollo-kotlin/pull/5589))
- \[intellij-plugin] Publish the IJ plugin snapshots to the JetBrain Marketplace ([#5600](https://togithub.com/apollographql/apollo-kotlin/pull/5600))
- \[runtime] HTTP Headers: remove `X-APOLLO-OPERATION-NAME`, `X-APOLLO-OPERATION-ID` and the multipart boundary ([#5533](https://togithub.com/apollographql/apollo-kotlin/pull/5533))
- \[gradle-plugin] use Worker API and ServiceLoader ([#5590](https://togithub.com/apollographql/apollo-kotlin/pull/5590))
- \[gradle-plugin] deprecate schemaFile and sourceFolder ([#5581](https://togithub.com/apollographql/apollo-kotlin/pull/5581))
- \[gradle-plugin] configuration cache and lazy properties for schema files ([#5580](https://togithub.com/apollographql/apollo-kotlin/pull/5580))
- \[️compiler] Track semanticNonNull spec ([#5577](https://togithub.com/apollographql/apollo-kotlin/pull/5577))
- \[gradle-plugin] bump minimum required Gradle version to 8.0 ([#5579](https://togithub.com/apollographql/apollo-kotlin/pull/5579))
- \[ast] Validate repeatable directives ([#5574](https://togithub.com/apollographql/apollo-kotlin/pull/5574))
- \[compiler] Don't automatically add key fields to union selections ([#5562](https://togithub.com/apollographql/apollo-kotlin/pull/5562))
- \[runtime] Fix disabling batching by default ([#5552](https://togithub.com/apollographql/apollo-kotlin/pull/5552))
- \[gradle-plugin] Select all types in pre-introspection query ([#5547](https://togithub.com/apollographql/apollo-kotlin/pull/5547))
- \[normalized-cache-api] Remove unnecessary suspend from ApolloStore functions ([#5541](https://togithub.com/apollographql/apollo-kotlin/pull/5541))
- \[all] One more step towards K2 but blocked on https://youtrack.jetbrains.com/issue/KT-21846 ([#5536](https://togithub.com/apollographql/apollo-kotlin/pull/5536))
- \[all] Target Java17 for Android .aars and Java11 for apollo-gradle-plugin.jar ([#5534](https://togithub.com/apollographql/apollo-kotlin/pull/5534))
- \[compiler] Remove old `generateAsInternal` code ([#5526](https://togithub.com/apollographql/apollo-kotlin/pull/5526))
- \[compiler] Lock down apollo-compiler API ([#5524](https://togithub.com/apollographql/apollo-kotlin/pull/5524))
- \[normalized-cache-sqlite] Use windowSizeBytes argument of AndroidSqliteDriver ([#5523](https://togithub.com/apollographql/apollo-kotlin/pull/5523))
- \[intellij-plugin] Strip Apollo client directives before executing operations ([#5517](https://togithub.com/apollographql/apollo-kotlin/pull/5517))
- \[execution] Fix converting GraphQL Float values to Kotlin ([#5511](https://togithub.com/apollographql/apollo-kotlin/pull/5511))
- \[intellij-plugin] Don't show a visible task with progress bar while fetching the Apollo Conf ([#5501](https://togithub.com/apollographql/apollo-kotlin/pull/5501))
- \[intellij-plugin] Inspection: missing directive import ([#5494](https://togithub.com/apollographql/apollo-kotlin/pull/5494))
- \[intellij-plugin] Use recent version of slf4j to avoid a classloader issue ([#5495](https://togithub.com/apollographql/apollo-kotlin/pull/5495))
- \[normalized-cache-sqlite] Allow custom SupportSQLiteOpenHelper.Callback in the SqlNormalizedCacheFactory ([#5488](https://togithub.com/apollographql/apollo-kotlin/pull/5488))
- \[mockserver] Allow to set the content-type of String responses ([#5489](https://togithub.com/apollographql/apollo-kotlin/pull/5489))
- \[debug-server] Start LocalServerSocket on background thread, and handle exception ([#5493](https://togithub.com/apollographql/apollo-kotlin/pull/5493))
- \[cli-incubating] Publish apollo-cli-incubating again ([#5486](https://togithub.com/apollographql/apollo-kotlin/pull/5486))
- \[intellij-plugin] Don't suggest v4 migration until it is stable ([#5477](https://togithub.com/apollographql/apollo-kotlin/pull/5477))
- \[tooling] bump version of Apollo to `4.0.0-beta.3` ([#5452](https://togithub.com/apollographql/apollo-kotlin/pull/5452))
- \[debug-server] Don't crash if ApolloDebugServerInitializer is not run (e.g. in unit tests) ([#5484](https://togithub.com/apollographql/apollo-kotlin/pull/5484))
- \[intellij-plugin] Add debugging logs around the cache viewer ([#5475](https://togithub.com/apollographql/apollo-kotlin/pull/5475))
- \[debug-server] Debug server: don't crash when a client has no caches ([#5479](https://togithub.com/apollographql/apollo-kotlin/pull/5479))
- \[gradle-plugin] add apollo.deps ([#5460](https://togithub.com/apollographql/apollo-kotlin/pull/5460))
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
4.0.0-beta.4
->4.0.0-beta.6
4.0.0-beta.4
->4.0.0-beta.6
4.0.0-beta.4
->4.0.0-beta.6
4.0.0-beta.4
->4.0.0-beta.6
4.0.0-beta.4
->4.0.0-beta.6
4.0.0-beta.4
->4.0.0-beta.6
Release Notes
apollographql/apollo-kotlin (com.apollographql.apollo3)
### [`v4.0.0-beta.6`](https://togithub.com/apollographql/apollo-kotlin/blob/HEAD/CHANGELOG.md#Version-400-beta6) *2024-04-23* #### SQL cache performance improvements If you're using a chained memory + SQL cache, [#5840](https://togithub.com/apollographql/apollo-kotlin/issues/5840) makes sure cache writes are wrapped in a transaction, making them much faster. #### Apollo Compiler Plugins `Plugin` is renamed to `ApolloCompilerPlugin`. There is a new `documentTransform` API as well as other fixes. More details in the [compiler plugins documentation](https://www.apollographql.com/docs/kotlin/v4/advanced/compiler-plugins). #### Experimental WebSockets A new `.websocket` package is available that makes it easier to retry WebSockets and handle errors. More details and migration guide in the [experimental websockets documentation](https://www.apollographql.com/docs/kotlin/v4/advanced/experimental-websockets). #### ApolloIdlingResource is deprecated We recommend using reactive patterns to test your UI instead. See [this article about ways to do so](https://medium.com/androiddevelopers/alternatives-to-idling-resources-in-compose-tests-8ae71f9fc473). #### Removed androidx.startup dependency androidx.startup was introduced in beta.5 but is problematic for unit tests and other cases. beta.6 removes that dependency. More details in the [network connectivity documentation](https://www.apollographql.com/docs/kotlin/v4/advanced/network-connectivity). #### WasmJS support for apollo-adapter You can see Wasm in action at https://wasm.confetti-app.dev/ Many thanks to [@joreilly](https://togithub.com/joreilly), [@ychescale9](https://togithub.com/ychescale9) and [@japhib](https://togithub.com/japhib) for their contributions to this release 💙! #### 👷 All changes - \[normalized-cache]: use a single SQL transaction when using MemoryCache chaining ([#5840](https://togithub.com/apollographql/apollo-kotlin/issues/5840)) - \[compiler] expose apollo-ast as an api dependency ([#5838](https://togithub.com/apollographql/apollo-kotlin/issues/5838)) - \[compiler] Rename `Plugin` to `ApolloCompilerPlugin` and add error message for bad configurations ([#5821](https://togithub.com/apollographql/apollo-kotlin/issues/5821)) - \[IJ Plugin] Fix pulling file from device not working on AS Koala ([#5822](https://togithub.com/apollographql/apollo-kotlin/issues/5822)) - \[compiler] Add `@ApolloEnumConstructor` and make enum as sealed class Unknown constructor opt-in ([#5813](https://togithub.com/apollographql/apollo-kotlin/issues/5813)) - \[runtime] Move ApolloParseException to ApolloNetworkException ([#5816](https://togithub.com/apollographql/apollo-kotlin/issues/5816)) - \[normalized-cache] Let isFromCache be about the ApolloResponse ([#5805](https://togithub.com/apollographql/apollo-kotlin/issues/5805)) - \[compiler] Add DocumentTransform API ([#5809](https://togithub.com/apollographql/apollo-kotlin/issues/5809)) - \[idling-resource] Deprecate ApolloIdlingResource ([#5817](https://togithub.com/apollographql/apollo-kotlin/issues/5817), [#5764](https://togithub.com/apollographql/apollo-kotlin/issues/5764)) - \[runtime] Share the default OkHttpBuilder ([#5811](https://togithub.com/apollographql/apollo-kotlin/issues/5811)) - \[runtime] \[BREAKING] change `isOnline` to a suspend fun - \[adapters] Support Kotlin/Wasm for apollo-adapters ([#5803](https://togithub.com/apollographql/apollo-kotlin/issues/5803)) - \[all] Bump Kotlin to 2.0.0-RC1 ([#5802](https://togithub.com/apollographql/apollo-kotlin/issues/5802)) - \[Codegen] Add CompiledArgumentDefinition ([#5797](https://togithub.com/apollographql/apollo-kotlin/issues/5797), [#5837](https://togithub.com/apollographql/apollo-kotlin/issues/5837)) - \[runtime] Merge experimental WebSocketNetworkTransport in apollo-runtime ([#5790](https://togithub.com/apollographql/apollo-kotlin/issues/5790)) - \[normalized-cache] Cache pagination: add FieldNameGenerator and EmbeddedFieldsProvider ([#5772](https://togithub.com/apollographql/apollo-kotlin/issues/5772)) - \[runtime] Support configuring `ApolloClient` with lazily initialized `Call.Factory`. ([#5784](https://togithub.com/apollographql/apollo-kotlin/issues/5784)) - \[runtime] fix ApolloClient.Builder.okHttpClient() returns null instead of this ([#5778](https://togithub.com/apollographql/apollo-kotlin/issues/5778)) - \[normalized-cache] Fix variable coercion in lists. Absent variables are coerced to null ([#5773](https://togithub.com/apollographql/apollo-kotlin/issues/5773)) - \[IJ Plugin] Fix an NPE ([#5770](https://togithub.com/apollographql/apollo-kotlin/issues/5770)) - \[runtime] Simplify ApolloCall ([#5765](https://togithub.com/apollographql/apollo-kotlin/issues/5765)) - \[runtime] remove `androidx.startup` dependency ([#5761](https://togithub.com/apollographql/apollo-kotlin/issues/5761), [#5720](https://togithub.com/apollographql/apollo-kotlin/issues/5720)) - \[compiler] Bump kotlin_labs definitions to v0.3 ([#5762](https://togithub.com/apollographql/apollo-kotlin/issues/5762)) - \[Pagination] Support nodes in Connection types ([#5754](https://togithub.com/apollographql/apollo-kotlin/issues/5754)) - \[compiler] Directive validation is now enforced by default ([#5758](https://togithub.com/apollographql/apollo-kotlin/issues/5758)) - \[cache] Make ApolloStore.publish() suspend ([#5755](https://togithub.com/apollographql/apollo-kotlin/issues/5755)) - \[runtime] Change the dispatcher earlier in the chain ([#4319](https://togithub.com/apollographql/apollo-kotlin/issues/4319)) - \[IJ Plugin] Add an advanced setting to include generated code references in GraphQL "Go To Declaration" ([#5743](https://togithub.com/apollographql/apollo-kotlin/issues/5743)) - \[IJ Plugin] Fix presentation of Kotlin elements when navigating to them from GraphQL ([#5739](https://togithub.com/apollographql/apollo-kotlin/issues/5739)) - \[IJ Plugin] Consider all Gradle projects recursively ([#5734](https://togithub.com/apollographql/apollo-kotlin/issues/5734)) - \[runtime] Deprecate ApolloClient.Builder.addInterceptors() ([#5733](https://togithub.com/apollographql/apollo-kotlin/issues/5733)) - \[all] use jdk-release ([#5731](https://togithub.com/apollographql/apollo-kotlin/issues/5731)) - \[http-cache] Ignore IOException when calling ApolloHttpCache.remove ([#5729](https://togithub.com/apollographql/apollo-kotlin/issues/5729)) - \[IJ plugin] Bump platformVersion and pluginSinceBuild from 232 to 233 ([#5726](https://togithub.com/apollographql/apollo-kotlin/issues/5726)) - \[runtime] add ApolloClient.failFastIfOffline ([#5725](https://togithub.com/apollographql/apollo-kotlin/issues/5725)) - \[all] Introduce "filesystem" sourceSet and use okio 3.9.0 ([#5719](https://togithub.com/apollographql/apollo-kotlin/issues/5719)) - \[runtime] Do not use Ktor in Js HttpEngine, use fetch directly instead ([#5702](https://togithub.com/apollographql/apollo-kotlin/issues/5702)) ### [`v4.0.0-beta.5`](https://togithub.com/apollographql/apollo-kotlin/blob/HEAD/CHANGELOG.md#Version-400-beta5) *2024-03-12* Main changes: - **Apollo compiler plugins**: The GraphQL compiler now has APIs that you can use to customize the generated code. This can be used for changing visibility of some symbols, renaming them or more generally customizing the output for any advanced use cases. Moving forward, Apollo compiler plugins are the preferred way to customize operation IDs as well as package names and both `PackageNameGenerator` and `OperationOutputGenerator` are deprecated. See the [documentation page about Apollo compiler plugins](https://www.apollographql.com/docs/kotlin/v4/advanced/compiler-plugins) for more details. - **Reduced lock contention in apollo-normalized-cache-incubating**: the incubating normalized cache now uses lock-free memory structures inspired by guava and [MobileNativeFoundation/Store](https://togithub.com/MobileNativeFoundation/Store/). We have seen improvements by up to 20% in some scenarios. Please share your numbers if you notice any positive (or negative) change. - **Nullability directives**: The version of the supported nullability directives was bumped from 0.1 to 0.3 (See [apollographql/specs#42](https://togithub.com/apollographql/specs/pull/42) and [apollographql/specs#48](https://togithub.com/apollographql/specs/pull/48)). If you are using `@semanticNonNull` or `@catch` you should bump your `@link` directives to use `0.3`. See the [nullability documentation page](https://www.apollographql.com/docs/kotlin/v4/advanced/nullability) for more details. - **New snapshot repository for the IntelliJ/Android Studio plugin**: The repository to use for the weekly snapshots has changed. You can now use `https://go.apollo.dev/ij-plugin-snapshots` to get the latest weekly snapshots. ([#5600](https://togithub.com/apollographql/apollo-kotlin/pull/5600)) - **Multi-version KDoc**: The [published KDoc](https://www.apollographql.com/docs/kotlin/kdoc/index.html) now includes both v3 and v4 versions. Many thanks to [@ribafish](https://togithub.com/ribafish), [@molundb](https://togithub.com/molundb), [@mboyd1993](https://togithub.com/mboyd1993), [@rohandhruva](https://togithub.com/rohandhruva) and [@baconz](https://togithub.com/baconz) for their help in this release 💙! #### 👷 All changes - \[mockserver] Add MockServer.enqueueError() and MockServer.assertNoRequest() ([#5694](https://togithub.com/apollographql/apollo-kotlin/pull/5694)) - \[runtime] Implement NetworkMonitor for apple platforms ([#5691](https://togithub.com/apollographql/apollo-kotlin/pull/5691)) - \[runtime] Add `NetworkMonitor` ([#5690](https://togithub.com/apollographql/apollo-kotlin/pull/5690)) - \[runtime] Add `ApolloClient.retryOnError(Boolean)` ([#5685](https://togithub.com/apollographql/apollo-kotlin/pull/5685)) - \[websockets-network-transport-incubating] Publish apollo-websocket-network-transport-incubating ([#5693](https://togithub.com/apollographql/apollo-kotlin/pull/5693)) - \[normalized-cache-incubating] Use Store Cache and merge optimistic cache with Memory cache ([#5651](https://togithub.com/apollographql/apollo-kotlin/pull/5651)) - \[runtime] Fix ApolloClient.Builder if the Builder is mutated by the caller after calling build() ([#5683](https://togithub.com/apollographql/apollo-kotlin/pull/5683)) - \[websockets-network-transport-incubating] Introduce incubating WebSocketNetworkTransport ([#5678](https://togithub.com/apollographql/apollo-kotlin/pull/5678)) - \[websockets-network-transport-incubating] Introduce incubating WebSocketEngine ([#5676](https://togithub.com/apollographql/apollo-kotlin/pull/5676)) - \[runtime] Don't assume a single emission in AutoPersistedQueryInterceptor ([#5677](https://togithub.com/apollographql/apollo-kotlin/pull/5677)) - \[runtime] Use expect funs instead of expect classes for DefaultHttpEngine ([#5672](https://togithub.com/apollographql/apollo-kotlin/pull/5672)) - \[runtime] Fix JS websocket throws an ISE on error on Safari and Firefox ([#5670](https://togithub.com/apollographql/apollo-kotlin/pull/5670)) - \[runtime] Use the streaming HttpEngine by default on Apple ([#5671](https://togithub.com/apollographql/apollo-kotlin/pull/5671)) - \[intellij-plugin] Only send telemetry for Apollo Kotlin projects ([#5663](https://togithub.com/apollographql/apollo-kotlin/pull/5663)) - \[gradle-plugin] Use Gradle normalization instead of ours ([#5636](https://togithub.com/apollographql/apollo-kotlin/pull/5636)) - \[execution] Fix converting int and floats to their Kotlin value ([#5637](https://togithub.com/apollographql/apollo-kotlin/pull/5637)) - \[runtime] Add ApolloClient.Builder(ApolloHttpCache) ([#5638](https://togithub.com/apollographql/apollo-kotlin/pull/5638)) - \[gradle-plugin] Use com.android.lint Gradle rules ([#5639](https://togithub.com/apollographql/apollo-kotlin/pull/5639)) - \[all] Update coroutines to 1.8.0 ([#5626](https://togithub.com/apollographql/apollo-kotlin/pull/5626)) - \[runtime] Allow buildPostBody to write operation extensions ([#5630](https://togithub.com/apollographql/apollo-kotlin/pull/5630)) - \[compiler] Add support for [@catch](https://togithub.com/catch) on fieldDefinitions, interfaces and objects ([#5623](https://togithub.com/apollographql/apollo-kotlin/pull/5623)) - \[all] Bump Kotlin to 2.0.0-Beta4 ([#5624](https://togithub.com/apollographql/apollo-kotlin/pull/5624)) - \[normalized-cache-incubating] Cache lock changes ([#5608](https://togithub.com/apollographql/apollo-kotlin/pull/5608)) - \[rx-support] Keep rx-support as DeprecationLevel.Error ([#5610](https://togithub.com/apollographql/apollo-kotlin/pull/5610)) - \[gradle-plugin] Add dependsOn(dependencyNotation, bidirectional) ([#5606](https://togithub.com/apollographql/apollo-kotlin/pull/5606)) - \[gradle-plugin] Fix a regression in alwaysGenerateTypesMatching where all types would be generated by default ([#5605](https://togithub.com/apollographql/apollo-kotlin/pull/5605)) - \[️compiler] Add Apollo compiler plugin API ([#5604](https://togithub.com/apollographql/apollo-kotlin/pull/5604), [#5599](https://togithub.com/apollographql/apollo-kotlin/pull/5599), [#5591](https://togithub.com/apollographql/apollo-kotlin/pull/5591), [#5589](https://togithub.com/apollographql/apollo-kotlin/pull/5589), [#5588](https://togithub.com/apollographql/apollo-kotlin/pull/5588), [#5582](https://togithub.com/apollographql/apollo-kotlin/pull/5582), [#5573](https://togithub.com/apollographql/apollo-kotlin/pull/5573), [#5561](https://togithub.com/apollographql/apollo-kotlin/pull/5561), [#5560](https://togithub.com/apollographql/apollo-kotlin/pull/5560), [#5557](https://togithub.com/apollographql/apollo-kotlin/pull/5557), [#5556](https://togithub.com/apollographql/apollo-kotlin/pull/5556), [#5554](https://togithub.com/apollographql/apollo-kotlin/pull/5554), [#5516](https://togithub.com/apollographql/apollo-kotlin/pull/5516), [#5589](https://togithub.com/apollographql/apollo-kotlin/pull/5589)) - \[intellij-plugin] Publish the IJ plugin snapshots to the JetBrain Marketplace ([#5600](https://togithub.com/apollographql/apollo-kotlin/pull/5600)) - \[runtime] HTTP Headers: remove `X-APOLLO-OPERATION-NAME`, `X-APOLLO-OPERATION-ID` and the multipart boundary ([#5533](https://togithub.com/apollographql/apollo-kotlin/pull/5533)) - \[gradle-plugin] use Worker API and ServiceLoader ([#5590](https://togithub.com/apollographql/apollo-kotlin/pull/5590)) - \[gradle-plugin] deprecate schemaFile and sourceFolder ([#5581](https://togithub.com/apollographql/apollo-kotlin/pull/5581)) - \[gradle-plugin] configuration cache and lazy properties for schema files ([#5580](https://togithub.com/apollographql/apollo-kotlin/pull/5580)) - \[️compiler] Track semanticNonNull spec ([#5577](https://togithub.com/apollographql/apollo-kotlin/pull/5577)) - \[gradle-plugin] bump minimum required Gradle version to 8.0 ([#5579](https://togithub.com/apollographql/apollo-kotlin/pull/5579)) - \[ast] Validate repeatable directives ([#5574](https://togithub.com/apollographql/apollo-kotlin/pull/5574)) - \[compiler] Don't automatically add key fields to union selections ([#5562](https://togithub.com/apollographql/apollo-kotlin/pull/5562)) - \[runtime] Fix disabling batching by default ([#5552](https://togithub.com/apollographql/apollo-kotlin/pull/5552)) - \[gradle-plugin] Select all types in pre-introspection query ([#5547](https://togithub.com/apollographql/apollo-kotlin/pull/5547)) - \[normalized-cache-api] Remove unnecessary suspend from ApolloStore functions ([#5541](https://togithub.com/apollographql/apollo-kotlin/pull/5541)) - \[all] One more step towards K2 but blocked on https://youtrack.jetbrains.com/issue/KT-21846 ([#5536](https://togithub.com/apollographql/apollo-kotlin/pull/5536)) - \[all] Target Java17 for Android .aars and Java11 for apollo-gradle-plugin.jar ([#5534](https://togithub.com/apollographql/apollo-kotlin/pull/5534)) - \[compiler] Remove old `generateAsInternal` code ([#5526](https://togithub.com/apollographql/apollo-kotlin/pull/5526)) - \[compiler] Lock down apollo-compiler API ([#5524](https://togithub.com/apollographql/apollo-kotlin/pull/5524)) - \[normalized-cache-sqlite] Use windowSizeBytes argument of AndroidSqliteDriver ([#5523](https://togithub.com/apollographql/apollo-kotlin/pull/5523)) - \[intellij-plugin] Strip Apollo client directives before executing operations ([#5517](https://togithub.com/apollographql/apollo-kotlin/pull/5517)) - \[execution] Fix converting GraphQL Float values to Kotlin ([#5511](https://togithub.com/apollographql/apollo-kotlin/pull/5511)) - \[intellij-plugin] Don't show a visible task with progress bar while fetching the Apollo Conf ([#5501](https://togithub.com/apollographql/apollo-kotlin/pull/5501)) - \[intellij-plugin] Inspection: missing directive import ([#5494](https://togithub.com/apollographql/apollo-kotlin/pull/5494)) - \[intellij-plugin] Use recent version of slf4j to avoid a classloader issue ([#5495](https://togithub.com/apollographql/apollo-kotlin/pull/5495)) - \[normalized-cache-sqlite] Allow custom SupportSQLiteOpenHelper.Callback in the SqlNormalizedCacheFactory ([#5488](https://togithub.com/apollographql/apollo-kotlin/pull/5488)) - \[mockserver] Allow to set the content-type of String responses ([#5489](https://togithub.com/apollographql/apollo-kotlin/pull/5489)) - \[debug-server] Start LocalServerSocket on background thread, and handle exception ([#5493](https://togithub.com/apollographql/apollo-kotlin/pull/5493)) - \[cli-incubating] Publish apollo-cli-incubating again ([#5486](https://togithub.com/apollographql/apollo-kotlin/pull/5486)) - \[intellij-plugin] Don't suggest v4 migration until it is stable ([#5477](https://togithub.com/apollographql/apollo-kotlin/pull/5477)) - \[tooling] bump version of Apollo to `4.0.0-beta.3` ([#5452](https://togithub.com/apollographql/apollo-kotlin/pull/5452)) - \[debug-server] Don't crash if ApolloDebugServerInitializer is not run (e.g. in unit tests) ([#5484](https://togithub.com/apollographql/apollo-kotlin/pull/5484)) - \[intellij-plugin] Add debugging logs around the cache viewer ([#5475](https://togithub.com/apollographql/apollo-kotlin/pull/5475)) - \[debug-server] Debug server: don't crash when a client has no caches ([#5479](https://togithub.com/apollographql/apollo-kotlin/pull/5479)) - \[gradle-plugin] add apollo.deps ([#5460](https://togithub.com/apollographql/apollo-kotlin/pull/5460))Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR has been generated by Mend Renovate. View repository job log here.