React UI Kit

Building a Complete React Chat App with CometChat UI kit

Learn how to build a real-time chat app in React with CometChat’s UI Kit and TypeScript. Includes a full GitHub repo so you can follow along or use it as a starter template.

Haris Kumar • Dec 6, 2024

Building chat apps in React from scratch is an ambitious task that comes with a range of complex challenges, such as

  1. 01.

    Setting up real-time infrastructure for message exchanges

  2. 02.

    Managing message delivery and storage

  3. 03.

    Handling presence and typing indicators

  4. 04.

    Implementing user authentication

  5. 05.

    Scaling for multiple users and heavy usage

  6. 06.

    Designing an intuitive and functional chat interface

CometChat’s UI Kit simplifies this process by offering pre-built, customizable react components that eliminate the heavy lifting, while still allowing developers the flexibility to align the chat experience with their unique app requirements.

Why use CometChat instead of building it yourself?

To better understand how CometChat can accelerate your development process, here's a quick comparison of building a chat app using the traditional DIY approach versus leveraging CometChat:

Feature Traditional DIY With CometChat UI Kit
Real-time setup
Custom WebSocket logic or third-party services
Preconfigured real-time messaging
State management
Additional libraries (Redux/Zustand/Context)
No extra state libraries required
Presence & receipts
Manual subscriptions and updates
Built-in presence, typing & receipts
Authentication
Custom auth + token handling
Simple CometChat login
UI components
Build chat UI from scratch
Prebuilt, composable React components
Customization
High effort, high maintenance
Flexible theming & component overrides
Developer velocity
Slower iteration cycles
Faster build and iteration

In this tutorial, you will learn how to integrate CometChat UI Kit into a React TypeScript application without adding any extra state libraries or databases. This matters because real-time chat capabilities greatly boost user engagement in web apps.

View the full working code on GitHub

Prefer watching over reading? We've created a complete video walkthrough for this tutorial so you can follow along visually, step-by-step.

Prerequisites

Knowledge

  • Basic React fundamentals (components, hooks) in TypeScript.

  • Familiarity with TypeScript syntax (types, interfaces).

  • Basic CSS for styling.

Tools

  • Node.js 14+ installed.

  • npm (comes with Node.js) or yarn.

  • A modern code editor (e.g., VS Code) with TypeScript support.

  • A CometChat account with an App ID and Auth Key (created via the CometChat Dashboard).

Getting started

Step 1: Create a New React Application

Create a new React app using your preferred setup (Vite, CRA, or Next.js). For simplicity, here’s an example using Vite:

Confirm the app runs locally before proceeding.

Step 2: Install the CometChat React UI Kit

Install the React UI Kit package:

The UI Kit includes:

  • Prebuilt chat UI components

  • CometChat SDK integration

  • Styles and utilities for real-time messaging

Step 3: Import Required Styles

In your main entry file (e.g., main.tsx or index.tsx), import the UI Kit styles:

This ensures all chat components render correctly.

Step 4: Initialize CometChat

Initialize CometChat once when your app loads—typically at the root level.

This prepares the UI Kit to connect to CometChat’s real-time infrastructure.

Step 5: User Login

Authenticate users using a simple login flow with a user ID:

Once logged in, the UI Kit manages the user session automatically.

Step 6: Display the Conversations List

Render the conversations list using the built-in Conversations component:

This component handles:

  • Conversation previews

  • Last message display

  • Presence indicators

  • Real-time updates

Step 7: Render the Messages View

When a conversation is selected, render the Messages component.

One-to-One Chat

Group Chat

The Messages component supports:

  • Text and media messages

  • Typing indicators

  • Read and delivery receipt

  • Message reactions

Step 8: Create and Manage Groups

Enable group creation using the UI Kit’s built-in components:

You can also show group details and members using the Group Info component when needed.

Step 9: Customization and Theming

The React UI Kit supports flexible customization through props, themes, and CSS overrides.

You can:

  • Match chat UI with your design system

  • Adjust colors, fonts, and spacing

  • Customize individual components without rewriting them

This makes it easy to keep chat visually consistent with the rest of your React app.

Step 10: Optional Enhancements

Once your core chat flow is in place, you can extend it with:

  • Push notifications

  • Moderation and safety controls

  • Voice and video calling

  • Custom message types

  • Analytics and insights

These features can be layered on incrementally as your product grows.

Run and Test the App

Start the app locally:

Verify that:

  • Users can log in successfully

  • Conversations load in real time

  • Messages send and receive correctly

  • Group chats behave as expected

Customization Options

You can:

  • Override UI styling using theme, palette, typography

  • Customize component behavior using props

  • Implement notifications, moderation, and more

Going Further

  • Once you’re comfortable with the base setup, try:

  • Add support for sending images or files.

  • Persist message history locally using IndexedDB or another client-side store.

  • Implement typing indicators and message read receipts.

  • Extend to voice or video calls using CometChat’s SDK

React Sample App by CometChat

Prerequisites

Ensure that you have Node.js and npm installed:

Sign up for a CometChat account to get your app credentials: App ID, Region, and Auth Key

Installation

Clone the repository:

Checkout v6 branch:

Navigate to the cloned directory:

Install dependencies:

[Optional] Enter your CometChat App ID, Region, and Auth Key in the sample-app/src/AppConstants.ts file:

Run the project locally to see all CometChat features in action:

Conclusion

By now, you’ve seen how chat can be added to a React app in a way that feels natural and doesn’t take over your state management or component tree. The React sample app is a hands-on way to dig deeper like play with the components, change the layout, and see how real-time messaging behaves as users interact.

If you’re thinking about adding chat but want to understand the tradeoffs before investing time in a full implementation, running the sample app is a low-effort way to get there. It lets you explore what’s possible, experiment freely, and decide how you’d want chat to look and feel in your own app.

Get the full source code on GitHub

Happy building!

Frequently Asked Questions (FAQ)

How long does it take to build a React chat app?

With CometChat UI Kit, you can build a functional React chat app in under 45 minutes. This includes setup, authentication, and real-time messaging. Building from scratch would typically take 3-6 months for a production-ready solution.

How much does it cost to build a React chat app?

Using CometChat's build plan, you can build a React chat app at no cost for up to 25 users. .

Can I customize the appearance of my React chat app?

Yes, CometChat UI Kit components are fully customizable. You can modify colors, fonts, layouts, and behaviors through props and CSS.

Is the React chat app scalable?

CometChat automatically handles scaling, supporting millions of concurrent users. The infrastructure scales elastically based on your usage, with no additional configuration required on your part.

How do I add authentication to my React chat app?

This tutorial uses CometChat's built-in authentication. For production apps, implement server-side authentication that generates auth tokens without exposing your Auth Key to the client.

Can I add voice and video calling to my React chat app?

Yes, CometChat supports voice and video calling. You can enable these features with a few lines of code using the CometChat Calling SDK.

How do I handle message history in my React chat app?

CometChat automatically stores and retrieves message history. Messages are persisted on CometChat's servers and synchronized across all devices. You can fetch historical messages using pagination.

What about React chat app security?

CometChat provides enterprise-grade security with:

  • End-to-end encryption for messages

  • SOC2 Type 2 compliance

  • GDPR compliance

  • Built-in profanity filtering

Can I build a React Native chat app with the same code?

While this tutorial focuses on React web apps, CometChat offers a separate React Native UI Kit that follows similar patterns, allowing you to reuse much of your knowledge.

Haris Kumar

Lead Content Strategist , CometChat

Haris brings nearly half a decade of expertise in B2B SaaS content marketing, where he excels at developing strategic content that drives engagement and supports business growth. His deep understanding of the SaaS landscape allows him to craft compelling narratives that resonate with target audiences. Outside of his professional pursuits, Haris enjoys reading, trying out new dishes and watching new movies!