# Chat Messaging

Stream Chat adds real-time messaging to your app: direct messages, group conversations, livestream chat and support flows. The API keeps channels, messages, threads, reactions and read state in sync across devices; the SDKs add offline storage and prebuilt UI on every major platform.

See it running in the [live demos](https://getstream.io/chat/demos/messaging/), or take the [interactive tour](https://getstream.io/chat/tour/) of the API.

## SDKs

Chat ships in three tiers. Start with the UI components and drop down a tier where you need more control.

### UI Components

Complete chat interfaces with message lists, channel lists, threads and reactions built in.

- [React](https://getstream.io/chat/docs/sdk/react/): Components and hooks for web apps.
- [iOS](https://getstream.io/chat/docs/sdk/ios/): SwiftUI and UIKit component libraries in Swift.
- [Android](https://getstream.io/chat/docs/sdk/android/): Jetpack Compose and XML components in Kotlin.
- [React Native](https://getstream.io/chat/docs/sdk/react-native/): Native iOS and Android chat UI from one codebase.
- [Flutter](https://getstream.io/chat/docs/sdk/flutter/): Chat widgets for every platform Flutter targets.
- [Angular](https://getstream.io/chat/docs/sdk/angular/): Components built on the JavaScript client.

### Client Side SDKs

Connection handling, channel state and offline support, with the interface left to you.

- [React](https://getstream.io/chat/docs/react/)
- [iOS](https://getstream.io/chat/docs/ios-swift/)
- [Android](https://getstream.io/chat/docs/android/)
- [React Native](https://getstream.io/chat/docs/react-native/)
- [Flutter](https://getstream.io/chat/docs/flutter-dart/)
- [JavaScript](https://getstream.io/chat/docs/javascript/)
- [Unity](https://getstream.io/chat/docs/unity/)
- [Unreal](https://getstream.io/chat/docs/unreal/)

### Server Side SDKs

Full API access from your backend: provision users, create channels, send messages and enforce moderation.

- [Node](https://getstream.io/chat/docs/node/)
- [Python](https://getstream.io/chat/docs/python/)
- [Ruby](https://getstream.io/chat/docs/ruby/)
- [PHP](https://getstream.io/chat/docs/php/)
- [Java](https://getstream.io/chat/docs/java/)
- [.NET](https://getstream.io/chat/docs/dotnet-csharp/)
- [Go](https://getstream.io/chat/docs/go-golang/)
- [REST](https://getstream.github.io/protocol/?urls.primaryName=Chat)

## Build with AI

Your AI agent can work with Stream from the terminal with the [Stream CLI](https://getstream.io/cli/docs/). There's also an [Agent Skills](https://getstream.io/agent-skills/docs/) pack so it can look up docs and configure your app.

```bash
curl -fsSL https://getstream.io/cli.sh | bash
getstream skills
```

- [Agent Skills](https://getstream.io/agent-skills/docs/)
- [Stream CLI](https://getstream.io/cli/docs/)

## Platform

Users, auth and the rest of the account-level machinery work the same in every Stream product, so they are documented once in the [platform docs](https://getstream.io/docs/platform/). Chat apps touch these first:

- [Authentication and tokens](https://getstream.io/docs/platform/authentication/): Create the user tokens your app connects with.
- [Users](https://getstream.io/docs/platform/users/): Create, update, query and delete the users behind every channel.
- [Permissions and roles](https://getstream.io/docs/platform/permissions/): Control who can post, flag and moderate, per channel type.
- [Push notifications](https://getstream.io/docs/platform/push-notifications/): Deliver messages while the app is closed.
- [Webhooks](https://getstream.io/docs/platform/webhooks/): React to chat events from your own backend.

## Start here

Each tutorial builds a working chat app from an empty project. Pick your platform:

- [React](https://getstream.io/chat/sdk/react/tutorial/)
- [iOS (SwiftUI)](https://getstream.io/chat/sdk/ios/tutorial/swiftui/)
- [iOS (UIKit)](https://getstream.io/chat/sdk/ios/tutorial/uikit/)
- [Android (Compose)](https://getstream.io/chat/sdk/android/tutorial/compose/)
- [Android (Kotlin)](https://getstream.io/chat/sdk/android/tutorial/kotlin/)
- [React Native (CLI)](https://getstream.io/chat/sdk/react-native/tutorial/cli/)
- [React Native (Expo)](https://getstream.io/chat/sdk/react-native/tutorial/expo/)
- [Flutter](https://getstream.io/chat/sdk/flutter/tutorial/)
- [Angular](https://getstream.io/chat/sdk/angular/tutorial/)
- [Unity](https://getstream.io/chat/sdk/unity/tutorial/)
- [Unreal](https://getstream.io/chat/sdk/unreal/tutorial/)

## FAQ

**Which SDK do I need?**

Start with a UI component SDK. Use a client SDK to build your own interface on the same state layer, and a server-side SDK for anything that touches your API secret.

**Does chat work offline?**

Yes. The client SDKs store messages locally and update the UI optimistically, then sync when the connection returns.

**Do I need my own backend?**

In production, yes: user tokens are [signed with your API secret](https://getstream.io/docs/platform/authentication/) on your server. For a prototype, [developer tokens](https://getstream.io/docs/platform/authentication/#developer-tokens) let clients connect without one.

**Does Chat include moderation?**

[Stream Moderation](https://getstream.io/moderation/docs/) plugs into Chat: AI engines screen messages and borderline cases go to a human review queue.

**Do Chat and Video share users?**

Yes. Users, tokens and roles are app-level and shared by every Stream product; the [platform docs](https://getstream.io/docs/platform/) cover them once.

**Can I read these docs as markdown?**

Append `.md` to any page URL. [/llms.txt](https://getstream.io/llms.txt) indexes every page.

---

For the most recent version of this documentation, visit [https://getstream.io/chat/docs/](https://getstream.io/chat/docs/).