/ SDKs / JavaScript
SDKs
Chat SDKs JavaScript v4
Chat SDKs JavaScript
Chat SDKs
JavaScript
Version 4

React to a message in a group channel

Copy link

Message reactions help you build a more engaging chat experience that goes beyond text messages. They are a quick and easy way for users to respond to a message. Users can express their feelings about a message by adding reactions instead of typing a response. They can also view and delete their reactions to the message.

Note: Message reactions are supported in Group and Supergroup channels. This feature isn't supported in Open channels and custom message types.


Add or remove a reaction

Copy link
JavaScriptTypeScript
// Add an emoji to a message.
const emojiKey = 'smile';
const reactionEvent = await message.addReaction(message, emojiKey);
message.applyReactionEvent(reactionEvent);

// Remove an emoji from a message.
const reactionEvent = await message.deleteReaction(message, emojiKey);
message.applyReactionEvent(reactionEvent);

// To add or remove an emoji on the current user's chat view,
// the applyReactionEvent() method should be called in the channel event handler's onReactionUpdated() method.

Retrieve reactions

Copy link

You can decide how to display reactions that were added to messages in the current user’s chat view.

Note: The getPreviousMessagesByTimestamp() method is deprecated as of August 2021. Use the getMessagesByTimestamp() method instead.

JavaScriptTypeScript
const params = {
        includeReactions: INCLUDE_REACTIONS,
};
// ...
const messages = await channel.getMessagesByTimestamp(TIMESTAMP, params);
for (let message of messages) {
    for (let reaction of message.reactions) {
            const userIds = reaction.userIds;

        // Check if this emoji has been used when the current user reacted to the message.
        if (userIds.includes(sb.currentUser.userId)) {
            const key = reaction.key;
            const updatedAt = reaction.updatedAt;

            // Show the emoji however you want on the current user's chat view.
        }
    }
}

Note: Messages along with their reactions can also be retrieved by using the PreviousMessageListQuery's load() method. To learn more, see the Retrieve a list of messages page.


Retrieve all reacted users

Copy link

By default, each Reaction object's userIds property returns up to ten sampled user IDs. This limit applies to both group and supergroup channels. To change the default limit, contact sales.

To retrieve the full list of users who reacted to a message, call the List reactions Platform API with list_users set to true.


Retrieve the reaction count

Copy link

To get the total number of users who reacted with a specific emoji, use the count property of the Reaction object.

// Reactions on the message.
const reactions: Reaction[] = message.reactions;

// Count of users who reacted with the first emoji in the list, not limited to the sampled user IDs.
const count = reactions[0].count;

Receive reaction events in real time

Copy link

When one of the channel members reacts to a message, the onReactionUpdated() method in the channel event handler is invoked on all channel members’ devices including the one that belongs to the current user. The applyReactionEvent() method reflects the reaction change to the message in real time.

JavaScriptTypeScript
const channelHandler = new GroupChannelHandler({
    onReactionUpdated: (channel, reactionEvent) => {
        // ...

        // If there is a message with the reactionEvent.messageId,
        // you can apply the reaction change to the message by calling the applyReactionEvent() method.
        message.applyReactionEvent(reactionEvent);

        // Add or remove an emoji on the current user's chat view.
    }
});
sb.groupChannel.addGroupChannelHandler(UNIQUE_HANDLER_ID, channelHandler);