UIKit iOS v3
This is the new Docs for UIKit v3 for iOS. To see the previous Docs, click here.

Send your first message

Sendbird UIKit for iOS is a set of prebuilt UI components that allows you to easily craft an in-app chat with all the essential messaging features. Our development kit includes light and dark themes, fonts, colors and more. You can customize these components to create an interactive messaging interface unique to your brand identity.

Sendbird UIKit supports both open channels and group channels. Follow the guide below to start sending a message from scratch using Swift.


The minimum requirements for UIKit for iOS are:

  • iOS 11.0 and later
  • Swift 5.0+
  • Sendbird Chat SDK for iOS 4.0.9 and later

Before you start

Before installing Sendbird Chat SDK, you need to create a Sendbird application on the Sendbird Dashboard, which comprises everything required in a chat service including users, messages, and channels. You will need the App ID of your Sendbird application when initializing the Chat SDK.

Note: Each Sendbird application can be integrated with a single client app. Within the same application, users can communicate with each other across all platforms, whether they are on mobile devices or on the web.

Get started

You can start building a messaging experience in your app by installing Sendbird UIKit. This developer kit is an add-on feature to Sendbird Chat SDK so installing it will also install the core Chat SDK. The minimum requirement of Chat SDK for iOS is 4.0.9 or later.

Step 1 Create a project

To get started, open Xcode and create a new project. Sendbird UIKit supports swift.

Step 2 Install UIKit

You can install UIKit for iOS through either Swift Packages, CocoaPods, or Carthage.

Swift Packages

  1. Go to your Swift Package Manager's File tab and select Swift Packages. Then choose Add package dependency....

  2. Add SendbirdUIKit into your Package Repository as below:

  1. To add the package, select Version Rules, enter Up to Next Major, 3.0.0, and click Next.


  1. Add SendBirdUIKit into your Podfile in Xcode as below:
platform :ios, '11.0'

    pod 'SendbirdUIKit', '>= 3.0.0' // Add this line.
  1. Install the SendBirdUIKit framework through CocoaPods.
$ pod install
  1. Update the SendBirdUIKit framework through CocoaPods.
$ pod update


  1. Add SendbirdUIKit and SendbirdChatSDK into your Cartfile as below:
github "sendbird/sendbird-uikit-ios"
github "sendbird/sendbird-chat-sdk-ios"
  1. Install the SendbirdUIKit framework through Carthage.
$ carthage update --use-xcframeworks

Note: Building or creating the SendbirdUIKit framework with Carthage can only be done using the latest Swift. If your Swift is not the most recent version, the framework should be copied into your project manually.

  1. Go to your Xcode project target's General settings tab in the Frameworks and Libraries section. Then drag and drop SendbirdUIKit.framework from the <YOUR_XCODE_PROJECT_DIRECTORY>/Carthage/Build folder.

Note: Errors may occur if you're building your project with Xcode 11.3 or earlier versions. To fix these errors, refer to Handle errors caused by unknown attributes.

Step 3 Initialize with APP_ID

To integrate and run Sendbird UIKit in your app, you need to initialize it first. Initialize the SendbirdUI instance through AppDelegate.

Note: Local caching has now been added so that the client app can locally cache and retrieve channel and message data. The addition of this functionality requires the database to be reset and migrated. As a result of DB migration in the server, the initialization process of the SendbirdUI instance is now asynchronous and requires you to receive a callback function before you can move onto the next step. Once the database finishes migrating, completionHandler is called. If the database fails to migrate, the completionHandler block is called with an error. If the database successfully migrates, there is no error and you can proceed to the next step. Refer to the updated code below.

When initializing Sendbird UIKit, we recommend displaying a loading indicator to show the initialization progress and indicate that other succeeding steps should wait. The indicator should be displayed when startHandler is called and hidden when completionHandler is called.

// AppDelegate.swift

import SendbirdUIKit

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let APP_ID = "YOUR_APP_ID"    // Specify your Sendbird application ID.
    SendbirdUI.initialize(applicationId: APP_ID) { // This is the origin.
        // Initialization of SendbirdUIKit has started.
        // Show a loading indicator.
    } migrationHandler: {
        // DB migration has started.
    } completionHandler: { error in
        // If DB migration is successful, proceed to the next step.
        // If DB migration fails, an error exists.
        // Hide the loading indicator.

Step 4 Set current user

User information must be set as currentUser in the SBUGlobals prior to launching Sendbird UIKit. This information will be used for various tasks within the kit, and if you don't set currentUser in advance, there will be restrictions while using the UIKit. The userID field shown below must be specified. Other fields such as nickname and profileUrl are optional, and if not specified, they'll be filled with default values.

Set currentUser for UIKit through the AppDelegate as below:

Note: Even if you don't use AppDelegate, you should still register user information before launching a chat service.

// AppDelegate.swift

import SendbirdUIKit

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    // Case 1: USER_ID only
    SBUGlobals.currentUser = SBUUser(userId: {USER_ID})

    // Case 2: Specify all fields
    SBUGlobals.currentUser = SBUUser(userId: {USER_ID}, nickname:{(opt)NICKNAME} profileUrl:{(opt)PROFILE_URL})


Step 5 Display channel list

SBUGroupChannelListViewController is the starting point for launching UIKit in your app. Implement the code below wherever you would like to start UIKit. You can see a complete list of group channels that you're a member of.

import SendbirdUIKit;

let channelListVC = SBUGroupChannelListViewController()
let naviVC = UINavigationController(rootViewController: channelListVC)
self.present(naviVC, animated: true)

Note: If you are already using a navigation controller, you can use the pushViewController function.

Step 6 Send your first message

You can now run the app on a simulator or a plugged-in device. To send a message, you must first create a group channel by tapping the icon in the top-right corner. Then, you can select users you wish to invite as members to your channel. Once the channel has been created, enter your first message and send.

Note: Sendbird UIKit offers features to attach or save files such as photos, videos, and documents in addition to sending text messages. To learn more about using these features, refer to Get attachment permission in the sample app.

You've successfully sent your first message with Sendbird.

Note: If you wish to distribute your application in the App store and remove unnecessary architectures in the application's build phase, go to Distribution settings in the sample app.

Get attachment permission

Sendbird UIKit allows users to attach or save files such as photos, videos, and documents. To use these functionalities, you need to request permission from users using your client apps.

Media attachment permission

Client apps must acquire permission from end users to use their photos or save media to their library. Once the permission is granted, users can send image or video messages and download media assets.

    <string>$(PRODUCT_NAME) would like access to your photo library</string>
    <string>$(PRODUCT_NAME) would like to use your camera</string>
    <string>$(PRODUCT_NAME) would like to use your microphone (for videos)</string>
    <string>$(PRODUCT_NAME) would like to save photos to your photo library</string>

Document attachment permission (optional)

To attach documents from iCloud to file messages, you need to activate the iCloud feature. Once activated, users can send file messages containing documents from iCloud. Go to your Xcode project's Signing & Capabilities, add + Capability, and select iCloud. Check iCloud Documents.

UIKit components

UIKit for iOS manages the lifecycle of its ViewController along with various views and data from the Chat SDK for iOS. UIKit components are as follows:

List of components



A ViewController that manages a channel list.


A ViewController that manages a 1-on-1 chat channel.


A ViewController that manages the channel settings.


A ViewController that creates a channel.


A ViewController that invites a user to a channel.


A ViewController that registers a user as an operator of a channel.


A ViewController that shows a list of users in a channel.


A ViewController that searches a message in a channel.


A singleton that manages themes.


A singleton that manages color sets.


A singleton that manages font sets.


A class that contains static functions required when using Sendbird UIKit.


A class that contains static attributes required when using Sendbird UIKit.