Skip to main content

Overview

CometChatSearch is a unified search component. It searches across conversations and messages, displaying results in separate sections with filter chips for scoping. It emits the selected result via onConversationClicked or onMessageClicked — both include the searchKeyword in the event payload. Wire it to CometChatConversations or CometChatMessageList to navigate to the matched result.
Live Preview — interact with the default search component.Open in Storybook ↗
The component handles:
  • Dual-section results (conversations + messages)
  • Filter chips for scoping (messages, conversations, unread, groups, photos, videos, links, files, audio)
  • Scoped search via uid or guid
  • Custom request builders for both conversations and messages
  • Customizable result item views

Usage

Flat API

Compound Composition

Scoped Search Example

Full Layout Example


Filtering

Search Scope

Control which result sections appear using searchIn:

Filter Chips

Control which filter chips are available:
Scope the search to a specific user or group conversation:

Custom Request Builders

Pass custom request builders for fine-grained control:

Actions and Events

Callback Props

PropSignatureFires when
onConversationClicked(event: CometChatSearchConversationClickEvent) => voidUser clicks a conversation result
onMessageClicked(event: CometChatSearchMessageClickEvent) => voidUser clicks a message result
onBack() => voidBack button is clicked
onError((error: CometChat.CometChatException) => void) | nullSDK error occurs

Events Emitted

None.

Events Received

None.

SDK Listeners (Automatic)

None — the component fetches results on search input change and does not subscribe to real-time SDK listeners.

Customization

View Props

Use view props to replace sections of the default UI while keeping the component’s behavior intact:
SlotSignatureReplaces
initialViewReactNodePre-search state (before user types)
loadingViewReactNodeLoading shimmer
emptyViewReactNodeEmpty state (no results)
errorViewReactNodeError state
conversationItemView(conversation) => ReactNodeEntire conversation result row
conversationLeadingView(conversation) => ReactNodeAvatar section of conversation result
conversationTitleView(conversation) => ReactNodeTitle of conversation result
conversationSubtitleView(conversation) => ReactNodeSubtitle of conversation result
conversationTrailingView(conversation) => ReactNodeTrailing section of conversation result
messageItemView(message) => ReactNodeEntire message result row
messageLeadingView(message) => ReactNodeAvatar section of message result
messageTitleView(message) => ReactNodeTitle of message result
messageSubtitleView(message) => ReactNodeSubtitle of message result
messageTrailingView(message) => ReactNodeTrailing section of message result

messageItemView

Replace the entire message list item in search results.

messageLeadingView

Replace the message avatar / left section.

messageTitleView

Replace the message title text.

messageSubtitleView

Replace the message subtitle text.

Compound Composition

For full layout control, use sub-components. Omit any sub-component to hide that section:
Available sub-components:
Sub-componentDescriptionPropsFlat API equivalent
RootContext provider and containerAll Root props + children
ConversationsListConversation results sectionclassName
MessagesListMessage results sectionclassName
The flat API and Root accept the same props — all view slots are directly on Root. There are no separate convenience props.

CSS Styling

Override design tokens on the component selector:

Props

All props are optional.
The flat API and Root accept the same props — all view slots are directly on Root. There are no separate convenience props.

searchIn

Which result sections to show. Empty array (default) shows both conversations and messages.
TypeCometChatSearchScope[]
Default[] (both)

searchFilters

Filter chips to display in the filter bar.
TypeCometChatSearchFilter[]
DefaultAll available filters

initialSearchFilter

Pre-select a filter chip on mount.
TypeCometChatSearchFilter
Defaultundefined

defaultSearchText

Pre-populate the search input with this text.
Typestring
Defaultundefined

uid

Scope search to a specific user’s conversation. When set, conversation filters are hidden.
Typestring
Defaultundefined

guid

Scope search to a specific group’s conversation. When set, conversation filters are hidden.
Typestring
Defaultundefined

hideBackButton

Hide the back button in the header.
Typeboolean
Defaultfalse

hideUserStatus

Hide user online/offline status indicators in conversation results.
Typeboolean
Defaultfalse

hideGroupType

Hide group type badge in conversation results.
Typeboolean
Defaultfalse

hideReceipts

Hide message delivery/read receipts in conversation results.
Typeboolean
Defaultfalse

textFormatters

Text formatters applied to conversation subtitles.
TypeCometChatTextFormatter[]
Defaultundefined

lastMessageDateTimeFormat

Custom date/time format for the last message timestamp in conversation results.
TypeCometChatDateFormatConfig
DefaultDD/MM/YYYY for all date ranges in search context

messageSentAtDateTimeFormat

Custom date/time format for the sent-at timestamp in message results.
TypeCometChatDateFormatConfig
Defaultundefined

conversationsRequestBuilder

Custom request builder for conversation search. Pass the builder instance — not the result of .build().
TypeCometChat.ConversationsRequestBuilder
DefaultSDK default

messagesRequestBuilder

Custom request builder for message search. Pass the builder instance — not the result of .build().
TypeCometChat.MessagesRequestBuilder
DefaultSDK default

conversationOptions

Function that returns context menu options for each conversation result item.
Type(conversation: CometChat.Conversation) => CometChatSearchConversationOption[]
Defaultundefined

onBack

Callback when the back button is clicked.
Type() => void
Defaultundefined

onConversationClicked

Callback when a conversation result item is clicked. The event includes the search keyword.
Type(event: CometChatSearchConversationClickEvent) => void
Defaultundefined

onMessageClicked

Callback when a message result item is clicked. The event includes the search keyword.
Type(event: CometChatSearchMessageClickEvent) => void
Defaultundefined

onError

Callback when an SDK error occurs during search.
Type((error: CometChat.CometChatException) => void) | null
Defaultnull

CSS Selectors

TargetSelector
Root container.cometchat-search
Header.cometchat-search__header
Search bar.cometchat-search__search-bar
Filter chips.cometchat-search__filters
Results container.cometchat-search__results
Conversations section.cometchat-search__conversations-section
Messages section.cometchat-search__messages-section
Initial state.cometchat-search__initial-state
Empty state.cometchat-search__empty-state
Error state.cometchat-search__error-state
Loading state.cometchat-search__loading-state

Next Steps

Conversations

Display the conversation list alongside search

Message List

Navigate to matched messages in the message list

Theming

Customize colors, fonts, and spacing