Skip to main content
Version: v6


The Stream Chat Android SDK enables you to easily build any type of chat or messaging experience for Android, either in Kotlin or Java.


The fastest way to get started with the SDK is by trying the Android In-App Messaging Tutorial. If you're using Jetpack Compose, see the Compose In-App Messaging Tutorial instead.

This section provides an overview of the SDK, explains the basic concepts, and shows you how to get started with building chat features.

The Client section contains guides on common tasks you might want to perform in the low level APIs.

The UI Components section describes the ready-to-use Android Views provided by the SDK, while the Compose UI Components section showcases our modular Jetpack Compose UI implementation.

There are five major components in the SDK that you can include in your app:


The client library is a low-level wrapper around the Stream Chat API. It lets you authenticate users, handle events, and perform operations such as creating channels and sending messages. Its entry point for all of these capabilities is the ChatClient class.

It also contains all the basic model objects you'll interact with when using Stream Chat, such as User, Channel, or Message.


The state library is a plugin that gives you the possibility to observe data in a reactive way through StateFlows. It also adds a sync feature which handles re-sending messages, reactions, and syncing other actions the user had performed while offline.


The state plugin doesn't add a persistence layer.
Consider using it together with OfflinePlugin.

This plugin exposes easy-to-use StateFlow objects containing the loading state, the list of channels available to the current user and more. It also contains information on any individual channel such as the messages inside it, users currently typing, all channel members and more. See State for more details.

If you want to build a custom UI for Stream Chat, you can build it on top of the state library.

Offline Support

A great chat solution should be capable of caching data and handling network connection loss.
The offline support is a plugin that implements such capabilities and provides the following benefits:

  • Decreases initial load times, especially when the network connection is poor.
  • Enables the user to see cached channels and messages while offline.
  • Enables the user to perform actions such as sending messages and reactions while offline.

See Offline Support for more details.

UI Components

The UI Components library includes pre-built Android Views to easily load and display data from the Stream Chat API. These include a Channel List and a Message List, a Message Composer View, and more. See the UI Components Getting Started page for more details.

This library is built on top of the state library, and offers the quickest integration of Stream Chat into an Android application. It also offers a variety of theming options to make it fit your app's needs.

You can see the UI Components in action by checking out the UI Components Sample App, available in the GitHub repository.

Compose UI Components

The Compose UI Components library is a chat UI implementation built from scratch with Jetpack Compose. It contains modular Composable functions for building channel lists, messaging screens, and more.

This is also built on top of the state library, and offers easy integration of Stream Chat into a Compose-based Android application. It's also highly modular and customizable.

Check out the Compose implementation in action by trying the open-source Compose UI Components Sample App.

Did you find this page helpful?