Skip to main content
This guide builds a two-panel chat layout — conversation list on the left, messages on the right. Users click a conversation to open it. This assumes you’ve already completed React.js Integration (project created, UI Kit installed, init + login working).

What You’re Building

Three sections working together:
  1. Sidebar (conversation list) — shows all active conversations (users and groups)
  2. Message view — displays chat messages for the selected conversation in real time
  3. Message composer — text input with support for media, emojis, and reactions

Full Code

Replace your src/App.tsx with the following. Init and login must complete before the provider mounts — see the React.js Integration guide for the src/main.tsx setup.
src/App.tsx
src/App.css

How It Works

  1. CometChatProvider wraps the entire tree — it supplies theme, locale, and event context to all CometChat components.
  2. CometChatConversations renders the sidebar list. When a user clicks a conversation, onItemClick fires with the Conversation object.
  3. handleConversationClick extracts the User or Group from the conversation and stores it in state.
  4. Message components (MessageHeader, MessageList, MessageComposer) receive either user or group as a prop — never both at the same time.
  5. When the user switches conversations, state updates and the message panel re-renders with the new chat.

Run

Open http://localhost:5173. You should see the conversation list on the left. Click any conversation to load messages on the right.

Next Steps

One-to-One / Group Chat

Single chat window without a sidebar

Tab-Based Chat

Tabbed navigation with Chats, Calls, Users

Components Overview

Browse all prebuilt UI components

Theming

Customize colors, fonts, and styles