Browse SDKs · React Native
Platform
SDKsReact NativeEnterprise

Conversation groups overview

Understand conversation categorization, group types, data structures, and event listeners in the OpenIM React Native SDK.

Copy

Conversation groups allow applications to categorize the current account's conversations into dedicated views—such as Work, Personal, Follow-up, or custom business categories.

Group types

ConversationGroupType defines the categorization criteria:

Enum valueValueDescription
ConversationGroupType.ConversationGroupTypeNormal0Standard user-created custom group.
ConversationGroupType.ConversationGroupTypeFilter1Rule-based automated filter group.
ConversationGroupType.ConversationGroupTypeAll2Match all conversation group types when querying.

ConversationGroup properties

A ConversationGroup is uniquely identified by conversationGroupID:

FieldTypeDescription
conversationGroupIDstringUnique conversation group identifier.
namestringDisplay name of the group.
serialnumberOrdering sequence value for sorting groups.
versionnumberData synchronization version.
conversationGroupTypeConversationGroupTypeGroup type.
hiddenbooleanWhether the group is hidden from the UI.
unreadCountnumberAggregate unread message count of conversations in this group.
conversationIDsstring[]List of conversation IDs currently belonging to this group.
exstring (optional)Custom business extension string.

Listen for group changes

When groups are created, updated, or deleted, the SDK emits group lifecycle events. Membership changes dispatch member-specific callbacks. When updating local application state, always use conversationGroupID to locate and manage conversation groups, and use conversationID to manage member conversations inside each group.

const handleGroupAdded = (groups: ConversationGroup[]) => {
  // Insert new groups into local state
};

const handleGroupChanged = (groups: ConversationGroup[]) => {
  // Update modified group properties
};

const handleGroupDeleted = (groups: ConversationGroup[]) => {
  // Remove deleted groups from local state
};

const handleGroupMemberAdded = (payload: ConversationGroupMemberChangedCallbackData) => {
  // Add conversation IDs into target group
};

const handleGroupMemberDeleted = (payload: ConversationGroupMemberChangedCallbackData) => {
  // Remove conversation IDs from target group
};

// Register listeners
OpenIMSDK.on(OpenIMEvent.OnConversationGroupAdded, handleGroupAdded);
OpenIMSDK.on(OpenIMEvent.OnConversationGroupChanged, handleGroupChanged);
OpenIMSDK.on(OpenIMEvent.OnConversationGroupDeleted, handleGroupDeleted);
OpenIMSDK.on(OpenIMEvent.OnConversationGroupMemberAdded, handleGroupMemberAdded);
OpenIMSDK.on(OpenIMEvent.OnConversationGroupMemberDeleted, handleGroupMemberDeleted);

// Remove listeners
OpenIMSDK.off(OpenIMEvent.OnConversationGroupAdded, handleGroupAdded);
OpenIMSDK.off(OpenIMEvent.OnConversationGroupChanged, handleGroupChanged);
OpenIMSDK.off(OpenIMEvent.OnConversationGroupDeleted, handleGroupDeleted);
OpenIMSDK.off(OpenIMEvent.OnConversationGroupMemberAdded, handleGroupMemberAdded);
OpenIMSDK.off(OpenIMEvent.OnConversationGroupMemberDeleted, handleGroupMemberDeleted);

Unregister these listeners when the component unmounts, the user logs out, or accounts switch.