cometchat-flutter-v6-features
SkillDocs & knowledgeEnable a specific CometChat feature in a Flutter v6 app — polls, stickers, collaborative whiteboard/document, translation, link preview, AI smart replies, moderation, calls, push. Looks the feature up in the features oracle, then wires only what the kit does not already do. Triggers: 'add polls in f
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-flutter-v6-features skill
What this skill tells your AI
The instructions your AI receives, as published by cometchat/cometchat-skills in skills/cometchat-flutter-v6-features/SKILL.md and read by ahel’s review.
Ground truth:
cometchat_chat_uikit: ^6.0+packages/registry/v6/features/catalog.json. (Official docs linked below.) Verify symbols against the installed package/source before relying on them.
Also serves Flutter V5 for feature enablement: there is no separate
cometchat-flutter-v5-features. Theapply-featureCLI + 5-tier taxonomy here are identical for V5 (enablement is the SDK/dashboard path, version-independent). Only the in-UI wiring differs — for V5's GetX-based surfaces, followcometchat-flutter-v5-customization/-callsfor the widget side. V5 is legacy/maintenance-only.
CometChat Flutter UIKit v6 — Features
How to enable, configure, and disable features in cometchat_chat_uikit.
1. Feature Categories
Canonical public feature-availability matrix: Features & Extensions Guide — the authoritative source for which integration method (UI Kit / UI Kit Builder / Widget Builder / SDK) supports each feature + dashboard setup + whether code is required. It outranks the local
catalog.jsonsnapshot on conflict; consult it (WebFetch or docs MCP) for any availability decision.
Every feature falls into one of these categories (the product's "work needed" model — Core/zero-setup · Builder-enabled · Config-only · Config+settings · SDK-integrated). Key rule: the only category that needs client code is the SDK-integrated one (a few extensions like Bitly / message shortcuts) — and for those the implementation lives in the docs (fetch + adapt it, don't hand-roll). Everything in the table below except such SDK-integrated extensions is enable-and-done (no code):
| Category | What it means | Example features | How to enable |
|---|---|---|---|
| Auto-enabled | Works out of the box when you render the standard components | Text/media messages, typing indicators, read receipts, reactions, message editing/deletion, threaded replies, @mentions | Just render CometChatMessageHeader + CometChatMessageList + CometChatMessageComposer |
| UIKitSettings flag | Set a property on UIKitSettingsBuilder before CometChatUIKit.init() | Voice/video calls (enableCalls: true), presence/typing (subscriptionType) | Set the flag → init |
| Extension | Backend extension, pure boolean toggle. CLI flips via the dashboard API. | Polls, stickers, message translation, link preview, collaborative document, collaborative whiteboard, image moderation, thumbnail generation | cometchat apply-feature <id> --app-id <X> → restart app |
| AI feature | Backend AI feature requiring an OpenAI API key on the app's AI settings | Smart replies, conversation starters, conversation summary | cometchat apply-feature <id> --app-id <X> --openai-key sk-... → restart app |
| Dashboard-only | Third-party API key / multi-field config the user must enter themselves | Giphy, Stipop, Tenor, Chatwoot, Intercom, Disappearing Messages, Message Shortcuts | Open https://app.cometchat.com → Chat & Messaging → Features → enter config → enable |
2. Auto-Enabled Features
These work immediately when you render the standard message components:
| Feature | Component | Notes |
|---|---|---|
| Text messages | CometChatMessageList + CometChatMessageComposer | Default message type |
| Image/video/audio/file messages | CometChatMessageComposer attachment options | Media picker built in |
| Read receipts | CometChatMessageList | Blue double-check. Disable with disableReceipts: true |
| Typing indicators | CometChatMessageHeader subtitle | Requires subscriptionType set in UIKitSettings |
| Reactions | CometChatMessageList | Long-press any message. Disable with disableReactions: true |
| Message editing/deletion | CometChatMessageList long-press menu | Own messages only |
| Threaded replies | CometChatMessageList | Controlled by hideReplyInThreadOption |
| Reply (quote) | CometChatMessageList | Swipe-to-reply via enableSwipeToReply: true (default) |
| @Mentions | CometChatMessageComposer | Type @ to trigger. Uses CometChatMentionsFormatter |
| Rich text (markdown) | CometChatMessageComposer | Bold, italic, strikethrough, code, lists, blockquote, links via WYSIWYG toolbar |
| Group action messages | CometChatMessageList | Member joined/left/kicked. Hide with hideGroupActionMessages: true |
3. UIKitSettings Features
Set these on UIKitSettingsBuilder before calling CometChatUIKit.init():
Calls
final settings = (UIKitSettingsBuilder()
..appId = 'YOUR_APP_ID'
..region = 'us'
..authKey = 'YOUR_AUTH_KEY'
..subscriptionType = CometChatSubscriptionType.allUsers
..enableCalls = true // ← enables voice & video calls
..callingConfiguration = CallingConfiguration(
outgoingCallConfiguration: CometChatOutgoingCallConfiguration(...),
incomingCallConfiguration: CometChatIncomingCallConfiguration(...),
callButtonsConfiguration: CallButtonsConfiguration(...),
groupSessionSettingsBuilder: sessionSettingsBuilder,
))
.build();
When enableCalls is true, the UIKit:
- Initializes
CometChatUIKitCallsafter chat SDK init - Registers call message templates (call bubbles in message list)
- Shows voice/video call buttons in
CometChatMessageHeader
For detailed call implementation, see the cometchat-flutter-v6-calls skill.
Presence & Typing
..subscriptionType = CometChatSubscriptionType.allUsers
Options: allUsers, roles, friends. Controls which users' presence and typing events you receive.
Date/Time Formatting
..dateTimeFormatterCallback = (DateTime dateTime) => 'custom format'
4. Backend Toggle Features (CLI)
These are backend extensions / AI features. Flutter projects don't write .cometchat/state.json, so call the CLI in stateless mode:
# Pure boolean extensions:
cometchat apply-feature polls --app-id <your-app-id>
cometchat apply-feature link-preview --app-id <your-app-id>
# AI features (require OpenAI key first time):
cometchat apply-feature smart-replies --app-id <your-app-id> --openai-key sk-...
Requires cometchat auth login once per machine. Once enabled, the UIKit auto-wires the UI.
For dashboard-only extensions (Giphy, Stipop, Tenor, Chatwoot, Intercom — they need third-party API keys / webhooks), use https://app.cometchat.com → Chat & Messaging → Features.
| Extension | UI surface when enabled | Extension directory |
|---|---|---|
| Polls | "Create Poll" option in composer attachment menu | extensions/polls/ |
| Stickers | Sticker picker button next to composer | extensions/stickers/ |
| Smart Replies | Chip suggestions above composer after incoming message | AI view: views/ai_smart_replies/ |
| Conversation Starters | Suggested messages when chat is empty | AI view: views/ai_conversation_starter/ |
| Conversation Summary | Summary panel above composer | AI view: views/ai_conversation_summary/ |
| Message Translation | "Translate" option in message long-press menu | extensions/message_translation/ |
| Link Preview | Rich preview card for URLs in messages | extensions/link_preview/ |
| Collaborative Document | "Document" option in composer attachment menu | extensions/collaborative_document/ |
| Collaborative Whiteboard | "Whiteboard" option in composer attachment menu | extensions/collaborative_whiteboard/ |
| Image Moderation | Blurs inappropriate images automatically | extensions/image_moderation/ |
| Thumbnail Generation | Auto-generates thumbnails for images/videos | extensions/thumbnail_generation/ |
5. Calls
Voice and video calling for 1:1 and group conversations. Built into cometchat_chat_uikit — no separate package.
// Enable in UIKitSettings
..enableCalls = true
// Call buttons appear automatically in CometChatMessageHeader
CometChatMessageHeader(
user: user,
group: group,
hideVoiceCallButton: false, // default
hideVideoCallButton: false, // default
)
CallingConfiguration bundles all call component configs:
CallingConfiguration(
outgoingCallConfiguration: CometChatOutgoingCallConfiguration(...),
incomingCallConfiguration: CometChatIncomingCallConfiguration(...),
callButtonsConfiguration: CallButtonsConfiguration(...),
groupSessionSettingsBuilder: sessionSettingsBuilder,
)
For the full call flow, init sequence, and gotchas, see the cometchat-flutter-v6-calls skill.
6. AI Features
AI features require enabling the corresponding extension in the CometChat dashboard. The UIKit provides built-in views for each.
Smart Replies
Suggested reply chips shown above the composer after receiving a message.
CometChatMessageList(
user: user,
group: group,
enableSmartReplies: true,
smartRepliesDelayDuration: 10000, // ms before showing suggestions
smartRepliesKeywords: ['what', 'when', 'why', 'who', 'where', 'how', '?'],
)
Conversation Starters
Suggested messages shown when the chat is empty to help start a conversation.
CometChatMessageList(
user: user,
group: group,
enableConversationStarters: true,
)
Conversation Summary
A summary of the conversation shown in a panel. Available via the AI option sheet in the message header.
AI Assistant
Full AI chat assistant with chat history. Uses Clean Architecture + BLoC at chat_ui/src/ai_assistant_chat_history/. The chat history button appears in CometChatMessageHeader for AI-type users.
Related props on CometChatMessageHeader:
hideChatHistoryButton— hide the AI chat history buttonhideNewChatButton— hide the new AI chat buttonchatHistoryButtonClick— custom callback for chat history tapnewChatButtonClick— custom callback for new chat tap
7. Rich Text & Formatters
The composer supports rich text formatting via the WYSIWYG toolbar (bold, italic, strikethrough, inline code, ordered/bullet lists, blockquote, links, code blocks).
Text Formatters
Pass textFormatters to both CometChatMessageList and CometChatMessageComposer for consistent rendering:
// Available formatters (in shared_ui/src/formatter/)
// - CometChatMentionsFormatter — @mention users
// - CometChatUrlFormatter — auto-link URLs
// - CometChatPhoneNumberFormatter — auto-link phone numbers
// - CometChatEmailFormatter — auto-link emails
// - MarkdownTextFormatter — render markdown in bubbles
CometChatMessageList(
user: user,
group: group,
textFormatters: [
CometChatMentionsFormatter(),
CometChatUrlFormatter(),
],
)
CometChatMessageComposer(
user: user,
group: group,
textFormatters: [
CometChatMentionsFormatter(),
],
)
Mentions
CometChatMentionsFormatter is the primary formatter for @mentions. Type @ in the composer to trigger the user suggestion list.
Related props:
disableMentions— disable @mention suggestions on both list and composerdisableMentionAll— disable the @all mention option (composer)mentionAllLabel/mentionAllLabelId— customize the @all label
Rich Text Toolbar
The composer's WYSIWYG toolbar is the active formatting system. Configure via:
CometChatMessageComposer(
user: user,
group: group,
// There is NO `richTextConfiguration` param. The real rich-text props are:
enableRichTextFormatting: true,
showRichTextFormattingOptions: true,
// hideRichTextFormattingOptions: <Set<FormatType>>, // optional
richTextToolbarView: (context) => CustomToolbar(),
onRichTextFormatApplied: (formatType) { },
)
8. Reactions
Reactions are auto-enabled. Users long-press a message to add emoji reactions.
Disabling Reactions
CometChatMessageList(
user: user,
group: group,
disableReactions: true, // hides reaction UI entirely
)
Customizing Reactions
CometChatMessageList(
user: user,
group: group,
favoriteReactions: ['👍', '❤️', '😂', '😮', '😢', '🙏'],
addReactionIcon: Icon(Icons.add_reaction),
onReactionClick: (reaction) { },
onReactionLongPress: (reaction) { },
onReactionListItemClick: (reaction) { },
reactionsRequestBuilder: ReactionsRequestBuilder()..limit = 10,
hideReactionOption: true, // hide "React" from long-press menu
)
9. Disabling Features
Most features can be hidden or disabled via component props.
CometChatMessageHeader
| Prop | Type | Effect |
|---|---|---|
hideVoiceCallButton | bool? | Hide voice call button |
hideVideoCallButton | bool? | Hide video call button |
hideChatHistoryButton | bool? | Hide AI chat history button |
hideNewChatButton | bool? | Hide new AI chat button |
usersStatusVisibility | bool? | Show/hide online status indicator |
CometChatMessageList
| Prop | Type | Default | Effect |
|---|---|---|---|
disableReactions | bool | false | Disable all reaction UI |
disableReceipts | bool | false | Hide read/delivered receipts |
disableSoundForMessages | bool | false | Mute message sounds |
hideDeletedMessages | bool | false | Hide deleted message placeholders |
hideReplies | bool | true | Hide reply count on messages |
hideThreadView | bool? | — | Hide thread reply indicator |
hideDateSeparator | bool | false | Hide date separators |
hideStickyDate | bool | false | Hide sticky date header |
hideGroupActionMessages | bool | false | Hide "X joined" / "X left" messages |
hideReplyInThreadOption | bool | false | Remove "Reply in Thread" from long-press menu |
hideReplyOption | bool | false | Remove "Reply" from long-press menu |
hideCopyMessageOption | bool | false | Remove "Copy" from long-press menu |
hideDeleteMessageOption | bool | false | Remove "Delete" from long-press menu |
hideEditMessageOption | bool | false | Remove "Edit" from long-press menu |
hideMessageInfoOption | bool | false | Remove "Message Info" from long-press menu |
hideMessagePrivatelyOption | bool | false | Remove "Message Privately" from long-press menu |
hideReactionOption | bool | false | Remove "React" from long-press menu |
hideTranslateMessageOption | bool | false | Remove "Translate" from long-press menu |
hideShareMessageOption | bool | false | Remove "Share" from long-press menu |
hideSuggestedMessages | bool | false | Hide AI suggested messages |
enableSmartReplies | bool | false | Enable smart reply suggestions |
enableConversationStarters | bool | false | Enable conversation starter suggestions |
enableSwipeToReply | bool | true | Enable swipe-to-reply gesture |
CometChatMessageComposer
| Prop | Type | Effect |
|---|---|---|
hideVoiceRecordingButton | bool? | Hide voice recording button |
hideSendButton | bool? | Hide send button |
hideAttachmentButton | bool? | Hide attachment (paperclip) button |
hideStickersButton | bool? | Hide stickers button |
hidePollsOption | bool? | Hide "Create Poll" from attachment menu |
hideCollaborativeDocumentOption | bool? | Hide "Document" from attachment menu |
hideCollaborativeWhiteboardOption | bool? | Hide "Whiteboard" from attachment menu |
hideAudioAttachmentOption | bool? | Hide audio from attachment menu |
hideFileAttachmentOption | bool? | Hide file from attachment menu |
hideImageAttachmentOption | bool? | Hide image from attachment menu |
hideVideoAttachmentOption | bool? | Hide video from attachment menu |
hideTakePhotoOption | bool? | Hide "Take Photo" from attachment menu |
disableTypingEvents | bool | Stop sending typing indicators |
disableSoundForMessages | bool | Mute send message sound |
disableMentions | bool? | Disable @mention suggestions |
disableMentionAll | bool | Disable @all mention |
Extensions Directory
All extension implementations live under chat_ui/src/extensions/:
extensions/
├── collaborative/ # Shared collaborative bubble
├── collaborative_document/ # Document extension
├── collaborative_whiteboard/ # Whiteboard extension
├── image_moderation/ # Image moderation filter
├── link_preview/ # Link preview bubble
├── message_translation/ # Translation bubble + option
├── polls/ # Poll creation + bubble
├── stickers/ # Sticker keyboard + bubble
├── thumbnail_generation/ # Thumbnail config
├── extension_constants.dart # Extension ID constants
├── extension_moderator.dart # Extension moderator
└── extension.dart # Base extension class
Quick Reference — Enabling Everything
final settings = (UIKitSettingsBuilder()
..appId = 'YOUR_APP_ID'
..region = 'us'
..authKey = 'YOUR_AUTH_KEY'
..subscriptionType = CometChatSubscriptionType.allUsers
..enableCalls = true)
.build();
await CometChatUIKit.init(uiKitSettings: settings);
// Then in your messages screen:
CometChatMessageList(
user: user,
group: group,
enableSmartReplies: true,
enableConversationStarters: true,
enableSwipeToReply: true,
textFormatters: [CometChatMentionsFormatter()],
)
CometChatMessageComposer(
user: user,
group: group,
textFormatters: [CometChatMentionsFormatter()],
)
CometChatMessageHeader(
user: user,
group: group,
// Call buttons shown automatically when enableCalls = true
)
Dashboard extensions (polls, stickers, translation, link preview, collaborative doc/whiteboard) are auto-wired once enabled in the CometChat dashboard — no code changes needed.
Signals
- GitHub stars
- 105
- Forks
- 2
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
cometchat-flutter-v6-features- Source
- github.com/cometchat/cometchat-skills