Library / SDK
GetStream/stream-chat-android avatar
GetStream/stream-chat-android

The Stream Chat Android SDK ships six artifacts, and only two of them are chat UI

:speech_balloon: Android Chat SDK ➜ Stream Chat API. UI component libraries for chat apps. Kotlin & Jetpack Compose messaging SDK for Android chat

1,667 stars320 forksKotlinNOASSERTION

At a glance

What is it?
GetStream's Android SDK is a multi module Kotlin project with a low level client, an offline layer, two competing UI toolkits and two AI artifacts, published to Stream's own Maven repository. Choosing an entry point means deciding how much of the screen you own.
Who is it for?
Adopt the Compose SDK for a new Android chat feature and the XML UI Components only where an existing view based screen still has to host chat, since the README recommends Compose for all new applications and warns that the Compose SDK is Kotlin only. Do not adopt the low level client unless you intend to build your own screens, because offline support and the UI modules are the parts that carry the retry and caching behaviour.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Two low level artifacts and two UI toolkits

The SDK is described as a low-level chat SDK plus a set of reusable UI components, with the stated intent that most users start with the UI components and drop to the lower level API when they need to customise things.

The two low level artifacts are the Client, described as a low-level client for making API calls and receiving chat events, and Offline support, which provides local caching and automatic retries exposed through Flow and LiveData APIs.

The two UI SDKs sit on top. Compose UI Components are reusable, modular Composables for conversations and channel lists. UI Components are the XML based Views, described as reusable and customizable chat Views, for older UI solutions.

Both UI options cover the same ground, which is why choosing between them is the first decision rather than a detail. The README's position is explicit: it released the Compose components one day after Jetpack Compose 1.0, describes them as mature and stable enough to recommend for all new applications, and points anyone wanting high customisation and performance at the Compose SDK.

Kotlin and Java are both supported, with a strong recommendation to use Kotlin. The exception is spelled out: the Compose SDK supports only Kotlin, because Compose uses Kotlin compiler plugins to process the UI. That is a hard constraint on a Java codebase with existing chat screens.

Artifact sizes are published, with a caveat attached

The README carries size badges for each published artifact: the client at 6.20 MB, the UI components at 11.51 MB, the Compose module at 13.18 MB, the AI compose components at 2.03 MB and the on-device model at 1.66 MB.

The caveat under them is the part worth carrying into your evaluation. The sizes reflect the maximum possible addition if none of the internal dependencies are already in your app, and in most cases the actual impact will be smaller.

That means these numbers are an upper bound on a cold dependency graph, not a forecast for your build. If your app already pulls in the Compose runtime and the Kotlin coroutines stack, the Compose artifact's marginal cost is lower than 13.18 MB suggests.

The AI artifacts are worth separating from the rest, because they are the ones you can leave out. The README states that no other Chat SDK artifact depends on them.

The minimum floor is API 21, per the badge, which sets the oldest Android version the SDK will run on.

The two AI artifacts do different jobs

For AI assistants there are two separate artifacts, and the descriptions make the split clear.

AI Compose Components are Composables for AI replies: streaming text, reasoning and tool-call steps, tool approvals and a composer. That is a UI layer for showing what an assistant is doing, including the intermediate steps, and for handling the case where the app must ask the user to approve a tool call.

The on-device model is a model on the device, such as Gemini Nano, to answer when your agent cannot. That is a fallback path, not a replacement: the framing is answering when the backend agent is unavailable, which is a resilience feature rather than a local inference strategy.

Neither is required to ship chat. Since no other artifact depends on them, a team evaluating the SDK for messaging can leave both out and add them when an assistant feature is actually scheduled, which is the cleanest way to avoid paying for a dependency before it is used.

Installation goes through Stream's own Maven repository

Releases are published to the Stream Maven repository, and the README's instruction is to add it in settings.gradle.kts:

kotlin
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven("https://jitpack.io")
        maven("https://stream-io-repo.com")
    }
}

Earlier versions remain available from Maven Central, which is the escape hatch if a repository host blocks the Stream domain or if you need a pinned older release.

The repository list also includes jitpack.io, which is needed because some artifacts are published through JitPack. There is a jitpack.yml at the repository root and the project publishes its own samples as modules.

The starting point for learning is a tutorial rather than the API docs. The Compose Chat Messaging Tutorial is the recommended entry and covers frequently required changes; the Android Chat Messaging Tutorial is the XML equivalent for older UI toolkits. Sample projects exist for the client, the UI components, the Compose components and the AI compose components, and the API reference is generated with Dokka.

Offline support is the layer that changes your failure behaviour

The offline artifact is described as local caching with automatic retries, surfaced through Flow and LiveData. That is the part of the SDK with architectural consequences rather than visual ones.

Caching means a channel list and message history survive a process death, which changes what your UI has to handle:. Automatic retries mean transient failures are handled by the SDK instead of by each screen.

Flow and LiveData together is a compatibility choice rather than an endorsement of both. LiveData is what existing Android code uses and what survives a configuration change without extra work; Flow is what new Compose code consumes. Supporting both means the SDK meets an existing codebase rather than requiring a migration.

If you take only the Client artifact and build your own screens, you also take on the retry and caching behaviour, because the README describes offline support as a separate artifact rather than as part of the client.

Licensing, cost and what is not in this repository

Two commercial facts sit next to the technical ones.

The SDK is free for most side and hobby projects under a stated threshold: the project or company needs fewer than five team members and under $10k in monthly revenue. Pricing detail lives on the vendor's chat pricing page, and the README links it rather than reproducing terms. This is a commercial SDK with a commercial service behind it, and the client talks to that service, so the licence of the code is not the whole question.

The repository itself is classified as carrying a custom licence that GitHub cannot categorise, with the LICENSE file at the root as the authority, so read that file rather than the badge.

On the engineering side, the repository shows how large this project is. There are modules for the client, core, offline support, both UI toolkits, UI common and guides, a markdown transformer, preview data, AI compose, on-device AI, benchmark and two test suites including end to end tests. Build tooling is Gradle with a checked-in wrapper, plus fastlane, a Gemfile for release automation, dokkasaurus_filter.json for docs, AGENTS.md and CLAUDE.md alongside CONTRIBUTING.md and SECURITY.md.

The default branch is develop, and the release cadence is visible in the tag list: v6.46.0 on 2026-10-14, v6.45.4 on 2026-10-13 and v6.45.3 on 2026-10-09, with the last push on 2026-10-16.

Editorial conclusion

Adopt the Compose SDK for a new Android chat feature and the XML UI Components only where an existing view based screen still has to host chat, since the README recommends Compose for all new applications and warns that the Compose SDK is Kotlin only. Do not adopt the low level client unless you intend to build your own screens, because offline support and the UI modules are the parts that carry the retry and caching behaviour. Verify first that your build can reach https://stream-io-repo.com in dependencyResolutionManagement, since releases are published there and earlier versions live on Maven Central instead.

Frequently asked questions

Which Stream Chat Android artifact should a new project use?

The Compose UI Components. The README says the Compose components are mature and stable enough to recommend for all new applications, and points to them for customisation and performance. The XML based UI Components remain for older view based screens.

How do I add the Stream Chat Android SDK to a Gradle build?

Add the Stream Maven repository in settings.gradle.kts with maven("https://stream-io-repo.com") inside dependencyResolutionManagement, alongside google(), mavenCentral() and the jitpack.io entry. Earlier versions remain available from Maven Central.

Does the Stream Chat Android SDK support Java?

The SDK supports both Kotlin and Java, though the README strongly recommends Kotlin. The Compose SDK is Kotlin only, because Compose uses Kotlin compiler plugins to process the UI.

What does the offline support artifact provide?

Local caching and automatic retries, exposed through Flow and LiveData APIs. It is a separate artifact from the low level client, so building custom screens on the client alone means owning retry and caching behaviour yourself.

What are the two AI artifacts in the Stream Chat Android SDK?

AI Compose Components, which are Composables for AI replies including streaming text, reasoning and tool call steps, tool approvals and a composer, and an on-device model such as Gemini Nano used to answer when your agent cannot. No other Chat SDK artifact depends on either of them.

Official sources

  1. GetStream/stream-chat-android on GitHub
  2. Issues
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/getstream-stream-chat-android.svg)](https://hysenlabs.com/projects/getstream-stream-chat-android)

Was this useful?