# Chat SDKs

> Put Kustomer chat and the knowledge base in your website and mobile apps. Pick an SDK, compare what each platform supports, and see how identity, push and the server-side chat API fit together.

Source: https://developer.kustomer.com/docs/chat

Kustomer Chat connects customers in your website or app with agents and AI assistants in Kustomer. Conversations are real Kustomer conversations: they show up in the agent's queue, run through your workflows and routing, and follow the customer across devices once you identify them.

Each SDK comes in two layers. The **UI** layer is a complete chat and knowledge base experience you can open with one call and style to your brand. The **core** layer is the headless API under it, for when you want to build your own interface.

- [Web](https://developer.kustomer.com/docs/chat/web): One script tag for the chat widget, or the Core API for a custom UI in any framework.
- [iOS](https://developer.kustomer.com/docs/chat/ios): The `KustomerChat` Swift module, through Swift Package Manager or CocoaPods.
- [Android](https://developer.kustomer.com/docs/chat/android): `com.kustomer.chat:ui` and `:core` on Maven Central, written in Kotlin.
- [React Native](https://developer.kustomer.com/docs/chat/react-native): `@kustomer/chat-react-native`, wrapping the native iOS and Android SDKs.

Not building a customer-facing UI? To bring conversations from your own chat system or bot into Kustomer, use the [server-side chat API](https://developer.kustomer.com/docs/chat/server-chat-api).

## Latest versions

| SDK          | Package                                          | Version        | Minimum platform                    |
| ------------ | ------------------------------------------------ | -------------- | ----------------------------------- |
| Web widget   | `https://cdn.kustomerapp.com/chat-web/widget.js` | Always current | —                                   |
| Web Core     | `https://cdn.kustomerapp.com/chat-web/core.js`   | Always current | —                                   |
| iOS          | `kustomer-ios-spm` or `pod 'KustomerChat'`       | 8.3.0          | iOS 15                              |
| Android      | `com.kustomer.chat:ui`                           | 4.6.2          | API 24, Kotlin 2.2 toolchain        |
| React Native | `@kustomer/chat-react-native`                    | 6.3.6          | React Native 0.77, iOS 15.1, API 24 |

## What each platform supports

| Capability                                | Web widget                         | Web Core | iOS                   | Android           | React Native             |
| ----------------------------------------- | ---------------------------------- | -------- | --------------------- | ----------------- | ------------------------ |
| Prebuilt chat and knowledge base UI       | Yes                                | —        | Yes                   | Yes               | Yes (native UI)          |
| Headless API for your own UI              | —                                  | Yes      | Yes                   | Yes               | Create conversation only |
| Open a specific conversation              | Yes                                | —        | Yes                   | Yes               | Yes                      |
| Start a conversation with a first message | Yes                                | Yes      | Yes                   | Yes               | Yes                      |
| AI assistants                             | Yes                                | Yes      | Yes                   | Yes               | Yes                      |
| Identify customers with a JWT             | Yes                                | Yes      | Yes                   | Yes               | Yes                      |
| Customer and conversation attributes      | Yes                                | Yes      | Yes                   | Yes               | Yes                      |
| Unread count                              | Yes                                | Yes      | Yes                   | Yes               | Yes                      |
| Availability (business hours)             | Yes                                | Yes      | Yes                   | Yes               | Yes                      |
| Typing indicators in your own UI          | —                                  | Yes      | Yes                   | Yes               | —                        |
| Knowledge base in your own UI             | —                                  | Yes      | Yes                   | Yes               | —                        |
| Satisfaction surveys in your own UI       | —                                  | Yes      | —                     | Yes               | —                        |
| Attachments                               | Yes                                | Yes      | Yes                   | Yes               | Yes (native UI)          |
| Import a conversation (handoff)           | Yes                                | Yes      | Yes                   | Yes               | Yes                      |
| Push notifications                        | —                                  | —        | APNs                  | FCM               | APNs and FCM             |
| Theme colors                              | Kustomer settings                  | Your CSS | Asset catalog or code | Theme attributes  | Native, per platform     |
| Override UI strings                       | Greeting and messages, in Kustomer | Your UI  | `Kustomer.strings`    | `kus_*` resources | Native, per platform     |
| Link previews                             | Yes                                | Yes      | Yes                   | Yes               | Yes                      |
| History status filter                     | Yes                                | —        | Yes                   | Yes               | Yes                      |

Where a capability says "your own UI", the prebuilt UI already handles it; the column shows whether the headless API exposes it for custom builds.

## How the pieces fit

#### Configure chat in Kustomer

Admins set chat's appearance, greeting, business hours, assistants and knowledge base per brand in **Apps › Chat**. The SDKs load these settings at startup, so most changes need no app release.

#### Create a chat key

Every SDK uses an API key with **only** the `org.tracking` role. It's meant to ship in your page or app, because that role only covers what a chat customer can do. Don't add other roles to it; the mobile SDKs reject keys that have them.

#### Add the SDK and open chat

Follow the quickstart for your platform. Out of the box, chat works for anonymous visitors.

#### Identify signed-in customers

Your server signs a short-lived JWT, and the SDK logs in with it, so conversations attach to the customer's profile and appear on all their devices. See [Customer identity](https://developer.kustomer.com/docs/chat/identity).

#### Add push on mobile

Upload your APNs key or Firebase service account in Kustomer and forward tokens from your app. See [Push notifications](https://developer.kustomer.com/docs/chat/push-notifications).

For what happens between the SDK and Kustomer, with HTTPS requests for writes and a realtime channel for messages, typing and presence, see [How chat works](https://developer.kustomer.com/docs/chat/realtime-architecture).

## Choosing between UI and core

| Use the prebuilt UI when                                                         | Use core when                                                               |
| -------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| You want chat live quickly, with Kustomer's tested UX                            | Chat has to look and behave exactly like the rest of your product           |
| Admins should control branding and copy without releases                         | You're embedding chat inside an existing screen rather than a sheet         |
| You need the knowledge base, CSAT, attachments and assistants without extra work | You only need part of chat, such as unread counts or starting conversations |

You can mix them: many apps use the prebuilt UI and only call core for unread counts or to start a conversation from a help button with context attached.

> **For AI agents:** Every chat page is available as Markdown by appending `.md` to its URL, and [`/llms.txt`](https://developer.kustomer.com/llms.txt) indexes them. When generating integration code, use the versions and method signatures on these pages; older examples elsewhere often use deprecated calls such as `Kustomer.configure` on iOS or callback overloads that no longer exist on Android.
