Skip to main content
npm install @cometchat/chat-sdk-javascript
import { CometChat } from "@cometchat/chat-sdk-javascript";

const appSettings: CometChat.AppSettings = new CometChat.AppSettingsBuilder()
  .setRegion("APP_REGION")
  .subscribePresenceForAllUsers()
  .autoEstablishSocketConnection(true)
  .build();

await CometChat.init("APP_ID", appSettings);
await CometChat.login("UID", "AUTH_KEY"); // dev only
Prerequisites: npm 8+, Node.js 16+, credentials from CometChat Dashboard SSR: SDK requires browser APIs — initialize client-side only (useEffect / mounted)

Prerequisites

RequirementVersion
npm8.x or above
Node.js16 or above
Get your credentials from the CometChat Dashboard:
  • App ID
  • Region
  • Auth Key (for development)
Auth Key is for development/testing only. In production, generate Auth Tokens on your server using the REST API. Never expose Auth Keys in production client code.

Installation

Package Manager

npm install @cometchat/chat-sdk-javascript
Then import wherever needed:
import { CometChat } from "@cometchat/chat-sdk-javascript";

CDN

<script
  type="text/javascript"
  src="https://unpkg.com/@cometchat/chat-sdk-javascript/CometChat.js"
></script>
When using the CDN, CometChat is available as a global variable.

Initialization

The init() method initializes the SDK and must be called before any other CometChat method. Call it once at app startup, typically in your entry file (index.js, main.js, or App.js).
let appID: string = "APP_ID";
let region: string = "APP_REGION";

let appSetting: CometChat.AppSettings = new CometChat.AppSettingsBuilder()
  .subscribePresenceForAllUsers()
  .setRegion(region)
  .autoEstablishSocketConnection(true)
  .build();

CometChat.init(appID, appSetting).then(
  (initialized: boolean) => {
    console.log("Initialization completed successfully", initialized);
  },
  (error: CometChat.CometChatException) => {
    console.log("Initialization failed with error:", error);
  }
);
Replace APP_ID and APP_REGION with your credentials from the Dashboard.
CometChat.init() must be called before any other SDK method. Calling login(), sendMessage(), or registering listeners before init() will fail.

Parameters

ParameterTypeDescription
appIDstringYour CometChat App ID
appSettingAppSettingsConfiguration object built with AppSettingsBuilder

AppSettings Options

MethodDescriptionDefault
setRegion(region)Region where your app was created (us, eu, in, in-private)Required
subscribePresenceForAllUsers()Subscribe to presence events for all users
subscribePresenceForRoles(roles)Subscribe to presence for specific roles
subscribePresenceForFriends()Subscribe to presence for friends only
autoEstablishSocketConnection(bool)Let SDK manage WebSocket connectionstrue
overrideAdminHost(adminHost)Custom admin URL (dedicated deployment)
overrideClientHost(clientHost)Custom client URL (dedicated deployment)
setStorageMode(storageMode)Local storage mode (CometChat.StorageMode.SESSION for session storage)

Presence Subscription

Choose how to subscribe to user presence (online/offline status):
// All users
new CometChat.AppSettingsBuilder()
  .subscribePresenceForAllUsers()
  .setRegion(region)
  .build();

// Specific roles
new CometChat.AppSettingsBuilder()
  .subscribePresenceForRoles(["admin", "moderator"])
  .setRegion(region)
  .build();

// Friends only
new CometChat.AppSettingsBuilder()
  .subscribePresenceForFriends()
  .setRegion(region)
  .build();
See User Presence for more details.

WebSocket Connection

By default, the SDK manages WebSocket connections automatically. To manage them manually:
let appSetting = new CometChat.AppSettingsBuilder()
  .setRegion(region)
  .autoEstablishSocketConnection(false)
  .build();
See Managing WebSocket Connections for manual control.

Session Storage

Use session storage instead of local storage (data clears when browser closes):
let appSetting = new CometChat.AppSettingsBuilder()
  .setRegion(region)
  .setStorageMode(CometChat.StorageMode.SESSION)
  .build();

SSR Compatibility

The CometChat SDK requires browser APIs (window, WebSocket) and cannot run on the server. For SSR frameworks, initialize the SDK only on the client side.
Import the SDK dynamically in useEffect:
import React from "react";

export default function Home() {
  let [ready, setReady] = React.useState(false);

  React.useEffect(() => {
    window.CometChat = require("@cometchat/chat-sdk-javascript").CometChat;
    setReady(true);
  }, []);

  return ready ? <Chat /> : <p>Loading...</p>;
}

Next Steps

Authentication

Log in users with Auth Key or Auth Token

Send Messages

Send your first message