Skip to main content
FieldValue
Package@cometchat/chat-uikit-react-native
Key changesComposite components → modular components, CometChatTheme class → CometChatThemeProvider, nested styles → single style prop
View renamesListItemViewItemView, TailViewTrailingView, EmptyStateViewEmptyView
Property changesSee below
Sample appGitHub

Introduction

The CometChat v5 React Native UI Kit streamlines the integration of in-app chat functionality into your applications. Packed with prebuilt, modular UI components, it supports essential messaging features for both one-to-one and group conversations. With built-in theming options, including light and dark modes, customizable fonts, colors, and extensive configuration possibilities, developers can create chat experiences tailored to their application’s needs.

Integration

In v4, integration was straightforward due to the availability of composite components like CometChatConversationsWithMessages. This single component provided end-to-end functionality, including listing conversations, handling conversation clicks, loading messages (message header, list, composer), displaying user or group details, and supporting threaded messages. Developers could achieve all these features with minimal setup. However, customization posed significant challenges. Customizing the UI or adding custom views required a deep understanding of the internal flow of the composite component. Additionally, configurations were a mix of custom view props, behavioural props, and style props, which often led to confusion. Styling deeply nested components also proved cumbersome, limiting the developer’s ability to make meaningful changes.
With v5, composite components have been replaced with smaller, modular components, such as Conversations, Message Header, Message List, and Message Composer. This modular approach makes integration more flexible and easier to understand. Each component has a well-defined purpose, allowing developers to use them in ways that suit their specific requirements. The need for complex configurations has been eliminated, as developers can now customize behavior and styling directly via props and theme provider. Styling has been significantly simplified, with every component carefully assigned, enabling developers to customize styles globally or at the component level effortlessly. To support the transition from v4 to v5, CometChat has built a sample app that replicates the functionality of v4’s composite components. This sample app serves as a reference for developers looking to build additional features such as user/group details, call log details, threaded messages, and advanced messaging capabilities. By following this approach, developers can take full advantage of v5’s modular design while implementing complex functionality in an organized manner.
Learn how to build a complete messaging UI using the v5 UI Kit by following the step-by-step guide here.

Components

The v4 UI Kit provided composite components like CometChatConversationsWithMessages, which offered end-to-end functionality. These components integrated features such as conversation lists, message views (header, list, composer), user/group details, and threaded messages into a single unit. However, customization of deeply nested components through configuration was challenging and resulted in a suboptimal developer experience.
Components in v4 UI Kit:
CometChatConversationsWithMessagesCometChatUsersWithMessagesCometChatGroupsWithMessages
CometChatMessagesCometChatMessageHeaderCometChatMessageList
CometChatMessageComposerCometChatThreadedMessagesCometChatConversations
CometChatUsersCometChatGroupsCometChatContacts
CometChatDetailsCometChatGroupMembersCometChatAddMembers
CometChatBannedMembersCometChatTransferOwnershipCometChatMessageInformation
CometChatIncomingCallCometChatOngoingCallCometChatOutgoingCall
CometChatCallButtonsCometChatCallLogsCometChatCallLogDetails
CometChatCallLogHistoryCometChatCallLogRecordingsCometChatCallLogParticipants
CometChatCallLogsWithDetailsCometChatUserMemberWrapper
In v5, the composite approach is replaced with smaller, modular components like Conversations, Message Header, Message List, and Message Composer. Developers now need to stitch these components together to build the desired functionality. This change allows for greater flexibility and easier customization via props, significantly improving the developer experience while maintaining functionality.
Components in v5 UI Kit:
CometChatConversationsCometChatUsersCometChatGroups
CometChatGroupMembersCometChatMessageHeaderCometChatMessageList
CometChatMessageComposerCometChatThreadHeaderCometChatIncomingCall
CometChatOutgoingCallCometChatCallButtonsCometChatCallLogs

Theming

In v4, theming was managed using the CometChatTheme class, which included two key properties: Typography and Palette. The Palette property provided methods like setAccent50(), setPrimary(), and setMode() for configuring colors and themes. The theming system relied heavily on React’s Context API, utilizing CometChatThemeProvider and CometChatThemeContext to retrieve and update theme settings. While Context is a core concept in React, it wasn’t the most intuitive or efficient approach for theming. The v4 approach required developers to instantiate theme objects and call multiple setter methods to achieve the desired styling. For example, switching between light and dark modes required calling myTheme.palette.setMode("dark") on the theme instance. While this approach provided granular control, it involved verbose configuration with multiple method calls for each theme property. Customizing themes required understanding the specific setter methods available for both Palette and Typography classes, making the theming process more complex and requiring more boilerplate code.
App.tsx (v4)
import React from 'react';
import { View } from 'react-native';
import { CometChatTheme } from '@cometchat/chat-uikit-react-native';

const App = () => {
  // Initialize theme with setter methods
  let myTheme: CometChatTheme = new CometChatTheme({});
  
  // Configure colors using setter methods
  myTheme.palette.setPrimary({
    light: "#6851D6",
    dark: "#6851D6",
  });
  myTheme.palette.setAccent({
    light: "#f76808",
    dark: "#f76808",
  });
  
  // Set theme mode
  myTheme.palette.setMode("light");
  
  // Configure typography
  myTheme.typography.setName({ fontSize: 22, fontWeight: "800" });

  return (
    <View style={{ flex: 1 }}>
      {/* Your app components with theme applied */}
    </View>
  );
};

export default App;
In v5, theming has been simplified with the CometChatThemeProvider component that accepts a structured theme object. The complex theme class instantiation and setter methods have been replaced with direct theme object configuration. This approach allows developers to directly define theme properties without needing to understand internal theme class structures. The new theming system provides better flexibility for component-level styling through theme overrides. Developers can create theme objects that target specific components and their styles, making customization more intuitive and straightforward. The CometChatI18nProvider has also been separated from theming concerns, providing cleaner separation of localization and theme management.
App.tsx (v5)
import React from "react";
import { SafeAreaView } from "react-native-safe-area-context";
import { CometChatThemeProvider, CometChatI18nProvider } from "@cometchat/chat-uikit-react-native";

const customTheme = {
  light: {
    color: {
      primary: '#f76808',
      background1: '#ffffff',
      background2: '#feede1',
    },
    messageListStyles: {
      outgoingMessageBubbleStyles: {
        containerStyle: {
          backgroundColor: '#f76808',
        },
      },
    },
  },
  dark: {
    color: {
      primary: '#f76808',
      background1: '#1a1a1a',
      background2: '#2a2a2a',
    },
  },
};

const App = () => {
  return (
    <SafeAreaView style={{ flex: 1 }}>
      <CometChatThemeProvider theme={customTheme}>
        <CometChatI18nProvider>
          {/* Your app components */}
        </CometChatI18nProvider>
      </CometChatThemeProvider>
    </SafeAreaView>
  );
};

export default App;
For detailed guidance on theming and customizing colors in the CometChat React Native UI Kit, refer to the following resources:

Properties

In v5, the approach to component properties has been significantly refined to improve clarity and ease of use. All style-related properties have been streamlined to work seamlessly with the new theming system based on direct property access. This change ensures a more efficient and flexible styling process without the need for verbose or redundant configuration within the component properties. Configuration properties, which were prominent in v4, have also been simplified. With v5’s modular design, components are no longer deeply nested, making complex configurations unnecessary. Developers now have direct control over each component through clearly defined properties, reducing complexity and increasing flexibility in how components are used and styled. Custom view properties have undergone a comprehensive overhaul to ensure consistency across all components. For example, components that are represented as list items now share a uniform set of customizable properties, enabling a standardized approach to customization. These properties include:
  • itemView - Custom view for the entire item
  • leadingView - Custom view for the leading section
  • trailingView - Custom view for the trailing section
  • subtitleView - Custom view for the subtitle
  • titleView - Custom view for the title
This consistent naming convention makes it easier for developers to understand and apply customizations across various components, streamlining the development process. For a comprehensive overview of newly added, renamed, and removed properties, refer to the Property Changes Documentation.

Next Steps

This consistent naming convention makes it easier for developers to understand and apply customizations across various components, streamlining the development process.

Property Changes

In CometChat v5 UI Kit, several props and methods in components have been updated. Below is a detailed reference of renamed, added, and removed properties for each component.

Conversations

New Properties

NameTypeDescription
hideSubmitButtonbooleanHide the submit (selection) button.
receiptsVisibilitybooleanToggles message receipts (single/double-tick) inside the subtitle.
disableSoundForMessagesbooleanToggle sound playback for received messages.
customSoundForMessagesstringCustom sound file path for received messages.
datePattern(conversation: CometChat.Conversation) => stringFunction to generate a custom date string for a conversation.
ItemView(item: CometChat.Conversation) => JSX.ElementCompletely overrides the default rendering of each conversation item in the list.
AppBarOptions() => JSX.ElementFunctional component for rendering options in the app bar.
hideBackButtonbooleanHide the back button.
selectionMode'none' | 'single' | 'multiple'Selection mode: 'none', 'single', or 'multiple'.
onSelection(conversations: Array<CometChat.Conversation>) => voidCallback when conversation selection is complete.
onSubmit(conversations: Array<CometChat.Conversation>) => voidCallback when submit selection button is pressed.
EmptyView() => JSX.ElementCustom view for the empty state.
ErrorView() => JSX.ElementCustom view for the error state.
LoadingView() => JSX.ElementCustom view for the loading state.
conversationsRequestBuilderCometChat.ConversationsRequestBuilderRequest builder to fetch conversations.
LeadingView(conversation: CometChat.Conversation) => JSX.ElementCustom leading view for a conversation item.
TitleView(conversation: CometChat.Conversation) => JSX.ElementCustom title view for a conversation item.
SubtitleView(conversation: CometChat.Conversation) => JSX.ElementCustom subtitle view for a conversation item.
TrailingView(conversation: CometChat.Conversation) => JSX.ElementCustom tail view for a conversation item.
hideErrorbooleanHide error view.
onItemPress(item: CometChat.Conversation) => voidCallback for when a conversation item is pressed.
onItemLongPress(item: CometChat.Conversation) => voidCallback for when a conversation item is long pressed.
onError(e: CometChat.CometChatException) => voidCallback when an error occurs while fetching conversations.
onBack() => voidCallback for when the back action is triggered.
textFormattersArray<CometChatMentionsFormatter | CometChatUrlsFormatter | CometChatTextFormatter>Array of text formatter classes.
styleDeepPartial<ConversationStyle>Custom styles for the conversation view.
hideHeaderbooleanHide the header of the conversation list.
onEmpty() => voidCallback triggered when the fetched list is empty.
onLoad(list: CometChat.Conversation[]) => voidCallback triggered once the users have loaded and are not empty.
options(conversation: CometChat.Conversation) => MenuItemInterface[]A function to replace the default menu items entirely for a conversation.
addOptions(conversation: CometChat.Conversation) => MenuItemInterface[]A function to append more menu items on top of the default menu items for a conversation.
usersStatusVisibilitybooleanToggle user status visibility.
groupTypeVisibilitybooleanToggle group type visibility.
deleteConversationOptionVisibilitybooleanToggle delete conversation option visibility.

Renamed Properties

V4 NameV5 NameTypeDescription
hideSubmitIconhideSubmitButtonbooleanHide the submit (selection) button.
disableUsersPresenceusersStatusVisibilitybooleanToggle user status visibility.
hideReceipt / disableReceiptreceiptsVisibilitybooleanControls receipt visibility.
tailViewTrailingViewfunctionCustom tail/trailing view for a conversation item.
ListItemViewItemViewfunctionCompletely overrides the default rendering of each conversation item in the list.
AppBarOptionAppBarOptionsfunctionFunctional component for rendering options in the app bar.
showBackButtonhideBackButtonbooleanIn v5, the prop is inverted (showBackButton=false → hideBackButton=true).
conversationsStylestyleobjectStyle object for conversations (renamed and type changed).
EmptyStateViewEmptyViewfunctionCustom view for the empty state.
ErrorStateViewErrorViewfunctionCustom view for the error state.
LoadingStateViewLoadingViewfunctionCustom view for the loading state.

Removed Properties

V4 NameTypeDescription
protectedGroupIconImageTypeCustom icon for protected group.
privateGroupIconImageTypeCustom icon for private group.
readIconImageTypeCustom icon for read message.
deliveredIconImageTypeCustom icon for delivered message.
sentIconImageTypeCustom icon for sent message.
errorIconImageTypeCustom icon for error message.
waitingIconImageTypeCustom icon for waiting message.
options (swipe actions)functionPass array of CometChatOptions type for swipe actions.
hideSeparatorbooleanToggle separator.
backButtonIconImageTypeIcon for back button.
titlestringTitle to be shown, default "Chats".
emptyStateTextstringText to be displayed if no conversation found.
errorStateTextstringText to be displayed if there is an error.
conversationsStyle (old type)object(Renamed to style, but if old type, it’s removed).
listItemStyleobjectStyle object for list item.
avatarStyleobjectStyle object for avatar.
statusIndicatorStyleobjectStyle object for status indicator.
dateStyleobjectStyle object for date.
receiptStyleobjectStyle object for receipt.
badgeStyleobjectStyle object for badge.
confirmDialogStyleobjectStyle object for confirm dialog.
disableTypingbooleanToggle typing indicator.
disableMentionsbooleanIf true, mentions will be disabled.

Users

New Properties

NameTypeDescription
onSubmit(list: Array<CometChat.User>) => voidCallback when submit selection button is pressed.
styleDeepPartial<UserStyle>Custom styling for the users list.
TitleView(user: CometChat.User) => JSX.ElementCustom title view component.
ItemView(user: CometChat.User) => JSX.ElementFunction that returns a custom list item view.
EmptyView() => JSX.ElementCustom component to display for the empty state.
ErrorView() => JSX.ElementCustom component to display for the error state.
LoadingView() => JSX.ElementCustom component to display for the loading state.
LeadingView(user: CometChat.User) => JSX.ElementCustom leading view component.
hideHeaderbooleanHide the header view.
searchPlaceholderTextstringPlaceholder text for the search input.
usersStatusVisibilitybooleanHide the users status.
searchKeywordstringSearch keyword.
onError(e: CometChat.CometChatException) => voidCallback when an error occurs.
hideLoadingStatebooleanHide the loading skeleton.
titlestringTitle for the header.
addOptions(user: CometChat.User) => MenuItemInterface[]A function to append more menu items on top of the default menu items for a user.
hideErrorbooleanToggle error view visibility.
showBackButtonbooleanToggle back button visibility.
stickyHeaderVisibilitybooleanToggle sticky header visibility.

Renamed Properties

V4 NameV5 NameTypeDescription
usersStylestyleobjectCustom styling for the users list.
TailViewTrailingViewfunctionFunction that returns a custom trailing view for a user.
disableUsersPresenceusersStatusVisibilitybooleanToggle user status visibility
ListItemViewItemViewfunctionFunction that returns a custom list item view.

Removed Properties

V4 NameTypeDescription
listItemKeyanyKey for list item (removed in v5).

Groups

New Properties

NameTypeDescription
TitleView(group: CometChat.Group) => JSX.ElementCustom title view for a group item.
SubtitleView(group: CometChat.Group) => JSX.ElementCustom subtitle view for a group item.
TrailingView(group: CometChat.Group) => JSX.ElementCustom trailing view for a group item.
ItemView(group: CometChat.Group) => JSX.ElementCompletely overrides the default rendering of each group item in the list.
AppBarOptions() => JSX.ElementFunctional component for rendering options in the app bar.
hideSubmitButtonbooleanHide the submit (selection) button.
styleDeepPartial<GroupStyle>Custom styles for the groups view.
searchPlaceholderTextstringPlaceholder text for the search input.
selectionMode'none' | 'single' | 'multiple'Selection mode: 'none', 'single', or 'multiple'.
onSelection(list: Array<CometChat.Group>) => voidCallback when group selection is complete.
onSubmit(list: Array<CometChat.Group>) => voidCallback when submit selection button is pressed.
hideSearchbooleanHide the search box.
EmptyView() => JSX.ElementCustom view for the empty state.
ErrorView() => JSX.ElementCustom view for the error state.
LoadingView() => JSX.ElementCustom view for the loading state.
groupsRequestBuilderCometChat.GroupsRequestBuilderRequest builder to fetch groups.
searchRequestBuilderCometChat.GroupsRequestBuilderRequest builder for search functionality.
privateGroupIconImageSourcePropTypeIcon to be used for private groups.
passwordGroupIconImageSourcePropTypeIcon to be used for password-protected groups.
hideErrorbooleanHide error view.
onItemPress(item: CometChat.Group) => voidCallback for when a group item is pressed.
onItemLongPress(item: CometChat.Group) => voidCallback for when a group item is long pressed.
onError(e: CometChat.CometChatException) => voidCallback when an error occurs while fetching groups.
onBack() => voidCallback for when the back action is triggered.
hideHeaderbooleanHide the header of the group list.
LeadingView(group: CometChat.Group) => JSX.ElementCustom leading view for a group item.
searchKeywordstringSearch keyword.
onEmpty() => voidCallback triggered when the fetched list is empty.
onLoad(list: CometChat.GroupMember[]) => voidCallback triggered once the groups have loaded and are not empty.
hideLoadingStatebooleanHide the loading skeleton.
groupTypeVisibilitybooleanHide the group type (public/private/password).
addOptions(group: CometChat.Group) => MenuItemInterface[]A function to append more menu items on top of the default menu items for a group.
options(group: CometChat.Group) => MenuItemInterface[]A function to replace the default menu items entirely for a group.

Renamed Properties

V4 NameV5 NameTypeDescription
ListItemViewItemViewfunctionCompletely overrides the default rendering of each group item in the list.
AppBarOptionAppBarOptionsfunctionFunctional component for rendering options in the app bar.
hideSubmitIconhideSubmitButtonbooleanHide the submit (selection) button.
groupsStylestyleobjectStyle object for groups (renamed and type changed).
searchPlaceHolderTextsearchPlaceholderTextstringPlaceholder text for the search input.
EmptyStateViewEmptyViewfunctionCustom view for the empty state.
ErrorStateViewErrorViewfunctionCustom view for the error state.
LoadingStateViewLoadingViewfunctionCustom view for the loading state.
privateGroupIconprivateGroupIconImageTypeImageSourcePropTypeIcon to be used for private groups (type changed).
passwordGroupIconpasswordGroupIconImageTypeImageSourcePropTypeIcon to be used for password-protected groups (type changed).

Removed Properties

V4 NameTypeDescription
hideSeperatorbooleanToggle separator (removed, not present in v5).
listItemStyleobjectStyle object for list item (removed, not present in v5).
avatarStyleobjectStyle object for avatar (removed, not present in v5).
statusIndicatorStyleobjectStyle object for status indicator (removed, not present in v5).
backButtonIconImageTypeIcon for back button (removed, not present in v5).
searchBoxIconImageTypeIcon for search box (removed, not present in v5).
titlestringTitle to be shown, default "Groups" (removed, not present in v5).
emptyStateTextstringText to be displayed if no group found (removed, not present in v5).
errorStateTextstringText to be displayed if there is an error (removed, not present in v5).

Group Members

New Properties

NameTypeDescription
SubtitleView(item: CometChat.GroupMember) => JSX.ElementCustom subtitle view for a group member item.
TitleView(item: CometChat.GroupMember) => JSX.ElementCustom title view for a group member item.
TrailingView(item: CometChat.GroupMember) => JSX.ElementCustom trailing view for a group member item.
EmptyView() => JSX.ElementCustom view for the empty state.
ErrorView() => JSX.ElementCustom view for the error state.
LoadingView() => JSX.ElementCustom view for the loading state.
onItemPress(groupMember: CometChat.GroupMember) => voidCallback when a group member item is pressed.
onItemLongPress(groupMember: CometChat.GroupMember) => voidCallback when a group member item is long pressed.
onSelection(list: CometChat.GroupMember[]) => voidCallback when group member selection is complete.
onSubmit(list: Array<CometChat.GroupMember>) => voidCallback when submit selection button is pressed.
searchRequestBuilderCometChat.GroupMembersRequestBuilderRequest builder for search functionality.
groupMemberRequestBuilderCometChat.GroupMembersRequestBuilderRequest builder to fetch group members.
groupCometChat.GroupThe group object for which members are listed.
styleDeepPartial<GroupMemberStyle>Custom styles for the group member view.
ItemView(item: CometChat.GroupMember) => JSX.ElementCompletely overrides the default rendering of each group member item.
LeadingView(item: CometChat.GroupMember) => JSX.ElementCustom leading view for a group member item.
onEmpty() => voidCallback triggered when the fetched list is empty.
onLoad(list: CometChat.GroupMember[]) => voidCallback triggered once the group members have loaded and are not empty.
options(member: CometChat.GroupMember, group: CometChat.Group) => MenuItemInterface[]Function to replace default menu items entirely for a group member.
addOptions(member: CometChat.GroupMember, group: CometChat.Group) => MenuItemInterface[]Function to append more menu items on top of default menu items for a group member.
hideKickMemberOptionbooleanHide the “Remove” (Kick) option from the default menu.
hideBanMemberOptionbooleanHide the “Ban” option from the default menu.
hideScopeChangeOptionbooleanHide the “Change Scope” option from the default menu.
hideLoadingStatebooleanHide the loading skeleton.
usersStatusVisibilitybooleanToggle user status visibility.
hideHeaderbooleanHide the header view.
onError() => voidCallback when an error occurs.
searchKeywordstringSearch keyword.
showBackButtonbooleanToggle back button visibility.
excludeOwnerbooleanExclude owner from the list.

Renamed Properties

V4 NameV5 NameTypeDescription
TailViewTrailingViewfunctionCustom trailing view for a group member item.
groupMemberStylestyleobjectStyle object for group member (renamed and type changed).
disableUsersPresenceusersStatusVisibilitybooleanToggle user status visibility
ListItemViewItemViewfunctionCompletely overrides the default rendering of each group member item.
EmptyStateViewEmptyViewfunctionCustom view for the empty state.
ErrorStateViewErrorViewfunctionCustom view for the error state.
LoadingStateViewLoadingViewfunctionCustom view for the loading state.

Removed Properties

V4 NameTypeDescription
listItemStyleobjectStyle object for list item (removed in v5).
avatarStyleobjectStyle object for avatar (removed in v5).
statusIndicatorStyleobjectStyle object for status indicator (removed in v5).
groupScopeStyleobjectStyling properties for group scope (removed in v5).
titlestringTitle for the list (removed in v5).
errorStateTextstringText to be displayed when error occurs (removed in v5).
emptyStateTextstringText to be displayed when the list is empty (removed in v5).
themeCometChatThemeTheme configuration for the group members component (removed in v5).

Message Header

New Properties

NameTypeDescription
ItemView({ user, group }: { user?: CometChat.User; group?: CometChat.Group }) => JSX.ElementCustom item view. Receives { user, group }.
LeadingView({ user, group }: { user?: CometChat.User; group?: CometChat.Group }) => JSX.ElementCustom leading view. Receives { user, group }.
TitleView({ user, group }: { user?: CometChat.User; group?: CometChat.Group }) => JSX.ElementCustom title view. Receives { user, group }.
SubtitleView({ user, group }: { user?: CometChat.User; group?: CometChat.Group }) => JSX.ElementCustom subtitle view. Receives { user, group }.
TrailingView({ user, group }: { user?: CometChat.User; group?: CometChat.Group }) => JSX.ElementCustom trailing view. Receives { user, group }.
AuxiliaryButtonView({ user, group }: { user?: CometChat.User; group?: CometChat.Group }) => JSX.ElementCustom auxiliary button view. Receives { user, group }.
userCometChat.UserUser object.
groupCometChat.GroupGroup object.
showBackButtonbooleanToggle back button visibility.
onBack() => voidCallback when back button is pressed.
styleDeepPartial<MessageHeaderStyle>Custom styles.
onError(error: CometChat.CometChatException) => voidError callback.
hideVoiceCallButtonbooleanToggle visibility of voice call button.
hideVideoCallButtonbooleanToggle visibility of video call button.
usersStatusVisibilitybooleanToggle visibility of user status.
hideNewChatButtonbooleanFlag to hide the new chat button for AI agents (only applies to @agentic users).
hideChatHistoryButtonbooleanFlag to hide the chat history button for AI agents (only applies to @agentic users).
onNewChatButtonClick() => voidCallback when agent new chat button is clicked (only applies to @agentic users).
onChatHistoryButtonClick() => voidCallback when agent chat history button is clicked (only applies to @agentic users).

Renamed Properties

V4 NameV5 NameTypeDescription
ListItemViewItemViewfunctionCustom item view.
AppBarOptionsTrailingViewfunctionCustom trailing view.
hideBackIconshowBackButtonbooleanIn v5, the prop is inverted (hideBackIcon=true → showBackButton=false).
disableUsersPresenceusersStatusVisibilitybooleanToggle user status visibility
stylestyleobjectStyle object for message header (renamed and type changed).

Removed Properties

V4 NameTypeDescription
protectedGroupIconImageTypeCustom icon for protected group (removed in v5).
privateGroupIconImageTypeCustom icon for private group (removed in v5).
backButtonIconImageTypeIcon for back button (removed in v5).
disableTypingbooleanControls typing indicator functionality (removed in v5).
avatarStyleobjectStyle configuration for avatar (removed in v5).
statusIndicatorStyleobjectStyle configuration for status indicator (removed in v5).
headViewContainerStyleobjectCustom styling for headViewContainer in list item (removed in v5).
bodyViewContainerStyleobjectCustom styling for bodyViewContainerStyle in list item (removed in v5).
tailViewContainerStyleobjectCustom styling for tailViewContainerStyle in list item (removed in v5).
listItemStyleobjectCustom styling for list item (removed in v5).

Message List

New Properties

NameTypeDescription
parentMessageIdstringID of the parent message when rendering threaded messages.
userCometChat.UserThe user object associated with the message list.
groupCometChat.GroupThe group object associated with the message list.
EmptyView() => JSX.ElementA component to display when there are no messages.
ErrorView() => JSX.ElementA component to display when an error occurs.
hideErrorbooleanFlag to hide the error view.
LoadingView() => JSX.ElementA component to display while messages are loading.
receiptsVisibilitybooleanFlag to hide read receipts.
disableSoundForMessagesbooleanFlag to disable sound for incoming messages.
customSoundForMessagesstringCustom sound URL for messages.
alignmentMessageListAlignmentTypeAlignment type for the message list.
avatarVisibilitybooleanFlag to show or hide the user’s avatar.
datePattern(message: CometChat.BaseMessage) => stringFunction that returns a custom string representation for a message’s date.
dateSeparatorPattern(date: number) => stringFunction that returns a custom date separator string based on a timestamp.
templatesArray<CometChatMessageTemplate>An array of message templates for rendering custom message types.
addTemplatesArray<CometChatMessageTemplate>An array of message templates for rendering custom message types.
messageRequestBuilderCometChat.MessagesRequestBuilderBuilder for constructing a request to fetch messages.
scrollToBottomOnNewMessagesbooleanIf true, the message list will scroll to the bottom when new messages arrive.
onThreadRepliesPress(messageObject: CometChat.BaseMessage, messageBubbleView: () => JSX.Element | null) => voidCallback invoked when the thread replies view is pressed.
HeaderView({ user, group, id }: { user?: CometChat.User; group?: CometChat.Group; id?: { uid?: string; guid?: string; parentMessageId?: string } }) => JSX.ElementCustom header view component.
FooterView({ user, group, id }: { user?: CometChat.User; group?: CometChat.Group; id?: { uid?: string; guid?: string; parentMessageId?: string } }) => JSX.ElementCustom footer view component.
onError(e: CometChat.CometChatException) => voidCallback to handle errors.
onBack() => voidCallback invoked on back navigation.
textFormattersArray<CometChatMentionsFormatter | CometChatUrlsFormatter | CometChatTextFormatter>Collection of text formatter classes to apply custom formatting.
onReactionPress(reaction: CometChat.ReactionCount, messageObject: CometChat.BaseMessage) => voidCallback invoked when a reaction is pressed.
onReactionLongPress(reaction: CometChat.ReactionCount, messageObject: CometChat.BaseMessage) => voidCallback invoked when a reaction is long pressed.
onReactionListItemPress(messageReaction: CometChat.Reaction, messageObject: CometChat.BaseMessage) => voidCallback invoked when an item in the reaction list is pressed.
styleDeepPartial<CometChatTheme["messageListStyles"]>Custom styles for the message list component.
reactionsRequestBuilderCometChat.ReactionsRequestBuilderBuilder for constructing a request to fetch reactions.
onAddReactionPress() => voidCallback invoked when the add reaction button is pressed.
quickReactionList[string, string?, string?, string?, string?]List of quick reactions.
onLoad(messageList: CometChat.BaseMessage[]) => voidCallback to handle when the message list is loaded.
onEmpty() => voidCallback to handle when the message list is empty.
hideReplyInThreadOptionbooleanFlag to hide the reply in thread option.
hideShareMessageOptionbooleanFlag to hide the share message option.
hideEditMessageOptionbooleanFlag to hide the edit message option.
hideTranslateMessageOptionbooleanFlag to hide the translate message option.
hideDeleteMessageOptionbooleanFlag to hide the delete message option.
hideReactionOptionbooleanFlag to hide the react to message option.
hideMessagePrivatelyOptionbooleanFlag to hide the message privately option.
hideCopyMessageOptionbooleanFlag to hide the copy message option.
hideMessageInfoOptionbooleanFlag to hide the message info option.
hideGroupActionMessagesbooleanFlag to hide group action messages.
hideTimestampbooleanFlag to hide the timestamp on message bubbles.
suggestedMessagesArray<string>Array of suggested messages for AI agent empty view (only applies to @agentic users).
hideSuggestedMessagesbooleanFlag to hide suggested messages in AI agent empty view (only applies to @agentic users).
emptyChatGreetingViewReact.ReactNodeCustom AI agent greeting view (only applies to @agentic users).
emptyChatIntroMessageViewReact.ReactNodeCustom AI agent intro message view (only applies to @agentic users).
emptyChatImageViewReact.ReactNodeCustom AI agent image/avatar view (only applies to @agentic users).
onSuggestedMessageClick(suggestion: string) => voidCallback when suggested message is clicked (only applies to @agentic users).
aiAssistantToolsCometChatAIAssistantToolsCustom AI assistant tools with action functions (only applies to @agentic users).
streamingSpeednumberControls the speed of AI message streaming (only applies to @agentic users).

Renamed Properties

V4 NameV5 NameTypeDescription
EmptyStateViewEmptyView() => JSX.ElementCustom component to display for the empty state.
ErrorStateViewErrorView() => JSX.ElementCustom component to display for the error state.
LoadingStateViewLoadingView() => JSX.ElementCustom component to display for the loading state.
hideReceipt / disableReceiptreceiptsVisibilitybooleanControls receipt visibility.
showAvataravatarVisibilitybooleanToggle visibility for avatar.
dateSeparatorPatterndateSeparatorPattern(date: number) => stringSignature clarified with parameter name.

Removed Properties

V4 NameTypeDescription
emptyStateTextstringText to be displayed if no message found.
errorStateTextstringText to be displayed if there is an error.
readIconImageTypeCustom icon for read message.
deliveredIconImageTypeCustom icon for delivered message.
sentIconImageTypeCustom icon for sent message.
waitIconImageTypeCustom icon for waiting message.
errorIconImageTypeCustom icon for error message.
wrapperMessageBubbleStyleMessageBubbleStyleInterfaceStyle for message bubble wrapper.
avatarStyleAvatarStyleInterfaceStyle configuration for avatar.
dateSeperatorStyleDateStyleInterfaceStyle for date separator.
actionSheetStyleActionSheetStylesInterfaceStyle for action sheet.
messageListStyleMessageListStyleInterfaceStyle configuration for message list.
messageInformationConfigurationCometChatMessageInformationConfigurationInterfaceConfiguration for message information.
reactionsConfigurationReactionsConfigurationInterfaceMessage Reaction Configuration.
reactionListConfigurationReactionListConfigurationInterfaceMessage Reaction List Configuration.
quickReactionConfigurationQuickReactionsConfigurationInterfaceQuick Reaction Configuration.
emojiKeyboardStyleEmojiKeyboardStyleEmoji Keyboard style.
disableReactionsbooleanDisables the reactions functionality.
disableMentionsbooleanDisables mentions functionality.
timeStampAlignmentMessageTimeAlignmentTypeAlignment for message timestamps.
newMessageIndicatorTextstringCustom text for new message indicator.
hideActionSheetHeaderbooleanHide the header of the action sheet.

Message Composer

New Properties

NameTypeDescription
idstring | numberMessage composer identifier.
userCometChat.UserCometChat SDK’s user object.
groupCometChat.GroupCometChat SDK’s group object.
disableSoundForOutgoingMessagesbooleanFlag to turn off sound for outgoing messages.
customSoundForOutgoingMessageanyCustom audio sound to be played while sending messages.
disableTypingEventsbooleanFlag to disable typing events.
initialComposertextstringInitial text to be displayed in the composer.
HeaderView({ user, group }: { user?: CometChat.User; group?: CometChat.Group }) => JSX.ElementRenders a preview section at the top of the composer.
onTextChange(text: string) => voidCallback triggered when the input text changes.
attachmentOptions({ user, group, composerId }: { user?: CometChat.User; group?: CometChat.Group; composerId: Map<any, any>; }) => CometChatMessageComposerAction[]Returns the attachment options for the composer.
AuxiliaryButtonView({ user, group, composerId }: { user?: CometChat.User; group?: CometChat.Group; composerId: string | number; }) => JSX.ElementReplaces the default Auxiliary Button.
SendButtonView({ user, group, composerId }: { user?: CometChat.User; group?: CometChat.Group; composerId: string | number; }) => JSX.ElementReplaces the default Send Button.
parentMessageIdstring | numberMessage id required for threaded messages.
styleDeepPartial<CometChatTheme["messageComposerStyles"]>Custom styles for the message composer component.
hideVoiceRecordingButtonbooleanFlag to hide the voice recording button.
onSendButtonPress(message: CometChat.BaseMessage) => voidCallback triggered when the send button is pressed.
onError(error: CometChat.CometChatException) => voidCallback triggered when an error occurs.
keyboardAvoidingViewPropsKeyboardAvoidingViewPropsOverride properties for the KeyboardAvoidingView.
textFormattersArray<CometChatMentionsFormatter | CometChatUrlsFormatter | CometChatTextFormatter>Collection of text formatter classes to apply custom formatting.
disableMentionsbooleanFlag to disable mention functionality.
imageQualityIntRange<1, 100>Controls image quality when taking pictures from the camera.
hideCameraOptionbooleanIf true, hides the camera option from the attachment options.
hideImageAttachmentOptionbooleanIf true, hides the image attachment option from the attachment options.
hideVideoAttachmentOptionbooleanIf true, hides the video attachment option from the attachment options.
hideAudioAttachmentOptionbooleanIf true, hides the audio attachment option from the attachment options.
hideFileAttachmentOptionbooleanIf true, hides the file/document attachment option from the attachment options.
hidePollsAttachmentOptionbooleanIf true, hides the polls option from the attachment options.
hideCollaborativeDocumentOptionbooleanIf true, hides the collaborative document option.
hideCollaborativeWhiteboardOptionbooleanIf true, hides the collaborative whiteboard option.
hideAttachmentButtonbooleanIf true, hides the entire attachment button from the composer.
hideStickersButtonbooleanIf true, hides the stickers button from the composer.
hideSendButtonbooleanIf true, hides the send button from the composer.
hideAuxiliaryButtonsbooleanIf true, hides all auxiliary buttons (such as voice input, GIFs, or other plugin buttons).
addAttachmentOptions({ user, group, composerId }: { user?: CometChat.User; group?: CometChat.Group; composerId: Map<any, any>; }) => CometChatMessageComposerAction[]Returns additional attachment options for the composer.
auxiliaryButtonsAlignment"left" | "right"Determines the alignment of auxiliary buttons.

Renamed Properties

V4 NameV5 NameTypeDescription
disableSoundForMessagesdisableSoundForOutgoingMessagesbooleanRenamed for clarity.
customSoundForMessagecustomSoundForOutgoingMessageanyRenamed for clarity.
textinitialComposertextstringRenamed for clarity.
onChangeTextonTextChange(text: string) => voidRenamed for clarity.
hideVoiceRecordinghideVoiceRecordingButtonbooleanRenamed for clarity.
attachmentOptionsattachmentOptionsfunction signature changedFunction signature updated.
SecondaryButtonViewAuxiliaryButtonViewfunction signature changedFunction signature updated and renamed.

Removed Properties

V4 NameTypeDescription
FooterViewReact.FCPreview section at the bottom of the composer.
placeHolderTextstringText shown in the composer when the input message is empty.
maxHeightnumberThreshold value for input expansion.
attachmentIconImageTypeAttachment icon.
messageComposerStyleMessageComposerStyleInterfaceMessage Composer Styles.
hideLiveReactionbooleanHide the live reaction button.
liveReactionIconImageTypeLive reaction icon.
voiceRecordingIconURLstring | ImageTypeImage URL for the voice recording icon.
mediaRecorderStyleMediaRecorderStyleVoice Recording Styles.
pauseIconUrlImageTypePause icon.
playIconUrlImageTypePlay icon.
recordIconUrlImageTypeRecord icon.
deleteIconUrlImageTypeDelete icon.
stopIconUrlImageTypeStop icon.
submitIconUrlImageTypeSubmit icon.
AIIconURLstringAI Icon URL.
aiOptionsStyleAIOptionsStyleAI Options Style.

Incoming Call

New Properties

NameTypeDescription
callCometChat.Call | CometChat.CustomMessage | anyThe incoming call object, which can be a Call or a CustomMessage.
ItemView(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementCustom view for the entire call item.
TitleView(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementCustom view for the title section of the call item.
SubtitleView(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementCustom view for the subtitle section of the call item.
LeadingView(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementCustom view for the leading section of the call item.
TrailingView(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementCustom view for the trailing section of the call item.
disableSoundForCallsbooleanFlag to disable sound for incoming calls.
customSoundForCallsstringPath or identifier for a custom sound to play for incoming calls.
onAccept(message: CometChat.BaseMessage) => voidCallback fired when the call is accepted.
onDecline(message: CometChat.BaseMessage) => voidCallback fired when the call is declined.
onError(e: CometChat.CometChatException) => voidCallback fired when an error occurs.
callSettingsBuildertypeof CometChatCalls.CallSettingsBuilderOptional custom call settings builder.
styleDeepPartial<IncomingCallStyle>Custom style overrides for the incoming call component.

Renamed Properties

V4 NameV5 NameTypeDescription
SubtitleViewSubtitleViewfunction signature changedFunction signature updated.
incomingCallStylestyleIncomingCallStyleInterfaceDeepPartial<IncomingCallStyle>Style object for incoming call (renamed and type changed).
onAcceptonAcceptfunction signature changedFunction signature updated.
onDeclineonDeclinefunction signature changedFunction signature updated.

Removed Properties

V4 NameTypeDescription
titlestringCustom title text.
acceptButtonTextstringAccept button text.
declineButtonTextstringDecline button text.
avatarStyleAvatarStyleInterfaceStyle configuration for avatar.
ongoingCallScreenStyleOngoingCallStyleInterfaceStyle for ongoing call screen.

Outgoing Call

New Properties

NameTypeDescription
onEndCallButtonPressed(call: CometChat.Call) => voidCallback for when the end/cancel button is pressed.
EndCallView(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementCustom view for the end call button.
TitleView(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementCustom view for the title section.
SubtitleView(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementCustom view for the subtitle section.
AvatarView(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementCustom view for the avatar section.

Renamed Properties

V4 NameV5 NameTypeDescription
onDeclineButtonPressedonEndCallButtonPressed(call: CometChat.Call) => voidRenamed for clarity and consistency.
declineButtonIconEndCallViewImageType(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementChanged from icon/image to custom view.
declineButtonTextEndCallViewstring(call: CometChat.Call | CometChat.CustomMessage) => JSX.ElementChanged from text to custom view.
outgoingCallStylestyleOutgoingCallStyleInterfaceDeepPartial<OutgoingCallStyle>Style object renamed and type changed.

Removed Properties

V4 NameTypeDescription
buttonStyleButtonStyleInterfaceStyle object for button (removed, not present in v5).
avatarStyleAvatarStyleInterfaceStyle object for avatar (removed, not present in v5).
declineButtonTextstringDecline button text (replaced by EndCallView).
declineButtonIconImageTypeDecline button icon (replaced by EndCallView).
onDeclineButtonPressed(call: CometChat.Call) => voidCallback (renamed to onEndCallButtonPressed).
outgoingCallStyleOutgoingCallStyleInterfaceStyle object (renamed to style).
callSettingsBuildertypeof CometChatCalls.CallSettingsBuilder(Moved to new properties, type clarified).
themeCometChatThemeTheme configuration (removed, not present in v5).
cardStyleCardStyleInterfaceCard style (removed, not present in v5).
ongoingCallConfigurationOngoingCallConfigurationInterfaceOngoing call config (removed, not present in v5).

Call Buttons

New Properties

NameTypeDescription
callSettingsBuilder(user?: CometChat.User, group?: CometChat.Group, isAudioOnly?: boolean) => typeof CometChatCalls.CallSettingsBuilderFunction to build call settings for call initialization.
outgoingCallConfigurationOutgoingCallConfigurationConfiguration for outgoing calls.
styleDeepPartial<CallButtonStyle>Custom style overrides for the call button.

Renamed Properties

V4 NameV5 NameTypeDescription
hideVoiceCallhideVoiceCallButtonbooleanRenamed for clarity.
hideVideoCallhideVideoCallButtonbooleanRenamed for clarity.
callButtonStylestyleCallButtonStyleInterfaceDeepPartial<CallButtonStyle>Style object renamed and type changed.

Removed Properties

V4 NameTypeDescription
voiceCallIconImageImageTypeImage icon for voice calls.
voiceCallIconTextstringText label for the voice call icon.
videoCallIconImageImageTypeImage icon for video calls.
videoCallIconTextstringText label for the video call icon.
onVoiceCallPress(params: { user?: CometChat.User, group?: CometChat.Group }) => voidCallback for voice call icon click.
onVideoCallPress(params: { user?: CometChat.User, group?: CometChat.Group }) => voidCallback for video call icon click.
callButtonStyleCallButtonStyleInterfaceStyle object (renamed to style).

Call Logs

New Properties

NameTypeDescription
LeadingView(call?: any) => JSX.ElementCustom component for the leading view of each call log item.
TitleView(call?: any) => JSX.ElementCustom component for the title view of each call log item.
SubtitleView(call?: any) => JSX.ElementCustom component for the subtitle view of each call log item.
ItemView(call?: any) => JSX.ElementCustom component for the entire call log item.
TrailingView(call?: any) => JSX.ElementCustom component for the trailing view of each call log item.
AppBarOptions() => JSX.ElementCustom options to render in the AppBar.
callLogRequestBuilderanyBuilder for custom call log requests.
datePatternValueOf<typeof DateHelper.patterns>Date format pattern for call logs.
showBackButtonbooleanFlag to show the back button in the header.
EmptyView() => JSX.ElementCustom component to render when the call log list is empty.
ErrorView(e: CometChat.CometChatException) => JSX.ElementCustom component to render in case of an error.
LoadingView() => JSX.ElementCustom component to render while loading call logs.
hideErrorbooleanFlag to hide the error view.
onCallIconPress(item: any) => voidCallback when the call icon is pressed.
onError(e: CometChat.CometChatException) => voidCallback for handling errors.
onBack() => voidCallback for when the back button is pressed.
onItemPress(call: any) => voidCallback for when a call log item is pressed.
styleDeepPartial<CometChatTheme["callLogsStyles"]>Custom style overrides for the call logs.
outgoingCallConfigurationCometChatOutgoingCallInterfaceConfiguration for outgoing calls.
onLoad(list: any[]) => voidCallback when the list is fetched and loaded.
onEmpty() => voidCallback when the list is empty (no items).
onItemLongPress(prop: { call: any }) => voidCalled on a long press of the default list item view.
hideHeaderbooleanHide the toolbar header.
hideLoadingStatebooleanHide the loading state.
addOptions(call: any) => MenuItemInterface[]Append more menu items on top of the default menu items for a call log.
options(call: any) => MenuItemInterface[]Replace the default menu items entirely for a call log.

Renamed Properties

V4 NameV5 NameTypeDescription
TailViewTrailingView(param: { call?: any }) => JSX.Element(call?: any) => JSX.ElementSignature and name updated for trailing view.
ListItemViewItemView(param: { call?: any }) => JSX.Element(call?: any) => JSX.ElementSignature and name updated for item view.
EmptyStateViewEmptyView() => JSX.ElementCustom component for empty state.
ErrorStateViewErrorView() => JSX.Element(e: CometChat.CometChatException) => JSX.ElementSignature and name updated for error view.
LoadingStateViewLoadingView() => JSX.ElementCustom component for loading state.
callLogsStylestyleCallLogsStyleInterfaceDeepPartial<CometChatTheme["callLogsStyles"]>Style object renamed and type changed.
optionsoptionsFunction signature updatedNow receives (call: any) instead of { message: any }.
datePatterndatePatternType updatedNow uses ValueOf<typeof DateHelper.patterns>.

Removed Properties

V4 NameTypeDescription
titlestringTitle of the call log list component.
emptyStateTextstringText to be displayed when the state is empty.
errorStateTextstringText to be displayed when error occurs.
loadingIconImageTypeIcon to be displayed when loading.
avatarStyleAvatarStyleInterfaceStyle configuration for avatar.
listItemStyleListItemStyleInterfaceStyle configuration for individual list items.
headViewContainerStyleStyleProp<ViewStyle>Custom styling for headViewContainer.
bodyViewContainerStyleStyleProp<ViewStyle>Custom styling for bodyViewContainer.
tailViewContainerStyleStyleProp<ViewStyle>Custom styling for tailViewContainer.
missedAudioCallIconUrlstringCustom missed audio call icon URL.
missedVideoCallIconUrlstringCustom missed video call icon URL.
incomingAudioCallIconUrlstringCustom incoming audio call icon URL.
incomingVideoCallIconUrlstringCustom incoming video call icon URL.
outgoingAudioCallIconUrlstringCustom outgoing audio call icon URL.
outgoingVideoCallIconUrlstringCustom outgoing video call icon URL.
BackButtonJSX.ElementCustom back button element.
onInfoIconPress(prop: { call: any }) => voidCallback for info icon press.
infoIconImageTypeInfo icon image.
themeCometChatThemeTheme configuration for the call logs component.
hideSeperatorbooleanToggle visibility of separator.

Next Steps