Conversation groups overview
Understand conversation categorization, group types, data structures, and event listeners in the OpenIM React Native SDK.
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 value | Value | Description |
|---|---|---|
ConversationGroupType.ConversationGroupTypeNormal | 0 | Standard user-created custom group. |
ConversationGroupType.ConversationGroupTypeFilter | 1 | Rule-based automated filter group. |
ConversationGroupType.ConversationGroupTypeAll | 2 | Match all conversation group types when querying. |
ConversationGroup properties
A ConversationGroup is uniquely identified by conversationGroupID:
| Field | Type | Description |
|---|---|---|
conversationGroupID | string | Unique conversation group identifier. |
name | string | Display name of the group. |
serial | number | Ordering sequence value for sorting groups. |
version | number | Data synchronization version. |
conversationGroupType | ConversationGroupType | Group type. |
hidden | boolean | Whether the group is hidden from the UI. |
unreadCount | number | Aggregate unread message count of conversations in this group. |
conversationIDs | string[] | List of conversation IDs currently belonging to this group. |
ex | string (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.
Related tasks
| Task | Guide |
|---|---|
| Create & modify groups | Create a conversation group, Update a conversation group, Set conversation group order |
| Delete groups | Delete a conversation group |
| Manage members | Add conversations to groups, Remove conversations from groups |
| Query groups & memberships | Get conversation groups, Get conversation group IDs by conversation ID, Get conversation group info with conversations |
Was this page helpful?