Modules


Apollo Kotlin is highly modular, making it easy to only include the features that you use and exclude the others, keeping your binary size and compile times small.

All the modules are documented in the KDoc API reference

Main modules

apollo-annotations

apollo-annotations is a very small module that contains @ApolloExperimental and other annotations mainly useful for handling API lifecycle.

It is an API dependency of most of the other modules.

apollo-api

apollo-api contains the bare minimum symbols to compile the generated code and parse responses.

It does not contain any networking or caching code. For a more complete artifact, see apollo-runtime.

See "Using the models without apollo-runtime" for how to use apollo-api.

apollo-ast

apollo-ast contains code to parse GraphQL documents and manipulate their Abstract Syntax Tree.

See "Apollo AST" for how to use apollo-ast.

apollo-compiler

apollo-compiler is the low level compiler API used by apollo-gradle-plugin.

apollo-compiler uses JavaPoet and KotlinPoet to generate Java and Kotlin models from GraphQL operations.

apollo-compiler is usually consumed through Gradle or Maven plugins. It also contains ApolloCompilerPlugin.

See "Apollo Compiler plugins" for how to develop compiler plugins.

apollo-debug-server

apollo-debug-server is a server that serves your normalized cache to the IntelliJ/Android Studio plugin.

apollo-gradle-plugin

apollo-gradle-plugin contains the Apollo Gradle plugin.

This module shadows and relocates its runtime dependencies to avoid classpath issues. This can make debugging harder in some cases.

See apollo-gradle-plugin-external for a version of apollo-gradle-plugin that does not shadow its dependencies.

See "Gradle Plugin Configuration" for how to use the Gradle plugin.

apollo-gradle-plugin-external

apollo-gradle-plugin-external contains the Apollo Gradle plugin.

This module does not shadow its runtime dependencies, making it more prone to Gradle classpath issues.

See apollo-gradle-plugin for a version of apollo-gradle-plugin-external that shadow its dependencies.

See "Gradle Plugin Configuration" for how to use the Gradle plugin.

apollo-http-cache

apollo-http-cache is a HTTP cache for your GraphQL operations. Compared to a regular HTTP cache, it also caches POST requests.

See "HTTP cache" for how to use the HTTP cache

apollo-normalized-cache

apollo-normalized-cache contains ApolloStore and ApolloCacheInterceptor. It bridges ApolloClient and ApolloNormalizedCache.

See "Normalized Caches" for how to use the normalized cache.

apollo-normalized-cache-api

apollo-normalized-cache-api is the low-level cache. It knows nothing about coroutines and/or apollo-runtime and contains a memory implementation of NormalizedCache.

Most of the time, use apollo-normalized-cache instead.

See "Normalized Caches" for how to use the normalized cache.

apollo-normalized-cache-sqlite

apollo-normalized-cache-sqlite contains an implementation of NormalizedCache that uses SQLite to persist the data across app restarts.

See "Normalized Caches" for how to use the normalized cache.

apollo-runtime

apollo-runtime contains ApolloClient, networking code to execute your queries and subscriptions. This is the main entry point.

See "Get Started" for how to instantiate and use an ApolloClient.

apollo-testing-support

apollo-testing-support contains:

  • QueueTestNetworkTransport and MapTestNetworkTransport for testing without a mock server.

  • a set of helper functions used for Apollo tests. They were never really intended to become public and will be removed in a future version. These symbols are marked as deprecated. If you are using them, copy paste them in your project.

See "Mocking GraphQL responses" for how to use test network transports.

Deprecated modules

These modules are deprecated and will be removed in a future version.

apollo-adapters (DEPRECATED)

apollo-adapters contains adapters for common date and big decimal GraphQL scalars.

This module is deprecated and moved to the Apollo Galaxy. See the Apollo Galaxy page for more details.

apollo-api-java (DEPRECATED)

apollo-api-java contains the symbols needed to compile the Java models.

This module is deprecated and moved to the Apollo Galaxy. See the Apollo Galaxy page for more details.

apollo-engine-ktor (DEPRECATED)

apollo-engine-ktor is an implementation of HttpEngine and WebSocketEngine that uses Ktor.

This module is deprecated and moved to the Apollo Galaxy. See the Apollo Galaxy page for more details.

apollo-idling-resource (DEPRECATED)

apollo-idling-resource contains an Espresso IdlingResource that monitors calls to your GraphQL API.

This module is deprecated as we recommend you should wait for your UI to change instead. See this article about ways to do so.

apollo-mockserver (DEPRECATED)

apollo-mockserver is a HTTP server for your tests. It supports multiplatform and websockets.

The API is minimal and performance is a non-goal. Do not use for production APIs.

This module is deprecated and moved to the Apollo Galaxy. See the Apollo Galaxy page for more details.

apollo-runtime-java (DEPRECATED)

apollo-runtime-java is an implementation of ApolloClient that doesn't use coroutines and more generally is more friendly for Java callers.

This module is deprecated and moved to the Apollo Galaxy. See the Apollo Galaxy page for more details.

apollo-rx2-support (DEPRECATED)

apollo-rx2-support provides thin wrappers around kotlinx-coroutines-rx2.

This module is deprecated and will be removed in a future version.

apollo-rx3-support (DEPRECATED)

apollo-rx3-support provides thin wrappers around kotlinx-coroutines-rx3.

This module is deprecated and will be removed in a future version.

apollo-rx2-support-java (DEPRECATED)

apollo-rx2-support-java provides adapter from ApolloCall to their RxJava3 equivalent.

This module is deprecated and moved to the Apollo Galaxy. See the Apollo Galaxy page for more details.

apollo-rx3-support-java (DEPRECATED)

apollo-rx3-support-java provides adapter from ApolloCall to their RxJava3 equivalent.

This module is deprecated and moved to the Apollo Galaxy. See the Apollo Galaxy page for more details.

Internal modules

These modules are published for technical reasons only. Most of their symbols are @ApolloInternal and they might be removed at any time. Avoid using them.

apollo-mockserver (INTERNAL)

apollo-mpp-utils contains a few utilities for working with multiplatform projects.

As of June 2024, it only contains currentTimeMillis. In most cases, we should replace that with kotlin.time.TimeMark but it's still used in HttpInfo as absolute timestamps, and we can't remove it just yet.

This module is published for technical reasons only. Do not use directly.

apollo-tooling (INTERNAL)

apollo-tooling contains APIs to work with GraphQL schemas and operations as well as the GraphOS API. It is used from the CLI and Gradle plugin

This module is published for technical reasons only. Do not use directly.

Feedback

Edit on GitHub

Forums