AI Integration Quick Reference
AI Integration Quick Reference
CometChatCardBubble component renders a developer Card Message (message.getCategory() === "card") as a card bubble inside a conversation. It is the card equivalent of the text bubble: the surrounding CometChatMessageList bubble supplies the container, receipts, reactions, options, reply and thread view — this component only replaces the content view with the rendered card.
Overview
The UI Kit is a render-only consumer of cards: it draws cards delivered by the SDK and forwards card actions to your app. It never parses or mutates the card body, and never sends or creates cards. When a card message arrives, the UI Kit routes it to this bubble automatically. The component follows a strict render-only contract:- Render-only — the raw card payload from
message.getCard()(or the rawdata.card) is serialized verbatim and handed to the prebuiltCometChatCardViewrenderer (from@cometchat/cards-react) as acardJsonstring. The UI Kit performs zero transformation of the payload. - No behavior — the bubble runs no action logic of its own. When a user taps an interactive element, the renderer’s raw action is pure-forwarded on two channels (see Card Actions); your app owns all behavior.
- Graceful fallback — when the payload is empty or invalid, a single-line fallback text is shown instead of an empty bubble (see Fallback Behavior).
Card rendering (layout, theming, interactive elements) is owned by the prebuilt
@cometchat/cards-react renderer library, not by the UI Kit. The UI Kit is responsible only for delivering the payload to the renderer and forwarding actions back out.Automatic Rendering
In the standard chat flow you do not instantiate this component yourself.CometChatMessageList routes any message with category "card" to CometChatCardBubble automatically, keyed by category (the developer type is arbitrary). To handle card actions in this flow, subscribe to the ccCardActionClicked event bus — no component wiring is required.
Use the component directly only when you are building a fully custom message renderer.
Basic Usage
Incoming vs Outgoing Messages
isSentByMe toggles the outgoing (sender) vs incoming (receiver) styling, mirroring the text bubble.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
message | CometChat.BaseMessage | — | The card message to render. The raw payload is read from message.getCard(), falling back to message.getData().card. Used both to draw the card and to tag forwarded actions. |
cardJson | string | derived from message | Raw card JSON to render directly. When omitted, it is derived from message. Used for nested agent-card blocks where the payload is already extracted. |
isSentByMe | boolean | true | Toggles outgoing/incoming styling. false for incoming/receiver messages, true for outgoing/sender messages. |
onCardAction | (message: CometChat.BaseMessage | undefined, action: any) => void | undefined | Optional per-instance action callback for apps that render this bubble directly. Carries the message and the renderer’s raw action. |
The renderer theme is resolved automatically from
CometChatUIKit.themeMode — there is no themeMode prop. To restyle the rendered card, theme the @cometchat/cards-react renderer directly.Card Actions
The Cards renderer is a pure renderer — it emits actions through a callback without executing them. The bubble forwards each action on both channels and runs no behavior of its own:onCardActionprop — for apps that render this bubble directly.CometChatUIEvents.ccCardActionClickedevent bus — for the standard, internally rendered flow where the bubble is created by the UI Kit. This is the recommended channel for the default message list.
Handling actions via the prop
Handling actions via the event bus
Fallback Behavior
When the payload is empty or invalid (null, a blank string, or an empty object), the bubble renders a single line of fallback text instead of an empty card. The fallback is resolved in this order:
message.getFallbackText()message.getText()- Localized
"Card Message"(thecard_messagelocalization key)
Customization
The card’s internal layout, colors, and typography are controlled by the@cometchat/cards-react renderer. The bubble wrapper and fallback line are styled with CSS variables:
@cometchat/cards-react.
Technical Details
- Content-view component — rendered as the
contentViewof the developer card message template, so it inherits the full bubble (status info, reply view, reactions, options). - Renderer dependency —
CometChatCardViewfrom@cometchat/cards-react. - Callback before schema — the renderer’s
onActioncallback is bound beforecardJsonis rendered, so actions are captured from the first tap. - Theme — the renderer
themeModeis taken fromCometChatUIKit.themeMode.
Related
- Card Messages guide — the full card rendering implementation: developer cards, agent cards, streaming cards, and the complete action vocabulary.
- CometChatMessageList — routes card messages to this bubble.
- CometChatMessageTemplate — the template that maps
category: "card"to this bubble. - Events — the
ccCardActionClickedevent reference.