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
- Register: Create an account and get an API key for Stream Chat
- Chat Tutorial: Learn the basics of the SDK by by building a simple messaging app (Kotlin or Java)
- UI Components sample app: Full messaging app with threads, reactions, optimistic UI updates and offline storage
- Compose UI Components sample app: Messaging sample app built with Jetpack Compose!
- Client Documentation
- UI Components Documentation
- Compose UI Components Documentation
- API docs: Full generated docs from Dokka
- Jetpack Compose Planning: Jetpack Compose public project management board and milestone overview
👩💻 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:
- Client: A low-level client for making API calls and receiving chat events.
- Offline support: Local caching and automatic retries, exposed via Flow and LiveData APIs.
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:
- Compose UI Components: Reusable and modular Composables for displaying conversations, lists of channels, and more!
- UI Components: Reusable and customizable chat Views for displaying conversations, lists of channels, and more!
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:
- Channels list UI
- Channel UI
- Message reactions
- Link previews
- Image, video and file attachments
- Editing and deleting messages
- Typing indicators
- Read indicators
- Push notifications
- Image gallery
- GIF support
- Light and dark themes
- Style customization
- UI customization
- Threads
- Slash commands
- Markdown message formatting
- Unread message counts
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.