Home

Awesome

Official Android SDK for Stream Chat

<p align="center"> <a href="https://getstream.io/tutorials/android-chat/"> <img src="/docs/sdk-hero-android.png"/> </a> </p> <p align="center"> <a href="https://github.com/GetStream/stream-chat-android/actions"><img src="https://github.com/GetStream/stream-chat-android/workflows/Build%20and%20test/badge.svg" /></a> <a href="https://android-arsenal.com/api?level=21"><img alt="API" src="https://img.shields.io/badge/API-21%2B-brightgreen.svg?style=flat"/></a> <a href="https://github.com/GetStream/stream-chat-android/releases"><img src="https://img.shields.io/github/v/release/GetStream/stream-chat-android" /></a> </p>

This is the official Android SDK for Stream Chat, a service for building chat and messaging applications. This library includes both a low-level chat SDK and a set of reusable UI components. Most users start with the UI components, and fall back to the lower level API when they want to customize things.

We're proud to say that we're the first Android Chat SDK that supports Jetpack Compose! We released our Compose UI Components one day after the official Jetpack Compose 1.0 release and our team members have been working hard on it since then.

Now it's mature and stable enough for us to officially recommend it for all new applications and all modern chat implementations. If you're looking for something highly customizable and extremely performant, check out our Compose SDK.

The Android SDK supports both Kotlin and Java, but we strongly recommend using Kotlin.

Note: The Compose SDK supports only Kotlin, since Compose uses Kotlin compiler plugins to process the UI.

🔗 Quick Links

👩‍💻 Free for Makers 👨‍💻

Stream is free for most side and hobby projects. To qualify, your project/company needs to have < 5 team members and < $10k in monthly revenue. For complete pricing details, visit our Chat Pricing Page.

🗺️ Overview and Documentation 📚

This SDK consists of two low-level artifacts you can build on:

We also have two UI SDKs. You can use our Compose UI Components SDK, or if you're using older UI solutions, the XML-based UI Components:

Learn more about the modules by visiting the documentation.

📖 Tutorial

The best place to start is the Compose Chat Messaging Tutorial. It teaches you the basics of using the Compose Chat SDK and also shows how to make frequently required changes.

Note: If you're using older UI toolkits, like XML, you can follow the Android Chat Messaging Tutorial which features the XML-based UI Components.

🛠️ Installation and Getting Started 🚀

See the Dependencies and Getting Started pages of the documentation.

🔮 Sample Apps

Compose Sample App

Our Jetpack Compose implementation comes with its own example app, which you can play with to see how awesome Compose is.

To run the sample app, start by cloning this repo:

git clone git@github.com:GetStream/stream-chat-android.git

Next, open Android Studio and open the newly created project folder. You'll want to run the stream-chat-android-compose-sample module.

Since Compose is a highly customizable SDK, we're eager to hear your feedback on how it helps you build complex Chat UI. Join us in this repo's discussions or tweet at us @getstream_io!

Sample App

However, if you're still using XML due to technical limitations, our UI Components SDK includes a fully functional example app featuring threads, reactions, typing indicators, optimistic UI updates and offline storage. To run the sample app, start by cloning this repo:

git clone git@github.com:GetStream/stream-chat-android.git

Next, open Android Studio and open the newly created project folder. You'll want to run the stream-chat-android-ui-components-sample app.

Other Sample Apps

We also maintain a dedicated repository for fully-fledged sample applications at GetStream/Android-Samples.

💡 Supported features 🎨

Here are some of the features that the SDK supports out-of-the-box:

For more, see the SDK's website.

🛠️ R8 / ProGuard

When utilizing R8, the rules for shrinking and obfuscation are applied automatically.

If you are using ProGuard, you will need to add the following rules from client, ui-common, and previewdata modules to your application.

You might also need apply rules for Coroutines, Retrofit and OkHttp which are dependencies of the SDK.

💼 We are hiring!

We've recently closed a $38 million Series B funding round and we keep actively growing. Our APIs are used by more than a billion end-users, and you'll have a chance to make a huge impact on the product within a team of the strongest engineers all over the world. Check out our current openings and apply via Stream's website.

License

Copyright (c) 2014-2022 Stream.io Inc. All rights reserved.

Licensed under the Stream License;
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   https://github.com/GetStream/stream-chat-android/blob/main/LICENSE

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.