MCPcopy Index your code
hub / github.com/cometchat/cometchat-uikit-react

github.com/cometchat/cometchat-uikit-react @v7.0.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v7.0.2 ↗ · + Follow
2,904 symbols 8,620 edges 1,084 files 458 documented · 16%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

CometChat

CometChat UI Kit for React

The CometChat React UI Kit provides pre-built, customizable UI components that developers can use to quickly integrate real-time messaging and calling into any React application.

🚀 Explore the Sample App

Check out the Sample App to see the UI Kit in action with a fully functional chat experience including conversations, messaging, calling, and AI features.

Prerequisites

  • Node.js >= 18
  • npm >= 9
  • React >= 18

Getting Started

  1. Register at the CometChat Dashboard to create an account.
  2. Create a new app to get your App ID, Region, and Auth Key.

Installation

npm install @cometchat/chat-uikit-react

Features

  • Conversations — List and manage one-on-one and group chats
  • Messages — Rich message list with reactions, threads, and read receipts
  • Calling — Voice and video calling with call logs
  • AI Features — AI-powered assistant chat and smart replies
  • Theming — CSS custom properties for full visual customization
  • Localization — Built-in multi-language support

Testing

The project has three test suites: unit tests (Vitest), E2E tests (Playwright), and Storybook.

Unit Tests (Vitest)

Unit tests live alongside the source files as *.spec.ts / *.spec.tsx and cover individual components, hooks, and utilities.

Run all unit tests (single pass):

npm test

Run with coverage:

npm run test:coverage

No browser or running server is required.


Storybook

Storybook provides an interactive development environment for building and testing components in isolation.

Start Storybook (dev mode):

npm run storybook

Opens at http://localhost:6006.

Build static Storybook:

npm run build-storybook

E2E Tests (Playwright)

End-to-end tests live in sample-app/e2e/ and run against the live sample app. They cover full user journeys: login, messaging, reactions, threads, groups, calls, search, and more.

Prerequisites

1. Create a CometChat App

Create a new CometChat app (or use an existing one dedicated to E2E testing).

2. Enable Extensions

In the CometChat Dashboard, enable:

  • Stickers (also add sticker packs from settings)
  • Calling
  • Conversation & Advanced Search
  • Polls
  • Collaborative Document
  • Collaborative Whiteboard
3. Create AI Agent User

In the Dashboard → BYO Agents:

  • UID: ai-agent-e2e
  • Name: AI Agent E2E
  • Role: @agentic
4. Configure Environment
cd sample-app
cp .env.e2e.example .env.e2e

Fill in .env.e2e:

COMETCHAT_APP_ID=your-app-id
COMETCHAT_REGION=us
COMETCHAT_AUTH_KEY=your-auth-key
COMETCHAT_API_KEY=your-rest-api-key
E2E_USER_UID=e2e-user-1
AI_AGENT_UID=ai-agent-e2e
5. Install Playwright Browsers
npx playwright install

Running E2E Tests

Seed test data (one-time, idempotent):

cd sample-app
npm run e2e:seed

Start dev server (keep running in separate terminal):

npm run dev

Run all E2E tests (headless):

npm run e2e

Run with Playwright UI (interactive):

npm run e2e:ui

Run headed (visible browser):

npm run e2e:headed

Run in debug mode:

npm run e2e:debug

Run a specific test file:

npx playwright test e2e/conversations/conversations.spec.ts

Cleanup

To delete all E2E-created data and reset the app:

npm run e2e:cleanup

Test Data Strategy

Chat Purpose Modified by Tests?
Bob Smith (e2e-user-2) Static 1:1 — read-only tests ❌ Never
Design Team (e2e-group-1) Static group — pagination, group details ❌ Never
Strategy (e2e-group-35) Mutable group — send/edit/delete/thread/reactions ✅ Yes
CI/CD (e2e-group-33) Incoming messages for message-privately tests ❌ Never
AI Agent E2E AI assistant chat tests ✅ Yes

Quick Start

cd sample-app
cp .env.e2e.example .env.e2e    # Fill in credentials
npx playwright install           # Install browsers (once)
npm run e2e:seed                 # Seed test data (once)
npm run dev                      # Start dev server
npm run e2e                      # Run tests

Help and Support

For issues running the project or integrating with our UI Kits, consult our documentation or create a support ticket or seek real-time support via the CometChat Dashboard.


Extension points exported contracts — how you extend this code

MessageWithQuote (Interface)
Extension of BaseMessage for messages that support quoted message references.
src/components/CometChatMessageList/CometChatMessageList.utils.ts
CometChatLocalizeInstance (Interface)
(no doc) [1 implementers]
src/resources/CometChatLocalize/localize.types.ts
CreateStreamingMessageOptions (Interface)
(no doc)
src/utils/CometChatStreamingMessageFactory.ts
CometChatMentionData (Interface)
(no doc)
src/formatters/CometChatMentionsFormatter.ts
CometChatEventsContextValue (Interface)
(no doc)
src/context/CometChatEvents.types.ts
CometChatMessageOption (Interface)
(no doc)
src/plugins/plugin.types.ts
UseCometChatInitOptions (Interface)
(no doc)
src/hooks/useCometChatInit.ts
MockUserOptions (Interface)
(no doc)
src/testing/mock-builders.ts

Core symbols most depended-on inside this repo

getLocalizedString
called by 514
src/components/CometChatSearch/CometChatSearchRoot.tsx
getUid
called by 280
src/components/CometChatCallLogs/CometChatCallLogs.stories.tsx
useLocale
called by 184
src/context/locale/LocaleContext.ts
push
called by 180
src/utils/RichTextEditor/history/HistoryManager.ts
getId
called by 145
src/components/CometChatNotificationFeed/CometChatNotificationFeed.types.ts
focus
called by 137
src/utils/RichTextEditor/formats/format.types.ts
buildTextMessage
called by 129
src/testing/mock-builders.ts
messageListReducer
called by 98
src/components/CometChatMessageList/CometChatMessageList.reducer.ts

Shape

Function 1,728
Method 537
Interface 493
Class 113
Enum 33

Languages

TypeScript100%

Modules by API surface

src/utils/RichTextEditor/RichTextEditor.ts62 symbols
src/utils/__tests__/CometChatUIKitUtility.spec.ts50 symbols
src/components/CometChatAudioBubble/wavesurfer/wavesurfer.ts36 symbols
src/components/CometChatAudioBubble/wavesurfer/renderer.ts36 symbols
src/CometChatUIKit/UIKitSettings.ts31 symbols
src/constants/Enums.ts30 symbols
src/components/CometChatSearch/CometChatSearch.stories.tsx28 symbols
src/components/CometChatMessageBubble/CometChatMessageBubble.stories.tsx26 symbols
src/utils/__tests__/MessageReceiptUtils.spec.ts25 symbols
src/formatters/CometChatMarkdownFormatter.ts25 symbols
src/components/CometChatAudioBubble/wavesurfer/player.ts25 symbols
src/components/CometChatNotificationFeed/CometChatNotificationFeed.types.ts23 symbols

For agents

$ claude mcp add cometchat-uikit-react \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact