Skip to main content

Reaction Content Type

Status Status

A reaction is a quick and often emoji-based way to respond to a message. Reactions are usually limited to a predefined set of emojis or symbols provided by the messaging app.

Open for feedback

You are welcome to provide feedback by commenting on the Reaction Content Type XIP Proposal

Configure content type

In some SDK's the ReactionCodec is already included in the SDK. If not, you can install the package using the following command:

In the javascript SDK you need to import this package first.

npm i @xmtp/content-type-reaction

After importing the package you can register the codec.

import {
ContentTypeReaction,
ReactionCodec,
} from "@xmtp/content-type-reaction";
// Create the XMTP client
const xmtp = await Client.create(signer, { env: "dev" });
xmtp.registerCodec(new ReactionCodec());

Create a reaction

With XMTP, reactions are represented as objects with the following keys:

  • reference: The message ID for the message that is being reacted to

  • action: The action of the reaction (added or removed)

  • content: A string representation of a reaction (e.g. smile) to be interpreted by clients

const reaction = {
reference: someMessageID,
action: "added",
content: "smile",
};

await conversation.send(reaction, {
contentType: ContentTypeReaction,
});

Receive a reaction

Now that you can send a reaction, you need a way to receive a reaction. For example:

if (message.contentType.sameAs(ContentTypeReaction)) {
// We've got a reaction.
const reaction: Reaction = message.content;
}

Display the reaction

Generally, reactions should be interpreted as emoji. So, "smile" would translate to 😄 in UI clients. That being said, how you ultimately choose to render a reaction in your app is up to you.

Was the information on this page helpful?
powered by XMTP