cometchat-react-v7-components
SkillCommunicationThe React v7 UI Kit component catalog, which drop-in components exist and how to compose/swap them (conversations, messages, users, groups, threads, calling, bubbles). Triggers: 'what cometchat components are there', 'customize the message list', 'swap the message bubble', 'add a users list'.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the cometchat-react-v7-components skill
What this skill tells your AI
The instructions your AI receives, as published by cometchat/cometchat-skills in skills/cometchat-react-v7-components/SKILL.md and read by ahel’s review.
Ground truth:
@cometchat/chat-uikit-react@7. Component names below are from the live v7 components docs (see../cometchat-react-v7-core/references/docs-map.md→/ui-kit/react/components-overview). Status: catalog-verified vs installed 7.1.0 (exports-onlyweb-v7.json). Fetch each component's prop table from its.mdtwin (../cometchat-react-v7-core/references/docs-map.md) — do NOT bake it; never read.d.ts.
Companion skills (read first)
cometchat-react-v7-core— install, credentials,init→login→render, provider. This skill ASSUMES it.
Use this skill when
Choosing, composing, or swapping UI Kit components; "which components exist"; customizing a list/message/bubble.
Prerequisites & install
Covered by core. This skill adds no new package.
Component catalog (BAKED closed list — from live v7 docs; confirm vs web-v7.json)
Conversations & lists: CometChatConversations, CometChatUsers, CometChatGroups, CometChatGroupMembers.
Messages: CometChatMessageHeader, CometChatMessageList, CometChatMessageComposer, CometChatMessageBubble, CometChatThreadHeader, CometChatMessageInformation, CometChatReactions, CometChatReactionList.
Message bubbles: CometChatTextBubble, CometChatImagesBubble, CometChatVideosBubble, CometChatAudiosBubble, CometChatVoiceNoteBubble, CometChatFilesBubble, CometChatPollBubble, CometChatStickerBubble, CometChatCollaborativeDocumentBubble, CometChatCollaborativeWhiteboardBubble, CometChatCardBubble, CometChatGroupActionBubble, CometChatCallActionBubble, CometChatCallBubble.
Calling UI: CometChatCallButtons, CometChatIncomingCall, CometChatOutgoingCall, CometChatOngoingCall, CometChatCallLogs.
Search & AI: CometChatSearch, CometChatAIAssistantChat, CometChatSmartReplies, CometChatConversationStarter, CometChatConversationSummary.
Moderation / notifications feed: CometChatModerationView, CometChatNotificationFeed, CometChatFlagMessageDialog (end-user report/flag dialog).
Interactive/dialogs: CometChatCreatePoll (poll-authoring dialog; pairs with CometChatPollBubble).
Base/util: CometChatProvider, CometChatAvatar, CometChatButton, CometChatFullScreenViewer, CometChatConfirmDialog, CometChatContextMenu, CometChatErrorBoundary.
This is the closed list — if a name isn't here (and in
web-v7.json), it does not exist; do not use it. Phantoms removed 2026-07-30 (AUDIT-008 — reviewer G0 catalog sweep vs installed@cometchat/chat-uikit-react@7.1.0.d.ts). These names were in earlier drafts but DO NOT exist in v7 — never emit them:CometChatTypingIndicator(typing renders insideCometChatMessageHeader;CometChatTypingDisplayis a type, not a component),CometChatEmojiKeyboard(emoji is the built-in EMOJI button inCometChatMessageComposer),CometChatMediaRecorder(voice recording is built intoCometChatMessageComposer,hideVoiceRecordingButtondefault false),CometChatListItem(list items are internal item-views of the list components),CometChatToast(no standalone toast component). NoteCometChatNotificationsis a Chat SDK class (@cometchat/chat-sdk-javascript, push token registration) — NOT a UI Kit component; don't render it.
Swap / compose slots
- v7 components are compound components: compose behavior via namespace sub-components (e.g.
Root,View,EmptyState) and prop-driven slots rather than deep prop sprawl. Fetch the exact composition API + props from the component's.mdtwin (../cometchat-react-v7-core/references/docs-map.md) before emitting — never the.d.ts. - Custom UI goes in a component's view slot, INSIDE it — never as a sibling on top. Stable props + view slots for the 4 drop-ins are baked in
../cometchat-react-v7-core/references/component-props.md(ConversationsheaderView/searchView, MessageHeadertrailingView/auxiliaryButtonView, MessageListheaderView/footerView, ComposerauxiliaryButtonView/headerView) — use them before hand-rolling or hanging controls outside the component. - Prefer configuring the highest-level component (e.g.
CometChatConversations) over rebuilding it from base components. - Reuse built-in triggers before hand-rolling UI. Map each requested action to an existing prop/callback/slot FIRST; only add custom buttons when none exists. Discovery order: prop table + each prop's "when to use it" note in docs → if undescribed, fetch the component's
.mdtwin (../cometchat-react-v7-core/references/docs-map.md) → then custom. Known wiring points:CometChatMessageHeaderonItemClick(open user/group profile on header click) andonSearchOptionClicked(built-in search button,showSearchOptiondefaulttrue);CometChatConversationsonSearchBarClicked(conversation search);CometChatMessageListonThreadRepliesClick(thread panel). See AUDIT-006.
Creating a group (host-composed — NO kit component; offer ALL THREE types incl. password)
v7 ships no CometChatCreateGroup component — the create-group form is HOST-BUILT. Build it from the guide-group-chat-setup guide (docs-map "Task guides"), which shows the full form. It MUST offer all THREE group types — Public · Private · Password-protected — not just public/private (AUDIT-081). The Password type REQUIRES a password field; create the group with the Chat SDK (symbols verified vs installed 7.x SDK):
import { CometChat } from "@cometchat/chat-sdk-javascript";
// type ∈ CometChat.GROUP_TYPE.PUBLIC | .PRIVATE | .PASSWORD ("public" | "private" | "password")
const group = new CometChat.Group(guid, groupName, CometChat.GROUP_TYPE.PASSWORD, password); // 4th arg = password (REQUIRED for the PASSWORD type)
await CometChat.createGroup(group);
Show the password input ONLY when the Password type is chosen, and require it before submit (public/private need no password). Dropping the Password option (offering only public/private) is a create-group defect — the SDK (Group(guid, name, type, password?), GROUP_TYPE.PASSWORD) and the guide both support it.
Banned members — view + unban (SDK fallback; NO kit component or UI-Kit doc)
The group-details contract requires view-banned-members, but v7 ships no banned-members drop-in — CometChatGroupMembers shows only ACTIVE members (it exposes the ban ACTION via hideBanMemberOption, not a banned view), and the UI-Kit guide/component docs don't cover viewing banned users (AUDIT-082). So surface them via the Chat SDK (UI-Kit-first → SDK-fallback, RULES.md §13; symbols verified vs installed 7.x SDK + documented at sdk/javascript/group-kick-ban-members). Add a scope-gated "Banned members" affordance in group details (admins/owners only):
import { CometChat } from "@cometchat/chat-sdk-javascript";
// FETCH — paginate by calling fetchNext() again on the SAME request object (max limit 100)
const req = new CometChat.BannedMembersRequestBuilder(guid).setLimit(30).build(); // .setSearchKeyword(kw) optional
const banned = await req.fetchNext(); // Promise<CometChat.GroupMember[]>
// UNBAN (admin/owner only), then refresh the list
await CometChat.unbanGroupMember(guid, uid); // Promise<boolean>
Gate the whole affordance on the logged-in user's group scope (admin/owner) — a plain member shouldn't see it. Render the banned list with an "Unban" action per row (refresh on success). Mirrors the official sample app's "Banned Members" section (the sample_banned_members string). This closes the ban round-trip: ban (in CometChatGroupMembers) → view banned → unban.
Common pitfalls (BAKED)
- Default-on affordances that need stitching. A drop-in can render a live-looking control BY DEFAULT that no-ops until the host wires a callback + companion panel. When FETCHing props, flag these and either wire or hide them — never let one dead-end. Known cases (v7):
CometChatConversationsshowSearchBar(defaulttrue) only client-side-filters loaded names → wireonSearchBarClicked→CometChatSearchor setshowSearchBar={false};CometChatMessageListthread-reply indicator → wireonThreadRepliesClick+ thread panel or sethideReplyInThreadOption. Seefeatures.jsonneeds_stitchingand AUDIT.md. - Emitting a contracted component (e.g.
CometChatConversations,CometChatGroupMembers) without its FULLcontracts.jsonmin_capabilities ships an incomplete/inconsistent screen — include the full minimum every time (a group details screen MUST have view/add/kick/ban/banned/scope). - Create-group form offering only Public/Private (AUDIT-081). No kit create-group component exists, so the form is host-built — it MUST include the Password-protected type (with a password field required on submit), not just public/private. See "Creating a group" above.
- Referencing a component that isn't in the catalog (phantom). Rebuilding a drop-in from base parts when a prop/slot exists. Assuming v6 prop names — v7 changed the composition model; fetch current props.
Verify it works
The component renders and its data populates (list fills, message sends). If it's empty, confirm it's inside CometChatProvider with a logged-in user.
Signals
- GitHub stars
- 109
- Forks
- 2
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
cometchat-react-v7-components- Source
- github.com/cometchat/cometchat-skills