Skip to main content
Quick Reference for AI Agents & Developers
// Get current user
const user = await CometChat.getLoggedinUser();

// Fetch users list
const usersRequest = new CometChat.UsersRequestBuilder()
  .setLimit(30)
  .build();
const users = await usersRequest.fetchNext();

// Get specific user
const user = await CometChat.getUser("user_uid");

// Search users
const usersRequest = new CometChat.UsersRequestBuilder()
  .setSearchKeyword("john")
  .build();

// Filter online users
const usersRequest = new CometChat.UsersRequestBuilder()
  .setStatus(CometChat.USER_STATUS.ONLINE)
  .build();

// Listen for presence changes
CometChat.addUserListener("LISTENER_ID", new CometChat.UserListener({
  onUserOnline: (user) => console.log(user.getName(), "online"),
  onUserOffline: (user) => console.log(user.getName(), "offline")
}));
Users are the foundation of your chat application. This section covers retrieving, creating, updating, and managing users.
Available via: SDK | REST API | UI Kits

Core Concepts

  • UID: Unique identifier for each user (typically matches your database user ID)
  • User Object: Contains profile info like name, avatar, status, and metadata
  • Presence: Real-time online/offline status

Quick Start

Get Current User

CometChat.getLoggedinUser().then(
  (user) => {
    if (user) {
      console.log("Logged in as:", user.getName());
    }
  }
);

Fetch Users

const usersRequest = new CometChat.UsersRequestBuilder()
  .setLimit(30)
  .build();

usersRequest.fetchNext().then(
  (users) => console.log("Users:", users),
  (error) => console.log("Error:", error)
);

User Management


User Object Properties

PropertyMethodDescriptionEditable
UIDgetUid()Unique identifierNo (set at creation)
NamegetName()Display nameYes
AvatargetAvatar()Profile picture URLYes
StatusgetStatus()online or offlineNo (system managed)
RolegetRole()User role for access controlYes
MetadatagetMetadata()Custom JSON dataYes
Status MessagegetStatusMessage()Custom status textYes
Last ActivegetLastActiveAt()Last activity timestampNo
LinkgetLink()Profile page URLYes
TagsgetTags()Array of tagsYes
Blocked By MegetBlockedByMe()If logged-in user blocked themNo
Has Blocked MegetHasBlockedMe()If they blocked logged-in userNo

Common Use Cases

Build a Contacts List

const usersRequest = new CometChat.UsersRequestBuilder()
  .setLimit(30)
  .friendsOnly(true)
  .build();

usersRequest.fetchNext().then((users) => {
  users.forEach((user) => {
    console.log(user.getName(), user.getStatus());
  });
});

Search Users

const usersRequest = new CometChat.UsersRequestBuilder()
  .setLimit(30)
  .setSearchKeyword("john")
  .build();

usersRequest.fetchNext().then((users) => {
  console.log("Search results:", users);
});

Filter Online Users

const usersRequest = new CometChat.UsersRequestBuilder()
  .setLimit(30)
  .setStatus(CometChat.USER_STATUS.ONLINE)
  .build();

usersRequest.fetchNext().then((users) => {
  console.log("Online users:", users);
});

Filter by Role

const usersRequest = new CometChat.UsersRequestBuilder()
  .setLimit(30)
  .setRoles(["premium", "moderator"])
  .build();

usersRequest.fetchNext().then((users) => {
  console.log("Premium/Moderator users:", users);
});

Real-Time User Events

Listen for user status changes:
const listenerID = "USER_LISTENER";

CometChat.addUserListener(
  listenerID,
  new CometChat.UserListener({
    onUserOnline: (onlineUser) => {
      console.log("User online:", onlineUser.getName());
    },
    onUserOffline: (offlineUser) => {
      console.log("User offline:", offlineUser.getName());
    }
  })
);

// Remove when done
CometChat.removeUserListener(listenerID);

Next Steps