Skip to main content
  • Package: @cometchat/chat-uikit-react
  • Framework: React.js
  • Key components: CometChatMessageHeader + CometChatMessageList + CometChatMessageComposer
  • Required setup: CometChatUIKit.init(UIKitSettings) then CometChatUIKit.login("UID")
  • Parent guide: React.js Integration
Single chat window without a conversation list. Supports both 1:1 and group messaging.

User Interface Preview

Key Components

  1. Chat Header — recipient details and optional call/video buttons
  2. Message View — real-time chat history
  3. Message Composer — text input with media, emoji, and reaction support

Step-by-Step Guide

1

Implement the Chat Header

<CometChatMessageHeader user={selectedUser} group={selectedGroup} />
2

Build the Message View

<CometChatMessageList user={selectedUser} group={selectedGroup} />
3

Add the Message Composer

<CometChatMessageComposer user={selectedUser} group={selectedGroup} />

Implementation

App.tsx
import { useEffect, useState } from "react";
import { CometChatMessageComposer, CometChatMessageHeader, CometChatMessageList } from "@cometchat/chat-uikit-react";
import { CometChat } from "@cometchat/chat-sdk-javascript";
import "./App.css";
import '@cometchat/chat-uikit-react/css-variables.css';

function App() {
  const [selectedUser, setSelectedUser] = useState<CometChat.User | undefined>(undefined);
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
  const [selectedGroup, setSelectedGroup] = useState<CometChat.Group | undefined>(undefined);

  useEffect(() => {
    // Fetch user or group from CometChat SDK whose chat you want to load. 

    /** Fetching User */
    const UID = "cometchat-uid-1";

    CometChat.getUser(UID).then(
      user => {
        setSelectedUser(user);
      }, error => {
        console.log("User fetching failed with error:", error);
      }
    );

    /** Fetching Group */
    // const GUID = "GUID"
    // CometChat.getGroup(GUID).then(
    //   group => {
    //     setSelectedGroup(group);
    //   }, error => {
    //     console.log("User fetching failed with error:", error);
    //   }
    // );

  }, []);

  return (
    <>
      {selectedUser || selectedGroup ? (
        <div className="messages-wrapper">
          <CometChatMessageHeader user={selectedUser} group={selectedGroup} />
          <CometChatMessageList user={selectedUser} group={selectedGroup} />
          <CometChatMessageComposer user={selectedUser} group={selectedGroup} />
        </div>
      ) : (
        <div className="empty-conversation">Please set a user or group in App.tsx.</div>
      )}
    </>
  );
};

export default App;
Select either a user or a group based on the chat requirement.

Fetching a User (One-on-One Chat)

const UID = "cometchat-uid-1";

CometChat.getUser(UID)
  .then(user => setSelectedUser(user))
  .catch(error => console.error("Failed to fetch user:", error));

Fetching a Group (Group Chat)

const GUID = "GUID";

CometChat.getGroup(GUID)
  .then(group => setSelectedGroup(group))
  .catch(error => console.error("Failed to fetch group:", error));
4

Run the Project

npm run dev
For prop details and customization options, see the component reference pages: CometChatConversations, CometChatMessageList, CometChatMessageComposer, CometChatMessageHeader.

Next Steps