Imported from cometchat/cometchat-skills (
skills/cometchat-android-v6-kotlin-components/SKILL.md). Install upstream withnpx skills add cometchat/cometchat-skills --skill cometchat-android-v6-kotlin-components. Copyright stays with the author (MIT).
Ground truth:
com.cometchat:chatuikit-kotlin-android:6.xcomponent catalog (javap the AAR) +docs/ui-kit/android/v6. Official docs: https://www.cometchat.com/docs/ui-kit/android/v6/components-overview · Docs MCP:claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp(or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
Companion skills: cometchat-android-v6-compose-components (Compose equivalent), cometchat-android-v6-kotlin-theming, cometchat-android-v6-kotlin-customization, cometchat-android-v6-kotlin-placement
Purpose
Complete catalog of all Kotlin Views components in CometChat UIKit v6. Each component is a custom View class in com.cometchat.uikit.kotlin.presentation.
Use this skill when
- Adding a CometChat Views component to an Activity or Fragment
- Looking up component properties and methods
- Understanding which component to use for a specific chat feature
- Finding the style class for a component
Do not use this skill when
- Working with Compose components (use
cometchat-android-v6-compose-components) - Customizing bubble rendering (use
cometchat-android-v6-kotlin-customization) - Placing components in navigation (use
cometchat-android-v6-kotlin-placement)
1. Component Catalog
⛔ Only the components in THIS catalog exist — do not invent or recall names from v4/older memory. Before emitting any
CometChat*view, confirm it's listed below; if it's not here, it doesn't exist (→ "unresolved reference" compile error). There is no all-in-one component: the v4-era compositesCometChatConversationsWithMessages/CometChatUsersWithMessages/CometChatGroupsWithMessages/CometChatMessagesand theCometChatUIgod-view are absent in the v6 Kotlin-Views kit (verified against the publishedchatuikit-kotlin-android:6.0.1AAR — the only top-levelCometChat*views areCometChatConversations,CometChatMessageHeader,CometChatMessageList,CometChatMessageComposer,CometChatMessageInformation,CometChatUsers,CometChatGroups). Compose a two-pane experience yourself:CometChatConversations(list) → on item-click, hostCometChatMessageHeader+CometChatMessageList+CometChatMessageComposerfor the selectedUser/Group.
1.1 List Components
| Component | Package | Type | Purpose |
|---|---|---|---|
CometChatConversations |
presentation.conversations.ui |
View | Recent conversations list |
CometChatUsers |
presentation.users.ui |
View | User list |
CometChatGroups |
presentation.groups.ui |
View | Group list |
CometChatGroupMembers |
presentation.groupmembers.ui |
View | Members of a group |
CometChatCallLogs |
presentation.calllogs.ui |
View | Call history |
1.2 Messaging Components
⚠️ There is NO combined
CometChatMessagesView on Android v6 Kotlin-Views either. Like the Compose surface, v6 Kotlin-Views ships the pieces separately — compose the chat screen manually asCometChatMessageHeader + CometChatMessageList + CometChatMessageComposer(see §2.4). Nocom.cometchat.uikit.kotlin.presentation.cometchatmessages.CometChatMessagesexists on either surface.
| Component | Package | Type | Purpose |
|---|---|---|---|
CometChatMessageList |
presentation.messagelist.ui |
View | Message list with bubbles |
CometChatMessageComposer |
presentation.messagecomposer.ui |
View | Message input with attachments |
CometChatMessageHeader |
presentation.messageheader.ui |
View | Chat header (name, status, actions) |
CometChatMessageInformation |
presentation.messageinformation.ui |
View | Message delivery/read info |
CometChatThreadHeader |
presentation.threadheader.ui |
View | Thread parent message header |
1.3 Call Components
| Component | Package | Type | Purpose |
|---|---|---|---|
CometChatCallButtons |
presentation.callbuttons |
View | Audio/video call buttons |
CometChatIncomingCall |
presentation.incomingcall |
View | Incoming call screen |
CometChatOutgoingCall |
presentation.outgoingcall |
View | Outgoing call screen |
CometChatOngoingCall |
presentation.ongoingcall.ui |
View | Active call screen |
CometChatCallActivity |
calls |
Activity | Activity wrapper for calls |
1.4 Utility Components
| Component | Package | Type | Purpose |
|---|---|---|---|
CometChatSearch |
presentation.search.ui |
View | Global search |
CometChatReactionList |
presentation.reactionlist.ui |
View | Reaction details |
CometChatEmojiKeyboard |
presentation.emojikeyboard.ui |
View | Emoji picker |
CometChatStickerKeyboard |
presentation.stickerkeyboard.ui |
View | Sticker picker |
CometChatFlagMessageDialog |
presentation.report |
Dialog | Report/flag message |
CometChatAIAssistantChatHistory |
presentation.aiassistantchathistory.ui |
View | AI chat history (extends MaterialCardView) |
CometChatNotificationFeed |
presentation.notificationfeed.ui |
View | Full-screen notification feed (category filter chips, timestamp grouping, rich cards, real-time updates) — extends FrameLayout |
1.5 Shared Elements
Located in presentation.shared/:
- AI features:
aiconversationstarter/,aiconversationsummary/,aismartreplies/ - Base elements:
baseelements/ - Message bubble:
messagebubble/(BubbleFactory, CometChatMessageBubble, InternalContentRenderer) - Dialog:
dialog/ - Media:
mediarecorder/,mediaselection/,mediaviewer/,inlineaudiorecorder/ - Message preview:
messagepreview/ - Moderation:
moderation/ - Permissions:
permission/ - Popup menu:
popupmenu/ - Reactions:
reaction/ - Receipts:
receipts/ - Search box:
searchbox/ - Shimmer:
shimmer/ - Status indicator:
statusindicator/ - Suggestion list:
suggestionlist/ - Toolbar:
toolbar/ - Typing indicator:
typingindicator/
1.6 Adapters
List components use RecyclerView adapters:
| Adapter | Component |
|---|---|
ConversationsAdapter |
CometChatConversations |
MessageAdapter |
CometChatMessageList |
| Group/User adapters in respective packages | CometChatGroups, CometChatUsers |
2. Basic Usage Examples
2.1 Conversations List in an Activity
import com.cometchat.uikit.kotlin.presentation.conversations.ui.CometChatConversations
class ConversationsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val conversations = CometChatConversations(this)
conversations.setOnItemClick { conversation ->
// Navigate to chat
}
setContentView(conversations)
}
}
2.2 Message List in XML Layout
<com.cometchat.uikit.kotlin.presentation.messagelist.ui.CometChatMessageList
android:id="@+id/messageList"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
val messageList = findViewById<CometChatMessageList>(R.id.messageList)
messageList.setUser(user)
2.3 Users List
val users = CometChatUsers(this)
users.setOnItemClick { user ->
// Navigate to chat with user
}
setContentView(users)
2.4 Full Chat Screen
class MessagesActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_messages)
val header = findViewById<CometChatMessageHeader>(R.id.messageHeader)
val messageList = findViewById<CometChatMessageList>(R.id.messageList)
val composer = findViewById<CometChatMessageComposer>(R.id.messageComposer)
header.setUser(user)
messageList.setUser(user)
composer.setUser(user)
}
}
3. Style Classes
Every component has a corresponding style class in its style/ subpackage:
| Component | Style Class |
|---|---|
CometChatConversations |
CometChatConversationsStyle |
CometChatUsers |
CometChatUsersStyle |
CometChatGroups |
CometChatGroupsStyle |
CometChatGroupMembers |
CometChatGroupMembersStyle |
CometChatMessageList |
CometChatMessageListStyle |
CometChatMessageComposer |
CometChatMessageComposerStyle |
CometChatMessageHeader |
CometChatMessageHeaderStyle |
CometChatCallLogs |
CometChatCallLogsStyle |
CometChatThreadHeader |
CometChatThreadHeaderStyle |
CometChatNotificationFeed |
CometChatNotificationFeedStyle (@ColorInt Int props; .default() factory; setStyle(style)) |
CometChatAIAssistantChatHistory |
CometChatAIAssistantChatHistoryStyle (.default(context)) |
Style classes resolve defaults from XML theme attributes and CometChatTheme singleton.
4. ViewModel Integration
Each component creates its own ViewModel internally via factories from chatuikit-core. ViewModels are shared with the Compose stack — the same CometChatConversationsViewModel powers both CometChatConversations (View) and CometChatConversations (@Composable).
5. Custom State Views (empty / error / loading)
The list/data components expose three setters to replace the built-in empty, error, and loading states with your own View:
fun setEmptyView(view: View?)
fun setErrorView(view: View?)
fun setLoadingView(view: View?)
Verified present on CometChatConversations, CometChatUsers, CometChatGroups, CometChatGroupMembers, CometChatCallLogs, and CometChatSearch (e.g. CometChatConversations.kt:1045/1052/1059, CometChatUsers.kt:735/742/749). Pass null to fall back to the default state view.
val users = findViewById<CometChatUsers>(R.id.users)
users.setEmptyView(layoutInflater.inflate(R.layout.my_empty_state, null))
users.setErrorView(layoutInflater.inflate(R.layout.my_error_state, null))
users.setLoadingView(layoutInflater.inflate(R.layout.my_loading_state, null))
CometChatMessageListdoes NOT expose theseset*Viewstate setters — customize its empty/error/loading states through styling/bubble customization instead (seecometchat-android-v6-kotlin-customization).CometChatNotificationFeedinstead takes its own programmatic empty/error/loading rendering internally (see §1.4).
Hard rules
- Activity theme MUST inherit from
CometChatTheme.DayNight(or.Light/.Dark) —Theme.AppCompat.*,Theme.MaterialComponents.*.Bridge, plainTheme.MaterialComponents.*, andTheme.Material3.*all crash at component inflation. Seecometchat-android-v6-kotlin-placement"Activity theme" section. - Components create their own ViewModels internally — do NOT try to create or inject ViewModels manually
- Use
setUser(user)orsetGroup(group)to configure messaging components — they need a target to load messages - For bubble customization, use
setBubbleFactories()andset*ViewProvider()— seecometchat-android-v6-kotlin-customization