Skip to main content
Quick Reference for AI Agents & Developers
// Send transient message (not persisted)
const transientMessage = new CometChat.TransientMessage(
  "receiverId",
  CometChat.RECEIVER_TYPE.USER,  // or GROUP
  { LIVE_REACTION: "❤️" }
);
CometChat.sendTransientMessage(transientMessage);

// Receive transient messages
CometChat.addMessageListener("TRANSIENT_LISTENER", new CometChat.MessageListener({
  onTransientMessageReceived: (msg) => console.log(msg.getData())
}));
Transient messages are ephemeral messages sent in real-time that are not saved anywhere. They’re perfect for live reactions, typing indicators, or any temporary data that doesn’t need to be stored.
Availability: SDKTransient messages are only received if the recipient is online. They cannot be retrieved later.

Use Cases

Use CaseDescription
Live ReactionsFloating hearts, thumbs up during live streams
Custom TypingAdvanced typing indicators with custom data
Presence UpdatesCustom presence states beyond online/offline
Ephemeral DataAny data that shouldn’t be stored

Send a Transient Message

const receiverId = "user1";
const receiverType = CometChat.RECEIVER_TYPE.USER;
const data = { LIVE_REACTION: "heart" };

const transientMessage = new CometChat.TransientMessage(
  receiverId,
  receiverType,
  data
);

CometChat.sendTransientMessage(transientMessage);

Receive Transient Messages

Listen for transient messages in real-time:
const listenerID = "TRANSIENT_LISTENER";

CometChat.addMessageListener(
  listenerID,
  new CometChat.MessageListener({
    onTransientMessageReceived: (transientMessage) => {
      const data = transientMessage.getData();
      const sender = transientMessage.getSender();
      
      console.log(`${sender.getName()} sent:`, data);
      
      // Handle based on data type
      if (data.LIVE_REACTION) {
        showFloatingReaction(data.LIVE_REACTION);
      }
    }
  })
);

// Remove listener when done
CometChat.removeMessageListener(listenerID);

TransientMessage Properties

PropertyDescription
senderUser object of the sender
receiverIdUID or GUID of the recipient
receiverTypeUSER or GROUP
dataCustom JSON data

Implementation Example

class LiveReactionManager {
  constructor() {
    this.listenerID = "live-reactions";
  }

  initialize() {
    CometChat.addMessageListener(
      this.listenerID,
      new CometChat.MessageListener({
        onTransientMessageReceived: (msg) => this.handleTransient(msg)
      })
    );
  }

  handleTransient(transientMessage) {
    const data = transientMessage.getData();
    
    if (data.LIVE_REACTION) {
      this.showReaction(data.LIVE_REACTION, transientMessage.getSender());
    }
  }

  sendReaction(receiverId, receiverType, reaction) {
    const data = { LIVE_REACTION: reaction };
    const message = new CometChat.TransientMessage(receiverId, receiverType, data);
    CometChat.sendTransientMessage(message);
  }

  showReaction(reaction, sender) {
    // Display floating reaction animation
    console.log(`${sender.getName()} sent ${reaction}`);
  }

  cleanup() {
    CometChat.removeMessageListener(this.listenerID);
  }
}

// Usage
const reactionManager = new LiveReactionManager();
reactionManager.initialize();

// Send a live reaction
reactionManager.sendReaction("group-123", CometChat.RECEIVER_TYPE.GROUP, "❤️");

Next Steps