Skip to main content

Architecture

The UI Kit is a set of independent components that compose into chat layouts. A typical two-panel layout uses four core components:
  • CometChatConversations — sidebar listing recent conversations (users and groups)
  • CometChatMessageHeader — toolbar showing avatar, name, online status, and typing indicator
  • CometChatMessageList — scrollable message feed with reactions, receipts, and threads
  • CometChatMessageComposer — rich text input with attachments, mentions, and voice notes
Data flow: selecting a conversation in CometChatConversations yields a CometChat.Conversation object. Extract the User or Group via getConversationWith() and pass it as a prop to CometChatMessageHeader, CometChatMessageList, and CometChatMessageComposer. Components communicate through a publish/subscribe event bus (CometChatUIEventHandler). A component emits events that other components or application code can subscribe to without direct references. See Events for the full list. Each component accepts callback props (on<Event>), view slot props (<Slot>View) for replacing UI sections, RequestBuilder props for data filtering, and style props for customization.

Component Catalog

All components are imported from @cometchat/chat-uikit-react-native.

Conversations and Lists

Messages

Calling

AI


Component API Pattern

All components share a consistent API surface.

Actions

Actions control component behavior. They split into two categories: Predefined Actions are built into the component and execute automatically on user interaction (e.g., tapping send dispatches the message). No configuration needed. User-Defined Actions are callback props that fire on specific events. Override them to customize behavior:

Events

Events enable decoupled communication between components. A component emits events that other parts of the application can subscribe to without direct references.
Each component page documents its emitted events in the Events section.

Filters

List-based components accept RequestBuilder props to control which data loads:

Custom View Slots

Components expose named view slots (PascalCase) to replace sections of the default UI:

Style Overrides

Every component accepts a style prop for customization:
All default icons are implemented as SVGs.For these icons, only the following imageStyle properties are supported:
  • tintColor
  • height
  • width
Any extra properties provided in imageStyle will be ignored for default icons.For custom icons, you can provide either JSX components or an ImageSourcePropType. JSX Components are rendered as-is with no additional styles applied. ImageSourcePropType (e.g., PNG, JPEG) will have the entire imageStyle applied as expected.

Next Steps

Core Features

Chat features included out of the box

Theming

Customize colors, fonts, and styles

Extensions

Add-on features like polls, stickers, and translation

Methods

Initialize, authenticate, and send messages