cometchat-flutter-v6-features

SkillDocs & knowledge

Enable 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.

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. The apply-feature CLI + 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, follow cometchat-flutter-v5-customization / -calls for 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.json snapshot 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):

CategoryWhat it meansExample featuresHow to enable
Auto-enabledWorks out of the box when you render the standard componentsText/media messages, typing indicators, read receipts, reactions, message editing/deletion, threaded replies, @mentionsJust render CometChatMessageHeader + CometChatMessageList + CometChatMessageComposer
UIKitSettings flagSet a property on UIKitSettingsBuilder before CometChatUIKit.init()Voice/video calls (enableCalls: true), presence/typing (subscriptionType)Set the flag → init
ExtensionBackend extension, pure boolean toggle. CLI flips via the dashboard API.Polls, stickers, message translation, link preview, collaborative document, collaborative whiteboard, image moderation, thumbnail generationcometchat apply-feature <id> --app-id <X> → restart app
AI featureBackend AI feature requiring an OpenAI API key on the app's AI settingsSmart replies, conversation starters, conversation summarycometchat apply-feature <id> --app-id <X> --openai-key sk-... → restart app
Dashboard-onlyThird-party API key / multi-field config the user must enter themselvesGiphy, Stipop, Tenor, Chatwoot, Intercom, Disappearing Messages, Message ShortcutsOpen https://app.cometchat.com → Chat & Messaging → Features → enter config → enable

2. Auto-Enabled Features

These work immediately when you render the standard message components:

FeatureComponentNotes
Text messagesCometChatMessageList + CometChatMessageComposerDefault message type
Image/video/audio/file messagesCometChatMessageComposer attachment optionsMedia picker built in
Read receiptsCometChatMessageListBlue double-check. Disable with disableReceipts: true
Typing indicatorsCometChatMessageHeader subtitleRequires subscriptionType set in UIKitSettings
ReactionsCometChatMessageListLong-press any message. Disable with disableReactions: true
Message editing/deletionCometChatMessageList long-press menuOwn messages only
Threaded repliesCometChatMessageListControlled by hideReplyInThreadOption
Reply (quote)CometChatMessageListSwipe-to-reply via enableSwipeToReply: true (default)
@MentionsCometChatMessageComposerType @ to trigger. Uses CometChatMentionsFormatter
Rich text (markdown)CometChatMessageComposerBold, italic, strikethrough, code, lists, blockquote, links via WYSIWYG toolbar
Group action messagesCometChatMessageListMember 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:

  1. Initializes CometChatUIKitCalls after chat SDK init
  2. Registers call message templates (call bubbles in message list)
  3. 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.

ExtensionUI surface when enabledExtension directory
Polls"Create Poll" option in composer attachment menuextensions/polls/
StickersSticker picker button next to composerextensions/stickers/
Smart RepliesChip suggestions above composer after incoming messageAI view: views/ai_smart_replies/
Conversation StartersSuggested messages when chat is emptyAI view: views/ai_conversation_starter/
Conversation SummarySummary panel above composerAI view: views/ai_conversation_summary/
Message Translation"Translate" option in message long-press menuextensions/message_translation/
Link PreviewRich preview card for URLs in messagesextensions/link_preview/
Collaborative Document"Document" option in composer attachment menuextensions/collaborative_document/
Collaborative Whiteboard"Whiteboard" option in composer attachment menuextensions/collaborative_whiteboard/
Image ModerationBlurs inappropriate images automaticallyextensions/image_moderation/
Thumbnail GenerationAuto-generates thumbnails for images/videosextensions/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 button
  • hideNewChatButton — hide the new AI chat button
  • chatHistoryButtonClick — custom callback for chat history tap
  • newChatButtonClick — 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 composer
  • disableMentionAll — 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

PropTypeEffect
hideVoiceCallButtonbool?Hide voice call button
hideVideoCallButtonbool?Hide video call button
hideChatHistoryButtonbool?Hide AI chat history button
hideNewChatButtonbool?Hide new AI chat button
usersStatusVisibilitybool?Show/hide online status indicator

CometChatMessageList

PropTypeDefaultEffect
disableReactionsboolfalseDisable all reaction UI
disableReceiptsboolfalseHide read/delivered receipts
disableSoundForMessagesboolfalseMute message sounds
hideDeletedMessagesboolfalseHide deleted message placeholders
hideRepliesbooltrueHide reply count on messages
hideThreadViewbool?Hide thread reply indicator
hideDateSeparatorboolfalseHide date separators
hideStickyDateboolfalseHide sticky date header
hideGroupActionMessagesboolfalseHide "X joined" / "X left" messages
hideReplyInThreadOptionboolfalseRemove "Reply in Thread" from long-press menu
hideReplyOptionboolfalseRemove "Reply" from long-press menu
hideCopyMessageOptionboolfalseRemove "Copy" from long-press menu
hideDeleteMessageOptionboolfalseRemove "Delete" from long-press menu
hideEditMessageOptionboolfalseRemove "Edit" from long-press menu
hideMessageInfoOptionboolfalseRemove "Message Info" from long-press menu
hideMessagePrivatelyOptionboolfalseRemove "Message Privately" from long-press menu
hideReactionOptionboolfalseRemove "React" from long-press menu
hideTranslateMessageOptionboolfalseRemove "Translate" from long-press menu
hideShareMessageOptionboolfalseRemove "Share" from long-press menu
hideSuggestedMessagesboolfalseHide AI suggested messages
enableSmartRepliesboolfalseEnable smart reply suggestions
enableConversationStartersboolfalseEnable conversation starter suggestions
enableSwipeToReplybooltrueEnable swipe-to-reply gesture

CometChatMessageComposer

PropTypeEffect
hideVoiceRecordingButtonbool?Hide voice recording button
hideSendButtonbool?Hide send button
hideAttachmentButtonbool?Hide attachment (paperclip) button
hideStickersButtonbool?Hide stickers button
hidePollsOptionbool?Hide "Create Poll" from attachment menu
hideCollaborativeDocumentOptionbool?Hide "Document" from attachment menu
hideCollaborativeWhiteboardOptionbool?Hide "Whiteboard" from attachment menu
hideAudioAttachmentOptionbool?Hide audio from attachment menu
hideFileAttachmentOptionbool?Hide file from attachment menu
hideImageAttachmentOptionbool?Hide image from attachment menu
hideVideoAttachmentOptionbool?Hide video from attachment menu
hideTakePhotoOptionbool?Hide "Take Photo" from attachment menu
disableTypingEventsboolStop sending typing indicators
disableSoundForMessagesboolMute send message sound
disableMentionsbool?Disable @mention suggestions
disableMentionAllboolDisable @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