AI Agent Component Spec
AI Agent Component Spec
What It Is
CometChatMessageTemplate is a model class, not a rendered component. Each instance maps a message type + category pair to a set of view functions that control how that message renders inside CometChatMessageList. Pass an array of templates to the templates prop on CometChatMessageList.
Template Structure
A message bubble is composed of these view slots, each overridable per template:| View | Default rendering | Signature |
|---|---|---|
headerView | Sender name | (message: CometChat.BaseMessage, alignment: MessageBubbleAlignment, textFormatters?: CometChatTextFormatter[]) => JSX.Element | null |
contentView | Text / image / video / audio / file bubble | (message: CometChat.BaseMessage, alignment: MessageBubbleAlignment, textFormatters?: CometChatTextFormatter[]) => JSX.Element | null |
footerView | Reactions | (message: CometChat.BaseMessage, alignment: MessageBubbleAlignment) => JSX.Element | null |
bottomView | Link previews, “load more” | (message: CometChat.BaseMessage, alignment: MessageBubbleAlignment) => JSX.Element | null |
statusInfoView | Receipt + timestamp | (message: CometChat.BaseMessage, alignment: MessageBubbleAlignment, hideReceipts?: boolean, messageSentAtDateTimeFormat?: CalendarObject, showError?: boolean) => JSX.Element | null |
replyView | Reply preview | (message: CometChat.BaseMessage, alignment?: MessageBubbleAlignment, onReplyViewClicked?: (msg: CometChat.BaseMessage) => void, textFormatters?: CometChatTextFormatter[]) => JSX.Element | null |
bubbleView | Entire bubble (overrides all above) | (message: CometChat.BaseMessage, alignment: MessageBubbleAlignment) => JSX.Element | null |
options | Long-press action sheet | (loggedInUser: CometChat.User, message: CometChat.BaseMessage, group?: CometChat.Group) => CometChatMessageOption[] |
Fetching Existing Templates
Retrieve the built-in templates and modify specific ones:Common Patterns
Custom header with status badge

Custom content view for a custom message type

- TypeScript
- CSS
Custom bottom view with warning

- TypeScript
- CSS
Replace entire bubble

- TypeScript
- CSS
Custom action sheet options

New template for a custom message type

Styling
CometChatMessageTemplate renders inside .cometchat-message-bubble. Style individual bubble sections using CSS:
Accessibility
Message templates render insideCometChatMessageList, which handles keyboard navigation and focus management. Custom views returned from template functions inherit the bubble’s focus and ARIA context. Ensure custom content includes appropriate aria-label attributes when visual-only indicators are used.
Properties
bubbleView
| Key | Value |
|---|---|
| Type | ((message: CometChat.BaseMessage, alignment: MessageBubbleAlignment) => Element | JSX.Element | null) | null |
| Default | null |
headerView, contentView, footerView, bottomView, statusInfoView, and replyView are ignored for that template.
bottomView
| Key | Value |
|---|---|
| Type | ((message: CometChat.BaseMessage, alignment: MessageBubbleAlignment) => Element | JSX.Element | null) | null |
| Default | null |
category
| Key | Value |
|---|---|
| Type | string |
| Default | "" |
CometChatUIKitConstants.MessageCategory.message, CometChatUIKitConstants.MessageCategory.custom).
contentView
| Key | Value |
|---|---|
| Type | ((message: CometChat.BaseMessage, alignment: MessageBubbleAlignment, textFormatters?: CometChatTextFormatter[]) => Element | JSX.Element | null) | null |
| Default | null |
footerView
| Key | Value |
|---|---|
| Type | ((message: CometChat.BaseMessage, alignment: MessageBubbleAlignment) => Element | JSX.Element | null) | null |
| Default | null |
headerView
| Key | Value |
|---|---|
| Type | ((message: CometChat.BaseMessage, alignment: MessageBubbleAlignment) => Element | JSX.Element | null) | null |
| Default | null |
options
| Key | Value |
|---|---|
| Type | (loggedInUser: CometChat.User, message: CometChat.BaseMessage, group?: CometChat.Group) => CometChatMessageOption[] |
| Default | SDK default options |
replyView
| Key | Value |
|---|---|
| Type | ((message: CometChat.BaseMessage, alignment?: MessageBubbleAlignment, onReplyViewClicked?: (msg: CometChat.BaseMessage) => void, textFormatters?: CometChatTextFormatter[]) => Element | JSX.Element | null) | null |
| Default | null |
statusInfoView
| Key | Value |
|---|---|
| Type | ((message: CometChat.BaseMessage, alignment: MessageBubbleAlignment, hideReceipts?: boolean, messageSentAtDateTimeFormat?: CalendarObject, showError?: boolean) => Element | JSX.Element | null) | null |
| Default | null |
type
| Key | Value |
|---|---|
| Type | string |
| Default | — (required) |
CometChatUIKitConstants.MessageTypes.text, CometChatUIKitConstants.MessageTypes.image).