Skip to main content
The Builder configuration controls everything the React Native UI Kit Builder renders—messaging, AI helpers, calls, layout, theming, and more. This configuration is stored in config.json and managed through the Zustand store.
For developers customizing their chat UI: The config.json file contains all your feature toggles, layout settings, and styling configuration. Edit this file or use the QR code scanner to update settings dynamically. See the Integration Guide for setup.

Top-level Structure

The configuration JSON follows this structure:
{
  "builderId": "unique-builder-id",
  "settings": {
    "chatFeatures": {
      "coreMessagingExperience": { /* Boolean settings */ },
      "deeperUserEngagement": { /* Boolean settings */ },
      "aiUserCopilot": { /* Boolean settings */ },
      "userManagement": { /* Boolean settings */ },
      "groupManagement": { /* Boolean settings */ },
      "moderatorControls": { /* Boolean settings */ },
      "privateMessagingWithinGroups": { /* Boolean settings */ },
      "inAppSounds": { /* Boolean settings */ }
    },
    "callFeatures": {
      "voiceAndVideoCalling": { /* Boolean settings */ }
    },
    "layout": { /* Layout settings */ },
    "style": {
      "theme": "system",
      "color": { /* Color settings */ },
      "typography": { /* Typography settings */ }
    }
  }
}

All boolean settings follow the same pattern: true enables the feature and shows its UI elements, false hides them completely.

1. Chat Features (chatFeatures)

1.1 Core Messaging Experience (coreMessagingExperience)

Essential messaging features: typing indicators, media sharing, message actions, and presence.
SettingTypeWhat It Does
typingIndicatorbooleanShows “typing…” indicator when someone is composing a message
threadConversationAndRepliesbooleanEnables threaded replies to specific messages, creating nested conversation threads
photosSharingbooleanAllows users to share images from device or camera
videoSharingbooleanAllows users to share video files
audioSharingbooleanAllows users to share audio files (mp3, wav, etc.)
fileSharingbooleanAllows users to share documents (PDF, DOC, etc.)
editMessagebooleanLets users modify their sent messages; edited messages show “(edited)” label
deleteMessagebooleanLets users remove their sent messages
messageDeliveryAndReadReceiptsbooleanShows delivery (✓) and read (✓✓) status indicators on messages
userAndFriendsPresencebooleanShows online/offline status dot next to user avatars
conversationAndAdvancedSearchbooleanEnables search across messages, users, and conversations
moderationbooleanEnables blocked message feedback for messages blocked by moderation rules
quotedRepliesbooleanLets users quote a message when replying, showing the original above their response
markAsUnreadbooleanLets users mark a conversation as unread to revisit later
Empower users with a seamless chat experience—reply to specific messages with quoted replies, mark conversations as unread for later, and search across all chats instantly. Learn more about Core Features.

1.2 Deeper User Engagement (deeperUserEngagement)

Interactive features: mentions, reactions, polls, voice notes, and collaborative tools.
SettingTypeWhat It Does
mentionsbooleanLets users @mention specific people in a message to notify them
mentionAllbooleanLets users type @all to notify every member in a group chat
reactionsbooleanLets users add emoji reactions (👍 ❤️ 😂 etc.) to messages
messageTranslationbooleanTranslates messages to user’s preferred language. Requires Dashboard setup
pollsbooleanLets users create polls with multiple options for group voting. Requires Dashboard setup
collaborativeWhiteboardbooleanOpens a shared whiteboard for real-time drawing and collaboration. Requires Dashboard setup
collaborativeDocumentbooleanCreates shared documents for real-time collaborative editing. Requires Dashboard setup
voiceNotesbooleanLets users record and send voice messages
emojisbooleanShows emoji picker in composer for browsing and inserting emojis
stickersbooleanLets users send sticker images from available packs. Requires Dashboard setup
userInfobooleanLets users tap on another user’s avatar to view their profile
groupInfobooleanLets users tap on group header to view group details and member list
Configure these features based on your app’s requirements. Learn more about Extensions.

1.3 AI User Copilot (aiUserCopilot)

AI-powered features to help users start and navigate conversations.
SettingTypeWhat It Does
conversationStarterbooleanShows AI-suggested opening messages
conversationSummarybooleanGenerates AI-powered conversation summary
smartReplybooleanShows AI-suggested quick reply options
AI User Copilot features require an OpenAI API key. Configure it in the CometChat Dashboard under AI > Settings.

1.4 User Management (userManagement)

SettingTypeWhat It Does
friendsOnlybooleanRestricts chat to friends list only

1.5 Group Management (groupManagement)

SettingTypeWhat It Does
createGroupbooleanLets users create new groups
addMembersToGroupsbooleanLets admins invite users to groups
joinLeaveGroupbooleanLets users join/leave groups
deleteGroupbooleanLets owners delete groups
viewGroupMembersbooleanShows member list in group info

1.6 Moderator Controls (moderatorControls)

SettingTypeWhat It Does
reportMessagebooleanLets users flag messages for review
kickUsersbooleanLets admins remove users from groups
banUsersbooleanLets admins permanently ban users
promoteDemoteMembersbooleanLets owners change member roles

1.7 Private Messaging Within Groups (privateMessagingWithinGroups)

SettingTypeWhat It Does
sendPrivateMessageToGroupMembersbooleanLets users start 1:1 chats with group members

1.8 In-App Sounds (inAppSounds)

SettingTypeWhat It Does
incomingMessageSoundbooleanPlays sound for new messages
outgoingMessageSoundbooleanPlays sound when sending messages

2. Call Features (callFeatures)

2.1 Voice and Video Calling (voiceAndVideoCalling)

SettingTypeWhat It Does
oneOnOneVoiceCallingbooleanShows phone icon in 1:1 chat header for starting voice calls
oneOnOneVideoCallingbooleanShows video camera icon in 1:1 chat header for starting video calls
groupVideoConferencebooleanShows video camera icon in group chat header for starting group video calls
groupVoiceConferencebooleanShows phone icon in group chat header for starting group voice calls
Learn more about Call Features.

3. Layout (layout)

SettingTypeWhat It Does
withSideBarbooleanShows navigation sidebar with tabs (Chats, Calls, Users, Groups)
tabsstring[]Array of tabs to show: 'chats', 'calls', 'users', 'groups'
chatTypestringDefault conversation type on load: 'user' for 1:1 chats, 'group' for group chats, 'both' for all
Set withSideBar: false for embedded chat widgets or single-conversation views where navigation isn’t needed.

4. Style (style)

4.1 Theme

SettingTypeWhat It Does
themestringControls light/dark mode: 'light', 'dark', or 'system'

4.2 Colors

SettingTypeWhat It Does
brandColorstringPrimary accent color (hex). Example: "#6852D6"
primaryTextLightstringMain text color in light mode
primaryTextDarkstringMain text color in dark mode
secondaryTextLightstringSecondary text color in light mode
secondaryTextDarkstringSecondary text color in dark mode

4.3 Typography

SettingTypeWhat It Does
fontstringFont family: 'roboto', 'arial', 'inter', or 'times new roman'
sizestringText size: 'default', 'compact', or 'comfortable'

Complete Settings Example

{
  "builderId": "your-builder-id",
  "settings": {
    "chatFeatures": {
      "coreMessagingExperience": {
        "typingIndicator": true,
        "threadConversationAndReplies": true,
        "photosSharing": true,
        "videoSharing": true,
        "audioSharing": true,
        "fileSharing": true,
        "editMessage": true,
        "deleteMessage": true,
        "messageDeliveryAndReadReceipts": true,
        "userAndFriendsPresence": true,
        "conversationAndAdvancedSearch": true,
        "moderation": true,
        "quotedReplies": false,
        "markAsUnread": false
      },
      "deeperUserEngagement": {
        "mentions": true,
        "mentionAll": true,
        "reactions": true,
        "messageTranslation": true,
        "polls": true,
        "collaborativeWhiteboard": true,
        "collaborativeDocument": true,
        "voiceNotes": true,
        "emojis": true,
        "stickers": true,
        "userInfo": true,
        "groupInfo": true
      },
      "aiUserCopilot": {
        "conversationStarter": false,
        "conversationSummary": false,
        "smartReply": false
      },
      "userManagement": {
        "friendsOnly": false
      },
      "groupManagement": {
        "createGroup": true,
        "addMembersToGroups": true,
        "joinLeaveGroup": true,
        "deleteGroup": true,
        "viewGroupMembers": true
      },
      "moderatorControls": {
        "kickUsers": true,
        "banUsers": true,
        "promoteDemoteMembers": true,
        "reportMessage": true
      },
      "privateMessagingWithinGroups": {
        "sendPrivateMessageToGroupMembers": true
      },
      "inAppSounds": {
        "incomingMessageSound": true,
        "outgoingMessageSound": true
      }
    },
    "callFeatures": {
      "voiceAndVideoCalling": {
        "oneOnOneVoiceCalling": true,
        "oneOnOneVideoCalling": true,
        "groupVideoConference": true,
        "groupVoiceConference": true
      }
    },
    "layout": {
      "withSideBar": true,
      "tabs": ["chats", "calls", "users", "groups"],
      "chatType": "both"
    },
    "style": {
      "theme": "system",
      "color": {
        "brandColor": "#6852D6",
        "primaryTextLight": "#141414",
        "primaryTextDark": "#FFFFFF",
        "secondaryTextLight": "#727272",
        "secondaryTextDark": "#989898"
      },
      "typography": {
        "font": "roboto",
        "size": "default"
      }
    }
  }
}

Accessing Settings in Code

Use the Zustand store to access settings in your React Native components:
import { useConfig } from './src/config/store';

const MyComponent = () => {
  // Access style settings
  const styleConfig = useConfig((state) => state.settings.style);
  
  // Access chat features
  const chatFeatures = useConfig((state) => state.settings.chatFeatures);
  
  // Check if a feature is enabled
  if (chatFeatures.coreMessagingExperience.photosSharing) {
    // Enable photo sharing functionality
  }
  
  // Access layout settings
  const layout = useConfig((state) => state.settings.layout);
  const tabs = layout.tabs;
  
  return (/* ... */);
};

Dashboard Feature Requirements

Some features require additional configuration in the CometChat Dashboard:
AI Copilot Features (Conversation Starter, Conversation Summary, Smart Reply)
  • Requires an OpenAI API key configured in the Dashboard under AI > Settings
Stickers, Polls, Collaborative Tools, Message Translation
  • Requires the respective extensions to be enabled in the Dashboard under Extensions
Moderation
  • Requires moderation rules to be configured in the Dashboard under Moderation > Rules