Documentation Index Fetch the complete documentation index at: https://www.cometchat.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
AI Integration Quick Reference
{
"platform" : "iOS UI Kit" ,
"package" : "CometChatUIKitSwift" ,
"version" : "5.1.9" ,
"componentTypes" : {
"base" : "Simple UI elements with no business logic" ,
"components" : "UI elements with built-in business logic" ,
"composite" : "Multiple components combined into complete features"
},
"baseComponents" : [
{ "name" : "CometChatAvatar" , "purpose" : "User/group profile images" },
{ "name" : "CometChatBadge" , "purpose" : "Notification counts" },
{ "name" : "CometChatStatusIndicator" , "purpose" : "Online/offline status" },
{ "name" : "CometChatDate" , "purpose" : "Formatted timestamps" },
{ "name" : "CometChatReceipt" , "purpose" : "Message delivery status" }
],
"components" : [
{ "name" : "CometChatUsers" , "purpose" : "List of users" },
{ "name" : "CometChatGroups" , "purpose" : "List of groups" },
{ "name" : "CometChatConversations" , "purpose" : "Recent chats list" },
{ "name" : "CometChatMessageList" , "purpose" : "Chat messages" },
{ "name" : "CometChatMessageComposer" , "purpose" : "Message input" },
{ "name" : "CometChatMessageHeader" , "purpose" : "Chat header" },
{ "name" : "CometChatCallLogs" , "purpose" : "Call history" }
],
"compositeComponents" : [
{ "name" : "CometChatMessages" , "contains" : [ "MessageHeader" , "MessageList" , "MessageComposer" ]},
{ "name" : "CometChatUsersWithMessages" , "contains" : [ "Users" , "Messages" ]},
{ "name" : "CometChatGroupsWithMessages" , "contains" : [ "Groups" , "Messages" ]},
{ "name" : "CometChatConversationsWithMessages" , "contains" : [ "Conversations" , "Messages" ]}
]
}
Overview
CometChat UI Kit provides pre-built components that you can use to quickly build a chat experience. Components are organized into three types based on complexity.
Component Types
Base Components
Simple UI elements with no business logic. They display data you pass to them.
Component Purpose CometChatAvatarUser/group profile images CometChatBadgeNotification counts CometChatStatusIndicatorOnline/offline status CometChatDateFormatted timestamps CometChatReceiptMessage delivery status
import CometChatUIKitSwift
// Avatar - displays user image
let avatar = CometChatAvatar ()
avatar. setAvatar ( avatarUrl : user. avatar , with : user. name )
// Badge - shows unread count
let badge = CometChatBadge ()
badge. set ( count : 5 )
// Status indicator - shows online status
let status = CometChatStatusIndicator ()
status. set ( status : . online )
Components
UI elements with built-in business logic. They fetch data, handle actions, and emit events.
Component Purpose CometChatUsersList of users CometChatGroupsList of groups CometChatConversationsRecent chats list CometChatMessageListChat messages CometChatMessageComposerMessage input CometChatMessageHeaderChat header CometChatCallLogsCall history
import CometChatUIKitSwift
// Users list - fetches and displays users automatically
let users = CometChatUsers ()
users. set ( onItemClick : { user, indexPath in
print ( "Selected: \( user. name ?? "" ) " )
})
// Conversations - shows recent chats
let conversations = CometChatConversations ()
conversations. set ( onItemClick : { conversation, indexPath in
// Open chat
})
// Message list - displays messages for a user/group
let messageList = CometChatMessageList ()
messageList. set ( user : user)
Composite Components
Combine multiple components into complete features.
Component Contains CometChatMessagesMessageHeader + MessageList + MessageComposer CometChatUsersWithMessagesUsers + Messages CometChatGroupsWithMessagesGroups + Messages CometChatConversationsWithMessagesConversations + Messages
import CometChatUIKitSwift
// Complete chat experience in one component
let conversationsWithMessages = CometChatConversationsWithMessages ()
navigationController ? . pushViewController (conversationsWithMessages, animated : true )
// Or just the messages view
let messages = CometChatMessages ()
messages. user = user // or messages.group = group
navigationController ? . pushViewController (messages, animated : true )
Actions
Actions define how components respond to user interactions.
Predefined Actions
Built-in behaviors that work automatically:
// CometChatConversations has predefined actions:
// - Tap conversation → Opens messages
// - Long press → Shows options
// - Swipe → Delete conversation
let conversations = CometChatConversations ()
// These work automatically!
Custom Actions
Override default behavior with your own logic:
import CometChatUIKitSwift
import CometChatSDK
let conversations = CometChatConversations ()
// Override tap action
conversations. set ( onItemClick : { conversation, indexPath in
// Your custom logic
print ( "Tapped: \( conversation. conversationWith ? . name ?? "" ) " )
// Navigate to custom screen instead of default
let customChatVC = MyChatViewController ()
customChatVC. conversation = conversation
self . navigationController ? . pushViewController (customChatVC, animated : true )
})
// Override long press
conversations. set ( onItemLongClick : { conversation, indexPath in
// Show custom options
self . showCustomOptions ( for : conversation)
})
// Handle errors
conversations. set ( onError : { error in
print ( "Error: \( error. localizedDescription ) " )
})
// Handle empty state
conversations. set ( onEmpty : {
print ( "No conversations" )
})
Events
Events allow components to communicate without direct references. Subscribe to events from anywhere in your app.
Available Events
Event Triggered When ccMessageSentMessage is sent ccMessageEditedMessage is edited ccMessageDeletedMessage is deleted ccMessageReadMessage is read ccUserBlockedUser is blocked ccUserUnblockedUser is unblocked ccGroupCreatedGroup is created ccGroupDeletedGroup is deleted ccGroupMemberAddedMember added to group ccGroupMemberRemovedMember removed from group
Subscribe to Events
import CometChatUIKitSwift
import Combine
class ChatManager {
private var cancellables = Set < AnyCancellable > ()
func subscribeToEvents () {
// Message sent event
CometChatMessageEvents. ccMessageSent
. sink { message in
print ( "Message sent: \( message. text ?? "" ) " )
// Update UI, analytics, etc.
}
. store ( in : & cancellables)
// Message deleted event
CometChatMessageEvents. ccMessageDeleted
. sink { message in
print ( "Message deleted: \( message. id ) " )
}
. store ( in : & cancellables)
// User blocked event
CometChatUserEvents. ccUserBlocked
. sink { user in
print ( "Blocked: \( user. name ?? "" ) " )
}
. store ( in : & cancellables)
// Group member added
CometChatGroupEvents. ccGroupMemberAdded
. sink { (action, addedBy, addedUser, group) in
print ( " \( addedUser. name ?? "" ) added to \( group. name ?? "" ) " )
}
. store ( in : & cancellables)
}
func unsubscribe () {
cancellables. removeAll ()
}
}
Configurations
Customize nested components within composite components:
import CometChatUIKitSwift
// CometChatMessages contains: MessageHeader, MessageList, MessageComposer
// You can configure each one:
let messages = CometChatMessages ()
messages. user = user
// Configure MessageHeader
let headerConfig = MessageHeaderConfiguration ()
headerConfig. hideBackButton = false
headerConfig. set ( subtitleView : { user, group in
let label = UILabel ()
label. text = user ? . status == . online ? "Online" : "Offline"
label. textColor = user ? . status == . online ? . systemGreen : . gray
return label
})
messages. set ( messageHeaderConfiguration : headerConfig)
// Configure MessageList
let listConfig = MessageListConfiguration ()
listConfig. set ( emptyStateText : "No messages yet" )
listConfig. set ( errorStateText : "Failed to load messages" )
messages. set ( messageListConfiguration : listConfig)
// Configure MessageComposer
let composerConfig = MessageComposerConfiguration ()
composerConfig. set ( placeholderText : "Type a message..." )
composerConfig. hideLiveReaction = true
messages. set ( messageComposerConfiguration : composerConfig)
Component Hierarchy
CometChatConversationsWithMessages
├── CometChatConversations
│ ├── CometChatListItem
│ │ ├── CometChatAvatar
│ │ ├── CometChatBadge
│ │ ├── CometChatStatusIndicator
│ │ └── CometChatDate
│ └── CometChatListBase
└── CometChatMessages
├── CometChatMessageHeader
│ ├── CometChatAvatar
│ └── CometChatStatusIndicator
├── CometChatMessageList
│ ├── CometChatMessageBubble
│ ├── CometChatReceipt
│ └── CometChatDate
└── CometChatMessageComposer
├── CometChatMediaRecorder
└── CometChatStickerKeyboard
Quick Reference
When to Use Each Type
Need Use Display user avatar CometChatAvatar (Base)Show list of users CometChatUsers (Component)Complete chat with user selection CometChatUsersWithMessages (Composite)Custom chat UI Individual Components Quick integration Composite Components
Common Patterns
// Pattern 1: Quick integration with composite
let chat = CometChatConversationsWithMessages ()
navigationController ? . pushViewController (chat, animated : true )
// Pattern 2: Custom flow with components
let users = CometChatUsers ()
users. set ( onItemClick : { user, _ in
let messages = CometChatMessages ()
messages. user = user
self . navigationController ? . pushViewController (messages, animated : true )
})
// Pattern 3: Fully custom with base components
let customCell = UITableViewCell ()
let avatar = CometChatAvatar ()
avatar. setAvatar ( avatarUrl : user. avatar , with : user. name )
customCell. contentView . addSubview (avatar)