> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-agent-in-group-react-v6.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Transient Messages

> Send and receive ephemeral real-time messages with the CometChat React Native SDK for live reactions and temporary indicators.

<Accordion title="AI Integration Quick Reference">
  ```javascript theme={null}
  // Send transient message to user
  const msg = new CometChat.TransientMessage("UID", CometChat.RECEIVER_TYPE.USER, { LIVE_REACTION: "heart" });
  CometChat.sendTransientMessage(msg);

  // Listen for transient messages
  CometChat.addMessageListener("LISTENER_ID", new CometChat.MessageListener({
    onTransientMessageReceived: (msg) => console.log("Transient:", msg)
  }));
  ```
</Accordion>

Transient messages are messages that are sent in real-time only and are not saved or tracked anywhere. The receiver of the message will only receive the message if he is online and these messages cannot be retrieved later.

## Send a Transient Message

You can use the `sendTransientMessage()` method to send a transient message to a user or in a group. The receiver will receive this information in the `onTransientMessageReceived()` method of the `MessageListener` class. In order to send the transient message, you need to use the [`TransientMessage`](/sdk/reference/auxiliary#transientmessage) class.

<Tabs>
  <Tab title="User (TypeScript)">
    ```typescript theme={null}
    let receiverId: string = "UID";
    let receiverType: string = CometChat.RECEIVER_TYPE.USER;
    let data: Object = { "LIVE_REACTION": "heart" };

    let transientMessage: CometChat.TransientMessage = new CometChat.TransientMessage(receiverId, receiverType, data);
    CometChat.sendTransientMessage(transientMessage);
    ```
  </Tab>

  <Tab title="User (JavaScript)">
    ```javascript theme={null}
    let receiverId = "UID";
    let receiverType = CometChat.RECEIVER_TYPE.USER;
    let data = { "LIVE_REACTION": "heart" };

    let transientMessage = new CometChat.TransientMessage(receiverId, receiverType, data);
    CometChat.sendTransientMessage(transientMessage);
    ```
  </Tab>

  <Tab title="Group (TypeScript)">
    ```typescript theme={null}
    let receiverId: string = "GUID";
    let receiverType: string = CometChat.RECEIVER_TYPE.GROUP;
    let data: Object = { "LIVE_REACTION": "heart" };

    let transientMessage: CometChat.TransientMessage = new CometChat.TransientMessage(receiverId, receiverType, data);
    CometChat.sendTransientMessage(transientMessage);
    ```
  </Tab>

  <Tab title="Group (JavaScript)">
    ```javascript theme={null}
    let receiverId = "GUID";
    let receiverType = CometChat.RECEIVER_TYPE.GROUP;
    let data = { "LIVE_REACTION": "heart" };

    let transientMessage = new CometChat.TransientMessage(receiverId, receiverType, data);
    CometChat.sendTransientMessage(transientMessage); 
    ```
  </Tab>
</Tabs>

`sendTransientMessage()` returns `void` — the message is sent as a fire-and-forget operation with no response.

## Real-time Transient Messages

<Warning>
  Always remove listeners when they're no longer needed (e.g., on component unmount or page navigation). Failing to remove listeners can cause memory leaks and duplicate event handling.
</Warning>

You will receive the transient message in the `onTransientMessageReceived()` method of the registered `MessageListener` class.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let listenerId: string = "UNIQUE_LISTENER_ID";

    CometChat.addMessageListener(
      listenerId,
      new CometChat.MessageListener({
          onTransientMessageReceived: (transientMessage: CometChat.TransientMessage) => {
              console.log('transient message received', transientMessage);
          },
      })
    );
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let listenerId = "UNIQUE_LISTENER_ID";

    CometChat.addMessageListener(
    listenerId,
    new CometChat.MessageListener({
      onTransientMessageReceived: transientMessage => {
        console.log('transient message received', transientMessage);
      },
    })
    );   
    ```
  </Tab>
</Tabs>

The received object is a [`TransientMessage`](/sdk/reference/auxiliary#transientmessage).

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Typing Indicators" icon="keyboard" href="/sdk/react-native/typing-indicators">
    Show real-time typing status in conversations
  </Card>

  <Card title="Send Messages" icon="paper-plane" href="/sdk/react-native/send-message">
    Send text, media, and custom messages
  </Card>
</CardGroup>
