{"id":"src_GyUqRE-S36hDOHZLED2wM","slug":"apollo-kotlin","name":"Apollo Kotlin","type":"github","url":"https://github.com/apollographql/apollo-kotlin","orgId":"org_ctiL2ZZXIA7tbsKSsxRN9","org":{"slug":"apollo-graphql","name":"Apollo GraphQL"},"isPrimary":false,"metadata":"{\"evaluatedMethod\":\"github\",\"evaluatedAt\":\"2026-04-11T13:27:01.049Z\",\"changelogUrl\":\"https://github.com/apollographql/apollo-kotlin/blob/HEAD/CHANGELOG.md\",\"changelogDetectedAt\":\"2026-04-11T13:27:52.311Z\"}","releaseCount":100,"releasesLast30Days":3,"avgReleasesPerWeek":0.6,"latestVersion":"v5.0.0-alpha.7","latestDate":"2026-04-07T12:39:01.000Z","changelogUrl":"https://github.com/apollographql/apollo-kotlin/blob/HEAD/CHANGELOG.md","hasChangelogFile":true,"lastFetchedAt":"2026-04-19T03:02:26.662Z","trackingSince":"2020-06-11T09:58:20.000Z","releases":[{"id":"rel_0EJy3uruapfTx4pNAcNJL","version":"v5.0.0-alpha.7","title":"v5.0.0-alpha.7","summary":"Compatibility release for Kotlin 2.4.0-Beta1\r\n\r\n* [NEW] Pass parent and parentType to FakeResolver (#6913)\r\n* [FIX] Compatibility with Kotlin 2.4-Beta...","content":"Compatibility release for Kotlin 2.4.0-Beta1\r\n\r\n* [NEW] Pass parent and parentType to FakeResolver (#6913)\r\n* [FIX] Compatibility with Kotlin 2.4-Beta1: Remove legacy JS target check (#6908)\r\n\r\n**Full Changelog**: https://github.com/apollographql/apollo-kotlin/compare/v5.0.0-alpha.6...v5.0.0-alpha.7","publishedAt":"2026-04-07T12:39:01.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v5.0.0-alpha.7","media":[]},{"id":"rel_GOM5XP1nyK8JcHS8e_dYO","version":"v4.4.3","title":"v4.4.3","summary":"Compatibility release for Kotlin 2.4.0-Beta1. This release contains only a single change:\r\n\r\n* [FIX] Compatibility with Kotlin 2.4-Beta1: Remove legac...","content":"Compatibility release for Kotlin 2.4.0-Beta1. This release contains only a single change:\r\n\r\n* [FIX] Compatibility with Kotlin 2.4-Beta1: Remove legacy JS target check (#6910)","publishedAt":"2026-04-07T09:45:30.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.4.3","media":[]},{"id":"rel_kFmmsff69YAXF193Ip00s","version":"v5.0.0-alpha.6","title":"v5.0.0-alpha.6","summary":"This version is probably one of the last alpha before going `-rc`.\r\n\r\n* [NEW] Add support for `@ignore` (https://github.com/apollographql/apollo-kotli...","content":"This version is probably one of the last alpha before going `-rc`.\r\n\r\n* [NEW] Add support for `@ignore` (https://github.com/apollographql/apollo-kotlin/pull/6900)\r\n* [FIX] Gradle plugin: set `org.gradle.category` attribute and use reverse DNS naming to avoid name clashes (https://github.com/apollographql/apollo-kotlin/pull/6886)\r\n* [FIX] Fix validation of `@oneOf` input objects.  (https://github.com/apollographql/apollo-kotlin/pull/6894)\r\n* [DOWNGRADE] Downgrade `compileSdk` version to 35 for better compatibility (https://github.com/apollographql/apollo-kotlin/pull/6899, https://github.com/apollographql/apollo-kotlin/pull/6902)\r\n\r\nMany thanks to @eboudrant for the contributions in this release 💙","publishedAt":"2026-03-27T15:20:37.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v5.0.0-alpha.6","media":[]},{"id":"rel_oCOhDQ7b1l930pxRLazOR","version":"v4.4.2","title":"v4.4.2","summary":"Maintenance release that adds a new KMP target and makes it easier to work with the new cache and AGP9. \r\n\r\nThis version also bumps KGP to 2.2. This i...","content":"Maintenance release that adds a new KMP target and makes it easier to work with the new cache and AGP9. \r\n\r\nThis version also bumps KGP to 2.2. This is transparent for Android/JVM consumers but requires native/JS/wasm consumers to use KGP 2.2 to compile against `4.4.2`.\r\n\r\n* [NEW] Add watchosDeviceArm64 (#6892)\r\n* [UPDATE] Upgrade KGP to 2.2 (#6892)\r\n* [FIX] If the new cache is present, do not import @typePolicy and @fieldPolicy (#6896)\r\n* [FIX] Use the same classloader than the one which loaded apollo-gradle-plugin to lookup the AGP version (#6877) (#6893)\r\n\r\n**New developments happen in the 5.0 alphas**.\r\n","publishedAt":"2026-03-16T19:20:58.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.4.2","media":[]},{"id":"rel_IKwQ3NccrFcRo-ebWkV6u","version":"v5.0.0-alpha.5","title":"v5.0.0-alpha.5","summary":"`5.0.0-alpha.5` is [\"golden-path\" ready](https://github.com/graphql/graphql-wg/issues/1887) ✨! It supports the latest GraphQL experimental features:\r\n...","content":"`5.0.0-alpha.5` is [\"golden-path\" ready](https://github.com/graphql/graphql-wg/issues/1887) ✨! It supports the latest GraphQL experimental features:\r\n* [Fragment arguments](https://github.com/graphql/graphql-spec/pull/1081)\r\n* [Service capabilities](https://github.com/graphql/graphql-spec/pull/1163)\r\n* [`onError` request parameter](https://github.com/graphql/graphql-spec/pull/1163)\r\n* [Field extensions](https://github.com/graphql/graphql-spec/issues/1162)\r\n\r\nIt also bumps KGP version to 2.3.10. This has no impact for JVM/Android consumers but requires Native/JS/Wasm consumers to compile with Kotlin 2.3.\r\n\r\nMany thanks to @abeggsnf for the contributions in this release!\r\n\r\n## 👷‍♂️ All changes\r\n\r\n* [NEW] Add fragment-arguments (#6882)\r\n* [NEW] Add support for service capabilities (#6858)\r\n* [NEW] Add support for `onError` (#6860)\r\n* [NEW] Implement field extensions (#6856, #6867)\r\n* [NEW] Use KGP 2.3.10 (#6873)\r\n* [NEW] Add GraphQLWsProtocol.parseServerMessage() (#6871)\r\n* [NEW] Rework field merging validation (#6875)\r\n* [FIX] Data builders: fix nullable fields of composite type (#6855)\r\n* [FIX] Use the same classloader than the one which loaded apollo-gradle-plugin to lookup the AGP version (#6877)\r\n* [FIX] Use public AGP API for version detection instead of internal class (#6874)","publishedAt":"2026-02-25T10:04:26.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v5.0.0-alpha.5","media":[]},{"id":"rel_IchBHLidJJ0yDzHr7AAJj","version":"v4.4.1","title":"v4.4.1","summary":"This version has a single fix for a regression in the Gradle plugin:\r\n\r\n* [FIX] Fix `./gradlew download${Service}ApolloSchemaFromIntrospection` was cr...","content":"This version has a single fix for a regression in the Gradle plugin:\r\n\r\n* [FIX] Fix `./gradlew download${Service}ApolloSchemaFromIntrospection` was crashing due to a bad class relocation (https://github.com/apollographql/apollo-kotlin/issues/6863)\r\n","publishedAt":"2026-01-30T16:00:35.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.4.1","media":[]},{"id":"rel_zT-jd-1lTfAGDszqa_JrF","version":"v5.0.0-alpha.4","title":"v5.0.0-alpha.4","summary":"Many thanks @MatthewFolbigg, @scana, and @simonlebras for their contributions to this release! \r\n\r\n## 👷‍♂️ All changes\r\n\r\n## What's Changed\r\n* [NEW] ...","content":"Many thanks @MatthewFolbigg, @scana, and @simonlebras for their contributions to this release! \r\n\r\n## 👷‍♂️ All changes\r\n\r\n## What's Changed\r\n* [NEW] Add watchosDeviceArm64 target in https://github.com/apollographql/apollo-kotlin/pull/6791\r\n* [NEW] Add support for directives on directive definitions in https://github.com/apollographql/apollo-kotlin/pull/6803\r\n* [NEW] Add `ApolloCall.extensions()` in https://github.com/apollographql/apollo-kotlin/pull/6834\r\n* [FIX] Do not compute key fields and key args when the Cache compiler plugin is present in https://github.com/apollographql/apollo-kotlin/pull/6797\r\n* [FIX] Escape /* and */ in KDocs in https://github.com/apollographql/apollo-kotlin/pull/6805\r\n* [FIX] Fix DataBuilders in multi-modules scenarios in https://github.com/apollographql/apollo-kotlin/pull/6810\r\n* [FIX] Data Builders: do not build the FakeResolver multiple times in https://github.com/apollographql/apollo-kotlin/pull/6811\r\n* [FIX] Gradle Plugin: Avoid eager configuration of Gradle objects in https://github.com/apollographql/apollo-kotlin/pull/6820\r\n* [FIX] Rename @link `Purpose` and `Import` definitions in https://github.com/apollographql/apollo-kotlin/pull/6838\r\n* [FIX] Escape names in equals(), hashCode(), copy(), and toString() in https://github.com/apollographql/apollo-kotlin/pull/6843","publishedAt":"2026-01-23T13:10:21.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v5.0.0-alpha.4","media":[]},{"id":"rel_akTrtWUwPk05bJBeuKpdK","version":"v4.4.0","title":"4.4.0","summary":"4.4.0 adds compatibility with [AGP9](https://blog.jetbrains.com/kotlin/2026/01/update-your-projects-for-agp9/) as well as a few other fixes.\r\n\r\nMost o...","content":"4.4.0 adds compatibility with [AGP9](https://blog.jetbrains.com/kotlin/2026/01/update-your-projects-for-agp9/) as well as a few other fixes.\r\n\r\nMost of the development is now made in the 5.x alphas.\r\n\r\n## 👷‍♂️ All changes\r\n* [NEW] AGP9 support (#6844)\r\n* [NEW] Add `@catch` support for `responseBased` codegen (#6698)\r\n* [NEW] Add `ApolloInterceptor.InsertionPoint` to control where the interceptors are added (#6767)\r\n* [FIX] Do not check already checked fragments in checkCapitalizedFields (#6721)\r\n* [FIX] Restore JsonReader state if a field throws in-flight (#6781)\r\n","publishedAt":"2026-01-21T11:29:20.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.4.0","media":[]},{"id":"rel_OvG-W7mqHh2msNWCcwpee","version":"v5.0.0-alpha.3","title":"v5.0.0-alpha.3","summary":"### `@stream` support\r\n\r\nYou may now use [`@stream`](https://github.com/graphql/graphql-wg/blob/main/rfcs/DeferStream.md#stream) to stream list respon...","content":"### `@stream` support\r\n\r\nYou may now use [`@stream`](https://github.com/graphql/graphql-wg/blob/main/rfcs/DeferStream.md#stream) to stream list responses from a compatible server.\r\n\r\nTo do this, opt in support for the [incremental:v0.2 protocol](https://specs.apollo.dev/incremental/v0.2/):\r\n\r\n```kotlin\r\nval apolloClient = ApolloClient.Builder()\r\n    .networkTransport(\r\n        HttpNetworkTransport.Builder()\r\n            .serverUrl(\"http://example.com/graphql\")\r\n            .incrementalDeliveryProtocol(IncrementalDeliveryProtocol.V0_2)\r\n            .build()\r\n    )\r\n    .build()\r\n```\r\n\r\nUsing `@defer` and `@stream` will stay opt-in until the RFC is merged.  \r\n\r\n### Experimental WebSockets are stable\r\n\r\nThe [experimental WebSockets](https://github.com/apollographql/apollo-kotlin/issues/5862) are promoted to stable. In particular, the [request url](https://github.com/apollographql/apollo-kotlin/pull/6758) may now be changed in interceptors. This can be used together with [RetryStrategy](https://github.com/apollographql/apollo-kotlin/pull/6764) to change the authentication parameters when retrying a subscription. The previous implementation (using the `com.apollographql.apollo.ws` package name) is now deprecated. \r\n\r\nRead more in the [migration guide](https://www.apollographql.com/docs/kotlin/v5/migration/5.0).\r\n\r\n### Leveraging OkHttp cache\r\n\r\nYou can now use OkHttp [cacheUrlOverride()](https://square.github.io/okhttp/5.x/okhttp/okhttp3/-request/-builder/cache-url-override.html) to cache POST requests.\r\n\r\nTo do so, [configure a cache on your OkHttpClient](https://square.github.io/okhttp/features/caching/) and use `enablePostCaching`:\r\n\r\n```kotlin\r\nval apolloClient = ApolloClient.Builder()\r\n    .networkTransport(\r\n        HttpNetworkTransport.Builder()\r\n            // Enable POST caching\r\n            .httpRequestComposer(DefaultHttpRequestComposer(serverUrl = mockServer.url(), enablePostCaching = true))\r\n            .httpEngine(\r\n                DefaultHttpEngine {\r\n                  OkHttpClient.Builder()\r\n                      .cache(directory = File(application.cacheDir, \"http_cache\"), maxSize = 10_000_000)\r\n                      .build()\r\n                }\r\n            )\r\n            .build()\r\n    )\r\n    .build()\r\n```\r\n\r\nThe existing `apollo-http-cache` artifacts have been deprecated. Moving forward, leveraging the cache of existing clients (OkHttp, Ktor, etc...) is the recommended way to do caching at the HTTP layer. \r\n\r\nRead more in the [migration guide](https://www.apollographql.com/docs/kotlin/v5/migration/5.0).\r\n\r\n### AGP9 support\r\n\r\nThe Gradle plugin now works with AGP 9 and the `com.android.kotlin.multiplatform.library` plugin.\r\n\r\n### `Service.issueSeverity()`\r\n\r\nYou may now control the severity of issues found by the compiler in your Gradle scripts:\r\n\r\n```kotlin\r\nservice(\"service\") { \r\n  packageName.set(\"com.example\")\r\n  // Do not fail the build on unused fragments\r\n  // Valid values are the names of the subclasses of `com.apollographql.apollo.ast.Issue`\r\n  issueSeverity(\"UnusedFragment\", \"warn\") \r\n}\r\n```\r\n\r\n## 👷‍♂️ All changes\r\n\r\n* NEW: Promote experimental websockets to stable by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6774\r\n* NEW: Add `@catch` support for responseBased codegen by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6697\r\n* NEW: Support descriptions on variable definitions by @BoD in https://github.com/apollographql/apollo-kotlin/pull/6699\r\n* NEW: Support Android Gradle Plugin 9 (AGP9) by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6703\r\n* NEW: Add `Service.issueSeverity()` by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6731\r\n* NEW: Add HTTP caching using OkHttp cacheUrlOverride by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6739\r\n* NEW: Implement `@defer` and `@stream` as of `incremental/v0.2` by @BoD in https://github.com/apollographql/apollo-kotlin/pull/6331\r\n* NEW: Add `ApolloRequest.Builder.url(String)` by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6758\r\n* NEW: Add a specific issue type for fragment cycles by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6759\r\n* NEW: Add `ApolloInterceptor.InsertionPoint` to control where the interceptors are added by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6761\r\n* NEW: Introduce `RetryStrategy` by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6764\r\n* FIX: Make `Optional.Absent` a `data object` by @JakeWharton in https://github.com/apollographql/apollo-kotlin/pull/6686\r\n* FIX: Use regular `if`/`else` to avoid `Int` boxing by @JakeWharton in https://github.com/apollographql/apollo-kotlin/pull/6688\r\n* FIX: Remove kotlin-node dependency by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6708\r\n* FIX: Do not check already checked fragments in checkCapitalizedFields by @BoD in https://github.com/apollographql/apollo-kotlin/pull/6718\r\n* FIX: Pretty-print operation manifest by @BoD in https://github.com/apollographql/apollo-kotlin/pull/6720\r\n* FIX: Allow empty deprecationReasons by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6729\r\n* FIX: Fix IndexOutOfBoundsException in keyFields validation by @BoD in https://github.com/apollographql/apollo-kotlin/pull/6748\r\n* FIX: Allow multiple success responses in ApolloCall.execute() by @BoD in https://github.com/apollographql/apollo-kotlin/pull/6772\r\n* FIX: Restore JsonReader state if a field throws in-flight by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6775\r\n* FIX: Exclude auto-imported cache related directives when the Apollo cache plugin is present by @BoD in https://github.com/apollographql/apollo-kotlin/pull/6766\r\n* FIX: fix a timeout leak in the default HttpEngine by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6762\r\n* DOCS: add linuxX64 as supported for apollo-runtime by @hrach in https://github.com/apollographql/apollo-kotlin/pull/6689\r\n* DOCS: Update `@defer` documentation by @calvincestari in https://github.com/apollographql/apollo-kotlin/pull/6751\r\n* UPDATE: Bump KGP to 2.2.20 by @BoD in https://github.com/apollographql/apollo-kotlin/pull/6716\r\n","publishedAt":"2025-11-13T17:33:51.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v5.0.0-alpha.3","media":[]},{"id":"rel_s5te4tbrGYv8Pk2R21Xlr","version":"v5.0.0-alpha.2","title":"v5.0.0-alpha.2","summary":"In this new alpha of v5, here are the main highlights:\r\n- WasmJs target added to GraphQL subscriptions\r\n- Experimental [`generateApolloEnums` option](...","content":"In this new alpha of v5, here are the main highlights:\r\n- WasmJs target added to GraphQL subscriptions\r\n- Experimental [`generateApolloEnums` option](https://github.com/apollographql/apollo-kotlin/issues/6243) to generate enums as a sealed hierarchy distinguishing known and unknown values\r\n- and a handful of bug fixes and improvements.\r\n\r\nYour feedback is greatly appreciated as you try the new version!\r\n\r\nTo migrate your project, please read the [migration guide](https://www.apollographql.com/docs/kotlin/v5/migration/5.0) (work in progress).\r\n\r\n## 👷‍♂️ All changes\r\n \r\n* [new] Add GraphQL subscriptions support for wasmJs target (#6637)\r\n* [new] Introduce `Service.generateApolloEnums` to generate enums with a `__Known` interface (#6611)\r\n* [new] Add generateApolloProjectIdeModel task (#6666)\r\n* [new] Introduce Service.pluginsArguments and relax the check for multiple plugins (#6622)\r\n* [fix] Added default Accept header to introspection query (#6616)\r\n* [fix] Fix error reporting on invalid documents (#6642)5\r\n* [fix] [Execution] Fix coercing variable values (#6644)\r\n* [fix] Normalize the order of arguments of checked definitions (#6650)\r\n* [fix] Make sure that the introspection endpoint property value is checked at execution time (#6657)\r\n* [fix] Use the more lenient dependencies API (#6667)\r\n* [fix] Do not silently discard network exceptions (#6669)\r\n* [upgrade] Use built-in Node `fetch` (#6674)\r\n\r\n## 💜 Contributors\r\n\r\nMany thanks to @pedromfmachado, @jvanderwee, @aryapreetam and @francescocervone for the contributions and help in this release 💜","publishedAt":"2025-08-21T15:31:08.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v5.0.0-alpha.2","media":[]},{"id":"rel_MHXl5NsjVDcJVRDDaZKL3","version":"v4.3.3","title":"v4.3.3","summary":"This is maintenance release that includes a few fixes.\r\n\r\n## 👷‍♂️ All changes\r\n\r\n* [fix] Normalize the order of arguments of checked definitions (#66...","content":"This is maintenance release that includes a few fixes.\r\n\r\n## 👷‍♂️ All changes\r\n\r\n* [fix] Normalize the order of arguments of checked definitions (#6651)\r\n* [fix] Make sure that the introspection endpoint property value is checked at execution time (#6658)\r\n* [fix] Do not silently discard network exceptions (#6671)\r\n\r\n## 💜 Contributors\r\n\r\nMany thanks to @francescocervone for the Gradle plugin fix 💜","publishedAt":"2025-08-21T13:54:28.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.3.3","media":[]},{"id":"rel_SLRYPvV8GvgobbG8J4BbM","version":"v4.3.2","title":"v4.3.2","summary":"Maintainance release to [fix](https://github.com/apollographql/apollo-kotlin/pull/6619) the `Accept:` header during introspection. Many thanks @pedrom...","content":"Maintainance release to [fix](https://github.com/apollographql/apollo-kotlin/pull/6619) the `Accept:` header during introspection. Many thanks @pedromfmachado for diving into this!\r\n\r\nThis release also contains infrastructure work:\r\n* the IJ plugin is now released separately from a [dedicated repository](https://github.com/apollographql/apollo-intellij-plugin).\r\n* the 5.x Gradle plugins will **not** be deployed to the [Gradle plugin portal](https://plugins.gradle.org/plugin/com.apollographql.apollo) and a disclaimer has been added. \r\n* the publishing code has been updated to the new [Central Portal API](https://central.sonatype.org/publish/publish-portal-api/).\r\n\r\n## What's Changed\r\n* [4.x] Remove IJ plugin by @BoD in https://github.com/apollographql/apollo-kotlin/pull/6578\r\n* [4.x] Make tests more robust to version changes by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6582\r\n* [4.x] Add a disclaimer to the Gradle Plugin Portal by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6584\r\n* [4.x] Added default Accept header to introspection query by @pedromfmachado in https://github.com/apollographql/apollo-kotlin/pull/6619\r\n* [4.x] Build: switch publication to the central portal by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6629\r\n* [4.x] Also publish 4.x snapshots by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6631\r\n* [4.x] Bump nmcp & librarian by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6632\r\n* [4.x] Do not deploy kdoc from release-4.x by @martinbonnin in https://github.com/apollographql/apollo-kotlin/pull/6633\r\n\r\n\r\n**Full Changelog**: https://github.com/apollographql/apollo-kotlin/compare/v4.3.1...v4.3.2","publishedAt":"2025-07-25T10:11:27.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.3.2","media":[]},{"id":"rel_qDzqzuks8n5WxqXjhDIo-","version":"v5.0.0-alpha.1","title":"v5.0.0-alpha.1","summary":"Small release to fix a publishing discrepency in the versions. Thanks @ychescale9 for the heads up!\r\n\r\n* [fix] Fix `can't resolve apollo-gradle-plugin...","content":"Small release to fix a publishing discrepency in the versions. Thanks @ychescale9 for the heads up!\r\n\r\n* [fix] Fix `can't resolve apollo-gradle-plugin-tasks` ([#6603](https://github.com/apollographql/apollo-kotlin/pull/6603))\r\n* [new] Warn on unused fragments ([#6601](https://github.com/apollographql/apollo-kotlin/pull/6601))\r\n","publishedAt":"2025-06-30T09:51:34.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v5.0.0-alpha.1","media":[]},{"id":"rel_WARCHh_DHTSZGTBjT9QDd","version":"v5.0.0-alpha.0","title":"v5.0.0-alpha.0","summary":"# Version 5.0.0-alpha.0\r\n\r\nThis is the first alpha release of version 5 \r\n\r\nThe package name stayed the same. Version 5 is aiming to be binary compati...","content":"# Version 5.0.0-alpha.0\r\n\r\nThis is the first alpha release of version 5 \r\n\r\nThe package name stayed the same. Version 5 is aiming to be binary compatibile with version 4 with a few exceptions (read more in the [migration guide](https://www.apollographql.com/docs/kotlin/v5/migration/5.0)). \r\n\r\nVersion 5.0 also includes new GraphQL features (default value coercion, schema coordinates), improves data builders and compiler plugin APIs amongst other things.\r\n\r\n## Read more \r\n* [migration guide draft](https://www.apollographql.com/docs/kotlin/v5/migration/5.0)\r\n* [v5 docs](https://www.apollographql.com/docs/kotlin/v5)\r\n\r\n\r\n## Changes\r\n\r\n**Infrastructure**:\r\n\r\n* [breaking] Remove ApolloIdlingResource ([#6492](https://github.com/apollographql/apollo-kotlin/pull/6492))\r\n* [breaking] Remove PackageNameGenerator and OperationOutputGenerator, replaced by compiler plugins ([#6494](https://github.com/apollographql/apollo-kotlin/pull/6494))\r\n* [breaking] Move internal testing code to an unpublished module ([#6449](https://github.com/apollographql/apollo-kotlin/pull/6449))\r\n* [breaking] Update deprecations for v5 ([#6496](https://github.com/apollographql/apollo-kotlin/pull/6496))\r\n* [upgrade] Bump ktor to 3.1.2 ([#6465](https://github.com/apollographql/apollo-kotlin/pull/6465))\r\n* [new] Move IJ plugin to its own repository ([#6574](https://github.com/apollographql/apollo-kotlin/pull/6574))\r\n* [new] Switch publication to the central portal ([#6581](https://github.com/apollographql/apollo-kotlin/pull/6581))\r\n\r\nGradle\r\n* [fix] Do not generate the version as const ([#6563](https://github.com/apollographql/apollo-kotlin/pull/6563))\r\n* [new] Switch the gradle plugin to gratatouille ([#6524](https://github.com/apollographql/apollo-kotlin/pull/6524))\r\n* [fix] Remove checkApolloVersion ([#6569](https://github.com/apollographql/apollo-kotlin/pull/6569))\r\n* [new] Introspection: add a hint that more details are available in the exception cause. ([#6590](https://github.com/apollographql/apollo-kotlin/pull/6590))\r\n\r\n**Compiler**:\r\n\r\n* [new] Add schema-transform API ([#6450](https://github.com/apollographql/apollo-kotlin/pull/6450))\r\n* [new] Allow to generate Data Builders outside the main source set ([#6485](https://github.com/apollographql/apollo-kotlin/pull/6485))\r\n* [breaking] Using @nonnull is now an error ([#6499](https://github.com/apollographql/apollo-kotlin/pull/6499))\r\n* [fix] Ignore scalars/enums in checkCapitalizedFields ([#6502](https://github.com/apollographql/apollo-kotlin/pull/6502))\r\n* [fix] Call DocumentTransform.transform after adding required fields ([#6510](https://github.com/apollographql/apollo-kotlin/pull/6510))\r\n* [fix] Add key fields to selections even when they're already selected with an alias ([#6503](https://github.com/apollographql/apollo-kotlin/pull/6503))\r\n* [fix] Transform the GraphQL documents before running validation ([#6511](https://github.com/apollographql/apollo-kotlin/pull/6511))\r\n* [new] Add key fields of possible types of interfaces and fragments ([#6515](https://github.com/apollographql/apollo-kotlin/pull/6515))\r\n* [new] Allow to register multiple Apollo Compiler plugins ([#6523](https://github.com/apollographql/apollo-kotlin/pull/6523))\r\n\r\n**Runtime**:\r\n\r\n* [new] Add cacheInterceptor() and autoPersistedQueriesInterceptor()  ([#6455](https://github.com/apollographql/apollo-kotlin/pull/6455))\r\n* [new] Add `ApolloCall.ignoreUnknownKeys` and `ApolloClient.Builder.ignoreUnknownKeys` ([#6473](https://github.com/apollographql/apollo-kotlin/pull/6473))\r\n* [fix] fix the batch size not respected issue ([#6528](https://github.com/apollographql/apollo-kotlin/pull/6528))\r\n* [fix] Fix losing response headers when using batch request ([#6538](https://github.com/apollographql/apollo-kotlin/pull/6538))\r\n\r\n**AST**:\r\n* [new] Add allowAddingDirectivesToExistingFieldDefinitions ([#6470](https://github.com/apollographql/apollo-kotlin/pull/6470))\r\n* [new] Implement schema coordinates ([#6560](https://github.com/apollographql/apollo-kotlin/pull/6560))\r\n\r\n**Execution**\r\n* [fix] Implement defaultValues coercion ([#6440](https://github.com/apollographql/apollo-kotlin/pull/6440))\r\n* [new] Add `JsonCoercing` ([#6471](https://github.com/apollographql/apollo-kotlin/pull/6471))","publishedAt":"2025-06-30T07:20:57.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v5.0.0-alpha.0","media":[]},{"id":"rel_mO3PHi0kFeL0kLh5k9qah","version":"v4.3.1","title":"v4.3.1","summary":"This is maintenance release that fixes an issue with Gradle task dependencies when using `connectToAndroidSourceSet()`.\r\n\r\nThis release also introduce...","content":"This is maintenance release that fixes an issue with Gradle task dependencies when using `connectToAndroidSourceSet()`.\r\n\r\nThis release also introduces an Enhanced Client Awareness feature that adds the version of the library to requests in the `extensions` object. This is useful for server-side analytics and debugging. This is enabled by default, and can be disabled by calling `sendEnhancedClientAwareness(false)` on your `ApolloClient.Builder`.\r\n\r\n## 💜 Contributors\r\n\r\nMany thanks to @calvincestari for the client awareness contribution 💜\r\n\r\n## 👷‍♂️ All changes\r\n\r\n* Backport IJ plugin changes from main (#6559)\r\n* simplify task wiring and fix propagating task dependencies when using connectToAndroidSourceSet() (#6564)\r\n* feature: Enhanced Client Awareness (#6567)\r\n","publishedAt":"2025-06-18T12:46:53.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.3.1","media":[]},{"id":"rel_nBNvEMMPPCKFmQsp6XzqY","version":"v3.8.6","title":"v3.8.6","summary":"Maintenance release with a fix for using persisted queries together with subscriptions #6283\r\n\r\n**Full Changelog**: https://github.com/apollographql/a...","content":"Maintenance release with a fix for using persisted queries together with subscriptions #6283\r\n\r\n**Full Changelog**: https://github.com/apollographql/apollo-kotlin/compare/v3.8.5...v3.8.6","publishedAt":"2025-06-12T14:21:51.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v3.8.6","media":[]},{"id":"rel_eHFIA8P9bGtRFNvoPd0dM","version":"v4.3.0","title":"4.3.0","summary":"# Version 4.3.0\r\n\r\nVersion 4.3.0 allows adding multiple compiler plugins and stabilizes `ApolloCompilerPlugin.beforeCompilationStep()` as the main ent...","content":"# Version 4.3.0\r\n\r\nVersion 4.3.0 allows adding multiple compiler plugins and stabilizes `ApolloCompilerPlugin.beforeCompilationStep()` as the main entry point for compiler plugins. You can read more in the [compiler plugins documentation page](https://www.apollographql.com/docs/kotlin/advanced/compiler-plugins).\r\n\r\nThis allows to move some cache-specific code generation logic to the [new normalized cache repo](https://github.com/apollographql/apollo-kotlin-normalized-cache) and better separate concerns. \r\n\r\nMoving forward, `ApolloCompilerPlugin.beforeCompilationStep()` and `ApolloCompilerRegistry.registerOperationIdsGenerator()` are considered stable because they play an important part in setting up [persisted queries](https://www.apollographql.com/docs/kotlin/advanced/persisted-queries). Other APIs are considered more advanced and will most likely stay unstable for the foreseeable future. \r\n\r\n## Contributors 💜\r\n\r\nMany thanks to @gnehz972 and @mengdd for their fixes about HTTP batching 💜\r\n\r\n## 👷‍♂️ All changes\r\n\r\n* Fix losing response headers when using batch request (#6538)\r\n* fix the batch size not respected issue (#6528)\r\n* prepare compiler plugins for 4.3 (#6549)\r\n* Allow to register multiple compiler plugins (#6546)\r\n* Add key fields to selections even when they're already selected with an alias (#6503) (#6544)\r\n* Ignore scalars/enums in checkCapitalizedFields (#6502) (#6543)\r\n* Call DocumentTransform.transform after processing (#6510) (#6512)\r\n\r\n","publishedAt":"2025-06-05T12:54:49.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.3.0","media":[]},{"id":"rel_ynvyKgkG7qQshxkPJrXHB","version":"v4.2.0","title":"v4.2.0","summary":"## Generate custom scalars as inline classes with `@map` and `@mapTo` (#6404)\r\n\r\nIt is now possible to configure the adapters to use with [scalars](ht...","content":"## Generate custom scalars as inline classes with `@map` and `@mapTo` (#6404)\r\n\r\nIt is now possible to configure the adapters to use with [scalars](https://www.apollographql.com/docs/kotlin/essentials/custom-scalars) by using the [`@map` directive](https://specs.apollo.dev/kotlin_labs/v0.5/#@map):\r\n\r\n```graphql\r\nextend schema @link(url: \"https://specs.apollo.dev/kotlin_labs/v0.5/\", import: [\"@mapTo\", \"@map\"])\r\n\r\nextend scalar Date @map(to: \"kotlinx.datetime.Instant\", with: \"com.apollographql.adapters.InstantAdapter\")\r\n```\r\n\r\nIf the `to` parameter is an [inline value class](https://kotlinlang.org/docs/inline-classes.html), use the `inlineProperty` parameter to have the generated code box/unbox the value. In that case, `with` needs to point to an adapter of the underlying type:\r\n\r\n```graphql\r\nextend scalar Timestamp @map(to: \"com.example.Timestamp\", with: \"com.apollographql.apollo.api.LongAdapter\", inlineProperty: \"ts\")\r\n```\r\n\r\nFor the common cases where the scalar can be represented as a built-in Kotlin type (String, Boolean, Int, Long, Float, Double), you can use [`@mapTo`](https://specs.apollo.dev/kotlin_labs/v0.5/#@mapTo) and the compiler infers the adapter and generates an inline value class automatically:\r\n\r\n```graphql\r\nextend scalar Length @mapTo(builtIn: Long)\r\n```\r\n\r\n## Scalar definitions in schemas downloaded from introspection (#6389)\r\n\r\nDownloading or converting an SDL schema from introspection now includes scalar definitions.\r\nThis is required for clients to get a [full view of the schema](https://github.com/graphql/graphql-wg/blob/main/rfcs/FullSchemas.md).\r\n\r\n## Support for `@disableErrorPropagation`\r\n\r\nApollo Kotlin now automatically adds [`@disableErrorPropagation`](https://github.com/graphql/nullability-wg/discussions/85) if your server supports it and you opted in `@catchByDefault` in your schema extensions. This allows to use non-null types more liberally and still get support for partial data.\r\n\r\nSee https://github.com/graphql/graphql-js/pull/4348 and https://github.com/graphql-java/graphql-java/pull/3772\r\n\r\n## Contributors 💜\r\n\r\nMany thanks to @bobbysothebys, @jvanderwee, @dhritzkiv, @lwasyl and @rohandhruva for all the contributions and help in this release 💜 \r\n\r\n## 👷‍♂️ All changes\r\n\r\n* [intellij-plugin] Fix MemoryCache package name (#6383)\r\n* [intellij-plugin] Rover: always pass path to supergraph.yaml if present (#6384)\r\n* [intellij-plugin] Make 'Download Schema action' consider deep subprojects (#6394)\r\n* [intellij-plugin] Fix a crash when invoking the 'missing `@link`' quickfix (#6402)\r\n* [intellij-plugin] Use configured Gradle JVM when executing tasks (#6425)\r\n* [intellij-plugin] Fix pulling normalized cache for recent AS (#6437)\r\n* [intellij-plugin] Use a coroutines to prevent an IllegalStateException (#6460, #6487)\r\n* [intellij-plugin] Use coroutines in ApolloCodegenService (#6477, #6487)\r\n* [intellij-plugin]Use incubating cache 0.0.8 and show errors in cache viewer (#6439)\r\n* [runtime] Use ephemeral NSURLSessionConfiguration by default (#6376)\r\n* [runtime] Add toString() method to ApolloResponse (#6409)\r\n* [runtime] Better error messages for ApolloClient.Builder() (#6424)\r\n* [runtime] Add Swift interceptor iOS test and allow `HttpInterceptor.intercept()` to throw `Throwable` (#6403)\r\n* [runtime] Add cacheInterceptor() and autoPersistedQueriesInterceptor() (#6456)\r\n* [runtime] Revert behaviour change (#6482)\r\n* [runtime] Introduce `@DataBuilderDsl` (#6484)\r\n* [ast] Simplify semanticEquals (#6388)\r\n* [ast] Remove `withBuiltInDefinitions()` and add flag to dump scalar definitions in SDL (#6389)\r\n* [ast] Refactor schema validation (#6396)\r\n* [ast] Better `@link` handling (#6417)\r\n* [ast] Add support for `@disableErrorPropagation` (#6414)\r\n* [compiler] Add `@map` and `@mapTo` (#6404)\r\n* [compiler] Inline classes, fix using inline classes in input positions (#6427)\r\n* [compiler] Java Codegen: add some `@SuppressWarnings(\"unchecked\")` (#6434)\r\n* [gradle-plugin] Make logLevel property internal to not take it into account when caching (#6399)\r\n* [gradle-plugin] expose regular configurations for multi-module projects (#6408)\r\n* [gradle-plugin] Keep the `@RequiresOptIn` annotation in the Gradle plugin (#6406)\r\n* [gradle-plugin] Remove possible eager task creation (#6442)\r\n* [infra] Track `@ApolloInternal` in public ABI (#6407)\r\n* [infra] Track `@ApolloExperimental` symbols in public API (#6416)\r\n* [infra] Cache: add a 'large list' benchmark (#6432)\r\n* [infra] Remove a bunch of warnings (#6441)\r\n* [all] Bump Kotlin to 2.1.10 (#6370)\r\n* [all] Bump Kotlin to 2.1.20 (#6431)\r\n","publishedAt":"2025-04-28T14:29:21.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.2.0","media":[]},{"id":"rel_zSvdyEnpNyZGaa8SX3GIq","version":"v4.1.1","title":"v4.1.1","summary":"## Kotlin 2.1.0 (#6291)\r\n\r\nThe artifacts are now compiled with [Kotlin 2.1.0](https://kotlinlang.org/docs/whatsnew21.html). This change should be tran...","content":"## Kotlin 2.1.0 (#6291)\r\n\r\nThe artifacts are now compiled with [Kotlin 2.1.0](https://kotlinlang.org/docs/whatsnew21.html). This change should be transparent for JVM and Android users thanks to [`languageVersion`](https://kotlinlang.org/docs/compatibility-modes.html) but [requires klib consumers (native + JS) to update their KGP version to 2.1.0](https://github.com/JetBrains/kotlin/blob/8add2e3b98904f34ce5db575e9543cb3d3c9ec0b/compiler/util-klib/KotlinAbiVersionBumpHistory.md?plain=1#L3-L5).\r\n\r\n## Rover LSP support in the IntelliJ plugin (#6274)\r\n\r\nThe IntelliJ plugin now has a dedicated mode for backend developers that uses [Rover](https://github.com/apollographql/rover) LSP ([Language Server Protocol](https://en.wikipedia.org/wiki/Language_Server_Protocol)) to parse federation and connectors directives. This mode is only available when using IntelliJ Ultimate and other IDEs with LSP support. It is recommended for subgraphs authors.\r\n\r\n## Gradle isolated projects support (#6351)\r\n\r\nThis release supports [Gradle isolated projects](https://docs.gradle.org/current/userguide/isolated_projects.html) for shorter configuration times.\r\n\r\n## 💙💙 Contributors 💙💙\r\n\r\nMany thanks to @jvanderwee, @varahash, @whyoleg, @StylianosGakis and @scana for all the contributions and help in this release !\r\n\r\n## 👷‍♂️ All changes\r\n\r\n* [all] Do not set the license URL in the POMs (#6247)\r\n* [all] Bump Kotlin to 2.1.0 (#6291)\r\n* [all] Bump atomicfu (#6245)\r\n* [intellij-plugin] Play nice with IDEs without Kotlin/Gradle (#6358)\r\n* [intellij-plugin] Reduce usage of GradleExecutionHelper (#6355)\r\n* [intellij-plugin] Use our own executeOnPooledThread instead of Android Plugin's (#6310)\r\n* [intellij-plugin] Make Java and Kotlin dependencies optional (#6304)\r\n* [intellij-plugin] Pass arguments to rover (#6303)\r\n* [intellij-plugin] Move Rover settings to own section and add note about needing v0.27.0+ (#6278)\r\n* [intellij-plugin] Remove untilBuild (#6279)\r\n* [intellij-plugin] Add support for the Apollo LSP via Rover (#6274)\r\n* [intellij-plugin] Don't reference AdbShellCommandsUtil.executeCommandBlocking that's been removed (#6268)\r\n* [intellij-plugin] Make verifyPlugin fail on certain problems (#6256)\r\n* [intellij-plugin] Do not use internal symbol (#6255)\r\n* [intellij-plugin] Add explicit dependency to com.intellij.modules.json (#6254)\r\n* [gradle-plugin] Add a fail-safe mode to disable 2-step introspection and use minimal introspection query (#6360)\r\n* [gradle-plugin] Isolated Projects support (#6351)\r\n* [gradle-plugin] expose the outgoing variants (#6329)\r\n* [gradle-plugin] Better Gradle error message (#6326)\r\n* [gradle-plugin] Fix classloader caching. Many thanks @scana for catching this (#6309)\r\n* [gradle-plugin] Manage our classloaders manually (#6305)\r\n* [gradle-plugin] Only call `onSchema()` once in multi-module scenrios (#6252)\r\n* [runtime] Copy executionContext inside HttpRequest.newBuilder (#6350)\r\n* [runtime] Apple HttpEngine: lock the handlers map (#6348)\r\n* [runtime] Allow to initialize WebSocketEngine lazily (#6290)\r\n* [runtime] Remove CloseableBackgroundDispatcher and bump coroutines version (#6286)\r\n* [runtime] Override JsonNumber.toString() (#6273)\r\n* [runtime] Implement ApolloWebSocketClosedException on darwin targets and update docs (#6275)\r\n* [ast] Make deprecation.reason non-nullable (#6311)\r\n* [ast] Allow multiple `@link` schema extensions (#6284)\r\n* [normalized-cache] Add ApolloStore.ALL_KEYS to notify all watchers (#6337)\r\n* [http-cache] HTTP cache: do not remove cached entries on transport errors (#6314)\r\n* [execution] Add apollo-execution (#6356)\r\n","publishedAt":"2025-01-24T12:04:42.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.1.1","media":[]},{"id":"rel_9ZlONvLZKngTAQIrfUD2T","version":"v4.1.0","title":"v4.1.0","summary":"### Ktor 3.0.0\r\n\r\nVersion 4.1.0 updates usages of Ktor from 2.3.11 to 3.0.0:\r\n\r\n* If you are using `apollo-runtime-js` or `apollo-debug-server-jvm`, y...","content":"### Ktor 3.0.0\r\n\r\nVersion 4.1.0 updates usages of Ktor from 2.3.11 to 3.0.0:\r\n\r\n* If you are using `apollo-runtime-js` or `apollo-debug-server-jvm`, you need to update your app to Ktor 3.0.0+ at the same time as updating to Apollo 4.1.0 (`apollo-debug-server-android` is unaffected).\r\n* If you are using the deprecated `apollo-mockserver` or `apollo-ktor-support` from this repo, you need to update to the [new coordinates](https://www.apollographql.com/docs/kotlin/migration/4.0#moved-artifacts).\r\n\r\nAll other cases are unaffected. In particular, `apollo-runtime` on Android and iOS uses OkHttp and NsUrlConnection respectively and is not impacted by the Ktor update.\r\n\r\nYou can read more details in the [pull request](https://github.com/apollographql/apollo-kotlin/pull/6214).\r\n\r\n### New media type: `application/graphql-response+json`\r\n\r\n`application/graphql-response+json` is a new media type being introduced by the [GraphQL over HTTP draft](https://graphql.github.io/graphql-over-http/draft/). It allows differentiating a valid GraphQL response from an error JSON response that could be transmitted by a cache or proxy in the HTTP chain. \r\n\r\nIf your server uses `application/graphql-response+json` and returns non-2xx response, Apollo Kotlin will now parse those responses and expose `data` and `errors` instead of returning an `ApolloHttpException` before.\r\n\r\n### K2 support for the IntelliJ plugin\r\n\r\nThe IntelliJ plugin is now compatible with K2 (#6150)\r\n\r\n### Removed `apollo-mockserver` and `apollo-ktor-support`\r\n\r\n* `apollo-mockserver` is now at `com.apollographql.mockserver:apollo-mockserver:0.1.0` and developed at https://github.com/apollographql/apollo-kotlin-mockserver\r\n* `apollo-ktor-support` is now at `com.apollographql.ktor:apollo-engine-ktor:0.1.0` and developed at https://github.com/apollographql/apollo-kotlin-ktor-support/\r\n\r\n### 👷‍♂️ All changes\r\n\r\n* [all] Update kotlinpoet to 2.0.0 (#6215)\r\n* [all] Update to Ktor 3 (#6214)\r\n* [all] Remove `apollo-mockserver` and `apollo-ktor-support` (#6215)\r\n* [all] Remove mockserver as a dependency of apollo-testing-support (#6218)\r\n* [ast] Do not escape slashes in single quoted strings (#6190)\r\n* [runtime] Add support for application/graphql-response+json (#6170)\r\n* [runtime] Do not call experimental webSocket() method re-entrently (#6197)\r\n* [debug server] Remove Ktor dependency from apollo-debug-server JVM (#6224)\r\n* [codegen] Do not add internal to private members (#6213)\r\n* [codegen] Fix name clash in data builder names when two types differ only by their case (#6195)\r\n* [gradle plugin] Allow null in KSP arguments for Apollo Compiler Plugins (#6200)\r\n* [gradle plugin] Do not log the full introspection JSON (#6199)\r\n* [gradle plugin] Deprecate TargetLanguage.KOTLIN_1_5 (#6193)\r\n* [IJ Plugin] Make the cache viewer understand the blob db format (#6187)\r\n* [IJ Plugin] Bump IJ Platform Gradle Plugin to 2.0.1 (#6185)\r\n* [IJ Plugin] Migrate to the K2 compatible Analysis API (#6150)\r\n* [IJ Plugin] Schedule the GraphQL configuration reload early (#6228)\r\n* [IJ Plugin] Rename related generated code when renaming an Operation/Fragment (#6227)\r\n* [IJ Plugin] Only highlight the name of unused operations, rather than the whole operation (#6226)","publishedAt":"2024-11-05T11:19:23.000Z","url":"https://github.com/apollographql/apollo-kotlin/releases/tag/v4.1.0","media":[]}],"pagination":{"page":1,"pageSize":20,"totalPages":5,"totalItems":100},"summaries":{"rolling":null,"monthly":[]}}