Skip to content

v4.0.0-beta.5

Compare
Choose a tag to compare
@martinbonnin martinbonnin released this 12 Mar 14:23
· 366 commits to main since this release
af6990c

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 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. 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 and apollographql/specs#48). If you are using @semanticNonNull or @catch you should bump your @link directives to use 0.3. See the nullability documentation page 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)
  • Multi-version KDoc: The published KDoc now includes both v3 and v4 versions.

Many thanks to @ribafish, @molundb, @mboyd1993, @rohandhruva and @baconz for their help in this release 💙!

👷‍ All changes

  • [mockserver] Add MockServer.enqueueError() and MockServer.assertNoRequest() (#5694)
  • [runtime] Implement NetworkMonitor for apple platforms (#5691)
  • [runtime] Add NetworkMonitor (#5690)
  • [runtime] Add ApolloClient.retryOnError(Boolean) (#5685)
  • [websockets-network-transport-incubating] Publish apollo-websocket-network-transport-incubating (#5693)
  • [normalized-cache-incubating] Use Store Cache and merge optimistic cache with Memory cache (#5651)
  • [runtime] Fix ApolloClient.Builder if the Builder is mutated by the caller after calling build() (#5683)
  • [websockets-network-transport-incubating] Introduce incubating WebSocketNetworkTransport (#5678)
  • [websockets-network-transport-incubating] Introduce incubating WebSocketEngine (#5676)
  • [runtime] Don't assume a single emission in AutoPersistedQueryInterceptor (#5677)
  • [runtime] Use expect funs instead of expect classes for DefaultHttpEngine (#5672)
  • [runtime] Fix JS websocket throws an ISE on error on Safari and Firefox (#5670)
  • [runtime] Use the streaming HttpEngine by default on Apple (#5671)
  • [intellij-plugin] Only send telemetry for Apollo Kotlin projects (#5663)
  • [gradle-plugin] Use Gradle normalization instead of ours (#5636)
  • [execution] Fix converting int and floats to their Kotlin value (#5637)
  • [runtime] Add ApolloClient.Builder(ApolloHttpCache) (#5638)
  • [gradle-plugin] Use com.android.lint Gradle rules (#5639)
  • [all] Update coroutines to 1.8.0 (#5626)
  • [runtime] Allow buildPostBody to write operation extensions (#5630)
  • [compiler] Add support for @catch on fieldDefinitions, interfaces and objects (#5623)
  • [all] Bump Kotlin to 2.0.0-Beta4 (#5624)
  • [normalized-cache-incubating] Cache lock changes (#5608)
  • [rx-support] Keep rx-support as DeprecationLevel.Error (#5610)
  • [gradle-plugin] Add dependsOn(dependencyNotation, bidirectional) (#5606)
  • [gradle-plugin] Fix a regression in alwaysGenerateTypesMatching where all types would be generated by default (#5605)
  • [️compiler] Add Apollo compiler plugin API (#5604, #5599, #5591, #5589, #5588, #5582, #5573, #5561, #5560, #5557, #5556, #5554, #5516, #5589)
  • [intellij-plugin] Publish the IJ plugin snapshots to the JetBrain Marketplace (#5600)
  • [runtime] HTTP Headers: remove X-APOLLO-OPERATION-NAME, X-APOLLO-OPERATION-ID and the multipart boundary (#5533)
  • [gradle-plugin] use Worker API and ServiceLoader (#5590)
  • [gradle-plugin] deprecate schemaFile and sourceFolder (#5581)
  • [gradle-plugin] configuration cache and lazy properties for schema files (#5580)
  • [️compiler] Track semanticNonNull spec (#5577)
  • [gradle-plugin] bump minimum required Gradle version to 8.0 (#5579)
  • [ast] Validate repeatable directives (#5574)
  • [compiler] Don't automatically add key fields to union selections (#5562)
  • [runtime] Fix disabling batching by default (#5552)
  • [gradle-plugin] Select all types in pre-introspection query (#5547)
  • [normalized-cache-api] Remove unnecessary suspend from ApolloStore functions (#5541)
  • [all] One more step towards K2 but blocked on https://youtrack.jetbrains.com/issue/KT-21846 (#5536)
  • [all] Target Java17 for Android .aars and Java11 for apollo-gradle-plugin.jar (#5534)
  • [compiler] Remove old generateAsInternal code (#5526)
  • [compiler] Lock down apollo-compiler API (#5524)
  • [normalized-cache-sqlite] Use windowSizeBytes argument of AndroidSqliteDriver (#5523)
  • [intellij-plugin] Strip Apollo client directives before executing operations (#5517)
  • [execution] Fix converting GraphQL Float values to Kotlin (#5511)
  • [intellij-plugin] Don't show a visible task with progress bar while fetching the Apollo Conf (#5501)
  • [intellij-plugin] Inspection: missing directive import (#5494)
  • [intellij-plugin] Use recent version of slf4j to avoid a classloader issue (#5495)
  • [normalized-cache-sqlite] Allow custom SupportSQLiteOpenHelper.Callback in the SqlNormalizedCacheFactory (#5488)
  • [mockserver] Allow to set the content-type of String responses (#5489)
  • [debug-server] Start LocalServerSocket on background thread, and handle exception (#5493)
  • [cli-incubating] Publish apollo-cli-incubating again (#5486)
  • [intellij-plugin] Don't suggest v4 migration until it is stable (#5477)
  • [tooling] bump version of Apollo to 4.0.0-beta.3 (#5452)
  • [debug-server] Don't crash if ApolloDebugServerInitializer is not run (e.g. in unit tests) (#5484)
  • [intellij-plugin] Add debugging logs around the cache viewer (#5475)
  • [debug-server] Debug server: don't crash when a client has no caches (#5479)
  • [gradle-plugin] add apollo.deps (#5460)