Quick Reference - Add and remove reactions:
Add a Reaction
Users can add a reaction to a message by calling addReaction with the message ID and the reaction emoji.- JavaScript
- TypeScript
Response
Response
On Success —
addReaction() returns the updated message object with the reaction added:Message Object:sender Object:receiver Object:data Object:data.reactions Array (per item):You can react on text message, media message and custom message
Remove a Reaction
Removing a reaction from a message can be done using theremoveReaction method.
- JavaScript
- TypeScript
Response
Response
On Success —
removeReaction() returns the updated message object with the reaction removed:Message Object:sender Object:receiver Object:data Object:Fetch Reactions for a Message
To get all reactions for a specific message, first create aReactionsRequest using ReactionsRequestBuilder. You can specify the number of reactions to fetch with setLimit with max limit 100. For this, you will require the ID of the message. This ID needs to be passed to the setMessageId() method of the builder class. The setReaction() will allow you to fetch details for specific reaction or emoji.
Fetch Next
ThefetchNext() method fetches the next set of reactions for the message.
- JavaScript
- TypeScript
Fetch Previous
ThefetchPrevious() method fetches the previous set of reactions for the message.
- JavaScript
- TypeScript
Response
Response
On Success —
fetchNext() or fetchPrevious() returns an array of MessageReaction objects:MessageReaction Array (per item):reactedBy Object:Real-time Reaction Events
Keep the chat interactive with real-time updates for reactions. Register a listener for these events and make your UI responsive.- JavaScript
- TypeScript
Response
Response
On Event —
On Event —
onMessageReactionAdded returns the reaction event data:Reaction Event Object (onMessageReactionAdded):reaction Object (onMessageReactionAdded):reaction.reactedBy Object:On Event —
onMessageReactionRemoved returns the reaction event data:Reaction Event Object (onMessageReactionRemoved):reaction Object (onMessageReactionRemoved):reaction.reactedBy Object:Removing a Reaction Listener
To stop listening for reaction events, remove the listener as follows:- JavaScript
- TypeScript
Get Reactions List
To retrieve the list of reactions reacted on particular message, you can use themessage.getReactions() method. This method will return an array containing the reactions, or an empty array if no one reacted on the message.
- JavaScript
- TypeScript
Response
Response
On Success —
getReactions() returns an array of reaction counts:Check if Logged-in User has Reacted on Message
To check if the logged-in user has reacted on a particular message or not, You can use thegetReactedByMe() method on any ReactionCount object instance. This method will return a boolean value, true if the logged-in user has reacted on that message, otherwise false.
- JavaScript
- TypeScript
Update Message With Reaction Info
When a user adds or removes a reaction, you will receive a real-time event. Once you receive the real time event you would want to update the message with the latest reaction information. To do so you can use theupdateMessageWithReactionInfo() method.
The updateMessageWithReactionInfo() method provides a seamless way to update the reactions on a message instance (BaseMessage) in real-time. This method ensures that when a reaction is added or removed from a message, the BaseMessage object’s getReactions() property reflects this change immediately.
When you receive a real-time reaction event (MessageReaction), call the updateMessageWithReactionInfo() method, passing the BaseMessage instance (message), event data (MessageReaction) and reaction event action type (CometChat.REACTION_ACTION.REACTION_ADDED or CometChat.REACTION_ACTION.REACTION_REMOVED) that corresponds to the message being reacted to.
- JavaScript
- TypeScript
Response
Response
On Success (REACTION_ADDED) —
updateMessageWithReactionInfo() returns the updated message. Calling getReactions() on it shows:On Success (REACTION_REMOVED) — When the last reaction is removed,
getReactions() returns an empty array: []Best Practices
Use unique listener IDs
Use unique listener IDs
Always use unique, descriptive listener IDs (e.g.,
"ChatScreen_ReactionListener") to avoid conflicts with other listeners in your app. This makes it easier to manage and remove specific listeners when needed.Clean up listeners on unmount
Clean up listeners on unmount
Remove reaction listeners in your component’s cleanup phase (
useEffect return function or componentWillUnmount). Orphaned listeners can lead to memory leaks and unexpected UI updates on unmounted components.Update messages with reaction info in real-time
Update messages with reaction info in real-time
When you receive a real-time reaction event, always call
updateMessageWithReactionInfo() to keep your local message state in sync. This avoids stale reaction counts and ensures the UI reflects the latest state.Handle errors gracefully
Handle errors gracefully
Wrap
addReaction and removeReaction calls in proper error handling. Network issues or invalid message IDs can cause failures — show appropriate feedback to the user rather than silently failing.Paginate reaction fetches
Paginate reaction fetches
When fetching reactions for messages with many reactions, use
fetchNext() with a reasonable setLimit() value. Avoid fetching all reactions at once to keep performance smooth, especially on lower-end devices.Troubleshooting
Reaction not appearing after addReaction call
Reaction not appearing after addReaction call
Verify that the
messageId is valid and the user is logged in. Check the error callback for details — common causes include invalid message IDs, network connectivity issues, or the user not being a participant in the conversation.Real-time reaction events not firing
Real-time reaction events not firing
Ensure you have registered the message listener with
CometChat.addMessageListener() before the reaction event occurs. Also confirm that the listener ID is unique and hasn’t been accidentally removed or overwritten by another listener registration.Reaction count not updating in UI
Reaction count not updating in UI
After receiving a real-time reaction event, you must call
CometChat.CometChatHelper.updateMessageWithReactionInfo() to update the message object. Simply receiving the event does not automatically update the BaseMessage instance — you need to explicitly apply the update and re-render.getReactedByMe() always returns false
getReactedByMe() always returns false
Make sure you are calling
getReactedByMe() on the ReactionCount objects returned by message.getReactions(), not on the raw reaction event data. Also verify that the logged-in user is the same user who added the reaction.fetchNext() or fetchPrevious() returns empty array
fetchNext() or fetchPrevious() returns empty array
Confirm that the
messageId passed to ReactionsRequestBuilder.setMessageId() is correct and that the message actually has reactions. If using setReaction() to filter by a specific emoji, ensure the emoji string matches exactly (including any variation selectors).Next Steps
Explore related features to build a richer messaging experience:Send a Message
Learn how to send text, media, and custom messages to users and groups.
Receive Messages
Set up real-time message listeners and fetch message history.
Mentions
Tag users in messages to notify and engage them directly.
Interactive Messages
Send rich, interactive messages with forms, cards, and custom elements.