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

# Delete A Message

> Learn how to delete messages, listen for real-time message delete events, and retrieve missed message deletions using the CometChat React Native SDK.

<Info>
  **Quick Reference for AI Agents & Developers**

  ```javascript theme={null}
  // Delete a message by ID
  let messageId = "MESSAGE_ID";
  CometChat.deleteMessage(messageId).then(
    (message) => console.log("Message deleted", message),
    (error) => console.log("Delete failed:", error)
  );

  // Listen for real-time message deletes
  CometChat.addMessageListener("LISTENER_ID", new CometChat.MessageListener({
    onMessageDeleted: (message) => console.log("Deleted:", message)
  }));
  ```
</Info>

While [deleting a message](/sdk/react-native/delete-message#delete-a-message) is straightforward, receiving events for deleted messages with CometChat has two parts:

1. Adding a listener to receive [real-time message deletes](/sdk/react-native/delete-message#real-time-message-delete-events) when your app is running.
2. Calling a method to retrieve [missed message deletes](/sdk/react-native/delete-message#missed-message-delete-events) when your app was not running.

<Note>
  **Available via:** [SDK](/sdk/react-native/delete-message) | [REST API](/rest-api/messages/delete-message) | [UI Kits](/ui-kit/react-native/overview)
</Note>

## Delete a Message

*In other words, as a sender, how do I delete a message?*

To delete a message, use the `deleteMessage()` method. This method takes the message ID of the message to be deleted.

<Warning>
  This operation is irreversible. Deleted messages cannot be recovered.
</Warning>

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={null}
    let messageId = "ID_OF_THE_MESSAGE_YOU_WANT_TO_DELETE";

    CometChat.deleteMessage(messageId).then(
    message => {
      console.log("Message deleted", message);
    }, error => {
      console.log("Message delete failed with error:", error);
    }
    );
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript theme={null}
    let messageId: number = 1;

    CometChat.deleteMessage(messageId).then(
      (message: CometChat.BaseMessage) => {
          console.log("Message deleted", message);
      }, (error: CometChat.CometChatException) => {
          console.log("Message delete failed with error:", error);
      }
    );
    ```
  </Tab>
</Tabs>

<Accordion title="Response">
  **On Success** — `deleteMessage()` returns the deleted message object with `deletedAt` and `deletedBy` fields set:

  <span id="delete-message-object" style={{scrollMarginTop: '100px'}} />

  **Message Object:**

  | Parameter        | Type    | Description                         | Sample Value                                   |
  | ---------------- | ------- | ----------------------------------- | ---------------------------------------------- |
  | `id`             | string  | Unique message identifier           | `"25305"`                                      |
  | `conversationId` | string  | Conversation identifier             | `"cometchat-uid-6_user_cometchat-uid-7"`       |
  | `receiverId`     | string  | Receiver's UID                      | `"cometchat-uid-6"`                            |
  | `receiverType`   | string  | Type of receiver                    | `"user"`                                       |
  | `type`           | string  | Message type                        | `"text"`                                       |
  | `category`       | string  | Message category                    | `"message"`                                    |
  | `sentAt`         | number  | Unix timestamp when originally sent | `1771996215`                                   |
  | `deliveredAt`    | number  | Unix timestamp when delivered       | `1771996215`                                   |
  | `readAt`         | number  | Unix timestamp when read            | `1771996215`                                   |
  | `deletedAt`      | number  | Unix timestamp when deleted         | `1771996222`                                   |
  | `deletedBy`      | string  | UID of user who deleted the message | `"cometchat-uid-7"`                            |
  | `updatedAt`      | number  | Unix timestamp when updated         | `1771996222`                                   |
  | `sender`         | object  | Sender user details                 | [See below ↓](#delete-message-sender-object)   |
  | `receiver`       | object  | Receiver user details               | [See below ↓](#delete-message-receiver-object) |
  | `data`           | object  | Additional message data             | [See below ↓](#delete-message-data-object)     |
  | `reactions`      | array   | Message reactions                   | `[]`                                           |
  | `mentionedUsers` | array   | Users mentioned in message          | `[]`                                           |
  | `mentionedMe`    | boolean | Whether current user is mentioned   | `false`                                        |

  ***

  <span id="delete-message-sender-object" style={{scrollMarginTop: '100px'}} />

  **`sender` Object:**

  | Parameter       | Type    | Description                            | Sample Value                                                            |
  | --------------- | ------- | -------------------------------------- | ----------------------------------------------------------------------- |
  | `uid`           | string  | User's unique identifier               | `"cometchat-uid-7"`                                                     |
  | `name`          | string  | User's display name                    | `"Henry Marino"`                                                        |
  | `avatar`        | string  | URL to user's avatar                   | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` |
  | `status`        | string  | User's online status                   | `"offline"`                                                             |
  | `role`          | string  | User's role                            | `"default"`                                                             |
  | `lastActiveAt`  | number  | Last active timestamp                  | `1771993054`                                                            |
  | `hasBlockedMe`  | boolean | Whether user has blocked current user  | `false`                                                                 |
  | `blockedByMe`   | boolean | Whether current user blocked this user | `false`                                                                 |
  | `deactivatedAt` | number  | Deactivation timestamp (0 if active)   | `0`                                                                     |
  | `tags`          | array   | User tags                              | `[]`                                                                    |

  ***

  <span id="delete-message-receiver-object" style={{scrollMarginTop: '100px'}} />

  **`receiver` Object:**

  | Parameter       | Type    | Description                            | Sample Value                                                            |
  | --------------- | ------- | -------------------------------------- | ----------------------------------------------------------------------- |
  | `uid`           | string  | User's unique identifier               | `"cometchat-uid-6"`                                                     |
  | `name`          | string  | User's display name                    | `"Ronald Jerry"`                                                        |
  | `avatar`        | string  | URL to user's avatar                   | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` |
  | `status`        | string  | User's online status                   | `"offline"`                                                             |
  | `role`          | string  | User's role                            | `"default"`                                                             |
  | `lastActiveAt`  | number  | Last active timestamp                  | `1771994056`                                                            |
  | `hasBlockedMe`  | boolean | Whether user has blocked current user  | `false`                                                                 |
  | `blockedByMe`   | boolean | Whether current user blocked this user | `false`                                                                 |
  | `deactivatedAt` | number  | Deactivation timestamp (0 if active)   | `0`                                                                     |
  | `tags`          | array   | User tags                              | `[]`                                                                    |

  ***

  <span id="delete-message-data-object" style={{scrollMarginTop: '100px'}} />

  **`data` Object:**

  | Parameter  | Type   | Description                  | Sample Value                                        |
  | ---------- | ------ | ---------------------------- | --------------------------------------------------- |
  | `entities` | object | Sender and receiver entities | [See below ↓](#delete-message-data-entities-object) |

  ***

  <span id="delete-message-data-entities-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities` Object:**

  | Parameter  | Type   | Description             | Sample Value                                                 |
  | ---------- | ------ | ----------------------- | ------------------------------------------------------------ |
  | `sender`   | object | Sender entity wrapper   | [See below ↓](#delete-message-data-entities-sender-object)   |
  | `receiver` | object | Receiver entity wrapper | [See below ↓](#delete-message-data-entities-receiver-object) |

  ***

  <span id="delete-message-data-entities-sender-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.sender` Object:**

  | Parameter    | Type   | Description         | Sample Value                                                      |
  | ------------ | ------ | ------------------- | ----------------------------------------------------------------- |
  | `entityType` | string | Type of entity      | `"user"`                                                          |
  | `entity`     | object | User entity details | [See below ↓](#delete-message-data-entities-sender-entity-object) |

  ***

  <span id="delete-message-data-entities-sender-entity-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.sender.entity` Object:**

  | Parameter      | Type   | Description              | Sample Value                                                            |
  | -------------- | ------ | ------------------------ | ----------------------------------------------------------------------- |
  | `uid`          | string | User's unique identifier | `"cometchat-uid-7"`                                                     |
  | `name`         | string | User's display name      | `"Henry Marino"`                                                        |
  | `avatar`       | string | User's avatar URL        | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` |
  | `role`         | string | User's role              | `"default"`                                                             |
  | `status`       | string | User's online status     | `"offline"`                                                             |
  | `lastActiveAt` | number | Last active timestamp    | `1771993054`                                                            |
  | `tags`         | array  | User tags                | `[]`                                                                    |

  ***

  <span id="delete-message-data-entities-receiver-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.receiver` Object:**

  | Parameter    | Type   | Description         | Sample Value                                                        |
  | ------------ | ------ | ------------------- | ------------------------------------------------------------------- |
  | `entityType` | string | Type of entity      | `"user"`                                                            |
  | `entity`     | object | User entity details | [See below ↓](#delete-message-data-entities-receiver-entity-object) |

  ***

  <span id="delete-message-data-entities-receiver-entity-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.receiver.entity` Object:**

  | Parameter        | Type   | Description              | Sample Value                                                            |
  | ---------------- | ------ | ------------------------ | ----------------------------------------------------------------------- |
  | `uid`            | string | User's unique identifier | `"cometchat-uid-6"`                                                     |
  | `name`           | string | User's display name      | `"Ronald Jerry"`                                                        |
  | `avatar`         | string | User's avatar URL        | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` |
  | `role`           | string | User's role              | `"default"`                                                             |
  | `status`         | string | User's online status     | `"offline"`                                                             |
  | `lastActiveAt`   | number | Last active timestamp    | `1771994056`                                                            |
  | `conversationId` | string | Conversation identifier  | `"cometchat-uid-6_user_cometchat-uid-7"`                                |
  | `tags`           | array  | User tags                | `[]`                                                                    |
</Accordion>

Once the message is deleted, in the `onSuccess()` callback, you get an object of the `BaseMessage` class, with the `deletedAt` field set with the timestamp of the time the message was deleted. Also, the `deletedBy` field is set. These two fields can be used to identify if the message is deleted while iterating through a list of messages.

By default, CometChat allows certain roles to delete a message.

| User Role       | Conversation Type       | Deletion Capabilities          |
| --------------- | ----------------------- | ------------------------------ |
| Message Sender  | One-on-One Conversation | Messages they have sent.       |
| Message Sender  | Group Conversation      | Messages they have sent.       |
| Group Admin     | Group Conversation      | All the messages in the group. |
| Group Moderator | Group Conversation      | All the messages in the group. |

## Real-time Message Delete Events

*In other words, as a recipient, how do I know when someone deletes a message when my app is running?*

In order to receive real-time events for a message being deleted, you need to override the `onMessageDeleted()` method of the `MessageListener` class.

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={null}
    var listenerID = "UNIQUE_LISTENER_ID";

    CometChat.addMessageListener(
    listenerID,
    new CometChat.MessageListener({
      onMessageDeleted: message => {
        console.log("Deleted Message", message);
      }
    })
    );
    ```
  </Tab>

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

    CometChat.addMessageListener(
      listenerID,
      new CometChat.MessageListener({
          onMessageDeleted: (message: CometChat.BaseMessage) => {
              console.log("Deleted Message", message);
          }
      })
    );
    ```
  </Tab>
</Tabs>

<Accordion title="Response">
  **On Event** — `onMessageDeleted` callback receives the deleted message object:

  <span id="on-message-deleted-object" style={{scrollMarginTop: '100px'}} />

  **Message Object:**

  | Parameter        | Type    | Description                         | Sample Value                                       |
  | ---------------- | ------- | ----------------------------------- | -------------------------------------------------- |
  | `id`             | string  | Unique message identifier           | `"25301"`                                          |
  | `conversationId` | string  | Conversation identifier             | `"cometchat-uid-6_user_cometchat-uid-7"`           |
  | `receiverId`     | string  | Receiver's UID                      | `"cometchat-uid-7"`                                |
  | `receiverType`   | string  | Type of receiver                    | `"user"`                                           |
  | `type`           | string  | Message type                        | `"text"`                                           |
  | `category`       | string  | Message category                    | `"message"`                                        |
  | `sentAt`         | number  | Unix timestamp when originally sent | `1771996032`                                       |
  | `deliveredAt`    | number  | Unix timestamp when delivered       | `1771996033`                                       |
  | `readAt`         | number  | Unix timestamp when read            | `1771996033`                                       |
  | `deletedAt`      | number  | Unix timestamp when deleted         | `1771996040`                                       |
  | `deletedBy`      | string  | UID of user who deleted the message | `"cometchat-uid-6"`                                |
  | `updatedAt`      | number  | Unix timestamp when updated         | `1771996040`                                       |
  | `sender`         | object  | Sender user details                 | [See below ↓](#on-message-deleted-sender-object)   |
  | `receiver`       | object  | Receiver user details               | [See below ↓](#on-message-deleted-receiver-object) |
  | `data`           | object  | Additional message data             | [See below ↓](#on-message-deleted-data-object)     |
  | `reactions`      | array   | Message reactions                   | `[]`                                               |
  | `mentionedUsers` | array   | Users mentioned in message          | `[]`                                               |
  | `mentionedMe`    | boolean | Whether current user is mentioned   | `false`                                            |

  ***

  <span id="on-message-deleted-sender-object" style={{scrollMarginTop: '100px'}} />

  **`sender` Object:**

  | Parameter       | Type    | Description                            | Sample Value                                                            |
  | --------------- | ------- | -------------------------------------- | ----------------------------------------------------------------------- |
  | `uid`           | string  | User's unique identifier               | `"cometchat-uid-6"`                                                     |
  | `name`          | string  | User's display name                    | `"Ronald Jerry"`                                                        |
  | `avatar`        | string  | URL to user's avatar                   | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` |
  | `status`        | string  | User's online status                   | `"offline"`                                                             |
  | `role`          | string  | User's role                            | `"default"`                                                             |
  | `lastActiveAt`  | number  | Last active timestamp                  | `1771994056`                                                            |
  | `hasBlockedMe`  | boolean | Whether user has blocked current user  | `false`                                                                 |
  | `blockedByMe`   | boolean | Whether current user blocked this user | `false`                                                                 |
  | `deactivatedAt` | number  | Deactivation timestamp (0 if active)   | `0`                                                                     |
  | `tags`          | array   | User tags                              | `[]`                                                                    |

  ***

  <span id="on-message-deleted-receiver-object" style={{scrollMarginTop: '100px'}} />

  **`receiver` Object:**

  | Parameter       | Type    | Description                            | Sample Value                                                            |
  | --------------- | ------- | -------------------------------------- | ----------------------------------------------------------------------- |
  | `uid`           | string  | User's unique identifier               | `"cometchat-uid-7"`                                                     |
  | `name`          | string  | User's display name                    | `"Henry Marino"`                                                        |
  | `avatar`        | string  | URL to user's avatar                   | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` |
  | `status`        | string  | User's online status                   | `"offline"`                                                             |
  | `role`          | string  | User's role                            | `"default"`                                                             |
  | `lastActiveAt`  | number  | Last active timestamp                  | `1771993054`                                                            |
  | `hasBlockedMe`  | boolean | Whether user has blocked current user  | `false`                                                                 |
  | `blockedByMe`   | boolean | Whether current user blocked this user | `false`                                                                 |
  | `deactivatedAt` | number  | Deactivation timestamp (0 if active)   | `0`                                                                     |
  | `tags`          | array   | User tags                              | `[]`                                                                    |

  ***

  <span id="on-message-deleted-data-object" style={{scrollMarginTop: '100px'}} />

  **`data` Object:**

  | Parameter  | Type   | Description                  | Sample Value                                            |
  | ---------- | ------ | ---------------------------- | ------------------------------------------------------- |
  | `entities` | object | Sender and receiver entities | [See below ↓](#on-message-deleted-data-entities-object) |

  ***

  <span id="on-message-deleted-data-entities-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities` Object:**

  | Parameter  | Type   | Description             | Sample Value                                                     |
  | ---------- | ------ | ----------------------- | ---------------------------------------------------------------- |
  | `sender`   | object | Sender entity wrapper   | [See below ↓](#on-message-deleted-data-entities-sender-object)   |
  | `receiver` | object | Receiver entity wrapper | [See below ↓](#on-message-deleted-data-entities-receiver-object) |

  ***

  <span id="on-message-deleted-data-entities-sender-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.sender` Object:**

  | Parameter    | Type   | Description         | Sample Value                                                          |
  | ------------ | ------ | ------------------- | --------------------------------------------------------------------- |
  | `entityType` | string | Type of entity      | `"user"`                                                              |
  | `entity`     | object | User entity details | [See below ↓](#on-message-deleted-data-entities-sender-entity-object) |

  ***

  <span id="on-message-deleted-data-entities-sender-entity-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.sender.entity` Object:**

  | Parameter      | Type   | Description              | Sample Value                                                            |
  | -------------- | ------ | ------------------------ | ----------------------------------------------------------------------- |
  | `uid`          | string | User's unique identifier | `"cometchat-uid-6"`                                                     |
  | `name`         | string | User's display name      | `"Ronald Jerry"`                                                        |
  | `avatar`       | string | User's avatar URL        | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` |
  | `role`         | string | User's role              | `"default"`                                                             |
  | `status`       | string | User's online status     | `"offline"`                                                             |
  | `lastActiveAt` | number | Last active timestamp    | `1771994056`                                                            |
  | `tags`         | array  | User tags                | `[]`                                                                    |

  ***

  <span id="on-message-deleted-data-entities-receiver-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.receiver` Object:**

  | Parameter    | Type   | Description         | Sample Value                                                            |
  | ------------ | ------ | ------------------- | ----------------------------------------------------------------------- |
  | `entityType` | string | Type of entity      | `"user"`                                                                |
  | `entity`     | object | User entity details | [See below ↓](#on-message-deleted-data-entities-receiver-entity-object) |

  ***

  <span id="on-message-deleted-data-entities-receiver-entity-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.receiver.entity` Object:**

  | Parameter        | Type   | Description              | Sample Value                                                            |
  | ---------------- | ------ | ------------------------ | ----------------------------------------------------------------------- |
  | `uid`            | string | User's unique identifier | `"cometchat-uid-7"`                                                     |
  | `name`           | string | User's display name      | `"Henry Marino"`                                                        |
  | `avatar`         | string | User's avatar URL        | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` |
  | `role`           | string | User's role              | `"default"`                                                             |
  | `status`         | string | User's online status     | `"offline"`                                                             |
  | `lastActiveAt`   | number | Last active timestamp    | `1771993054`                                                            |
  | `conversationId` | string | Conversation identifier  | `"cometchat-uid-6_user_cometchat-uid-7"`                                |
  | `tags`           | array  | User tags                | `[]`                                                                    |
</Accordion>

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

  ```javascript theme={null}
  CometChat.removeMessageListener("UNIQUE_LISTENER_ID");
  ```
</Warning>

## Missed Message Delete Events

*In other words, as a recipient, how do I know if someone deleted a message when my app was not running?*

When you retrieve the list of previous messages, for the messages that were deleted, the `deletedAt` and the `deletedBy` fields will be set. Also, for example, of the total number of messages for a conversation are 100, and the message with message ID 50 was deleted. Now the message with id 50 will have the `deletedAt` and the `deletedBy` fields set whenever it is pulled from the history. Also, the 101st message will be an Action message informing you that the message with id 50 has been deleted.

<Accordion title="Response">
  **When fetching message history** — deleted messages have `deletedAt` and `deletedBy` fields set:

  <span id="missed-delete-message-object" style={{scrollMarginTop: '100px'}} />

  **Message Object (per item in array):**

  | Parameter        | Type    | Description                         | Sample Value                                  |
  | ---------------- | ------- | ----------------------------------- | --------------------------------------------- |
  | `id`             | string  | Unique message identifier           | `"25301"`                                     |
  | `conversationId` | string  | Conversation identifier             | `"cometchat-uid-6_user_cometchat-uid-7"`      |
  | `receiverId`     | string  | Receiver's UID                      | `"cometchat-uid-7"`                           |
  | `receiverType`   | string  | Type of receiver                    | `"user"`                                      |
  | `type`           | string  | Message type                        | `"text"`                                      |
  | `category`       | string  | Message category                    | `"message"`                                   |
  | `sentAt`         | number  | Unix timestamp when originally sent | `1771996032`                                  |
  | `deliveredAt`    | number  | Unix timestamp when delivered       | `1771996033`                                  |
  | `readAt`         | number  | Unix timestamp when read            | `1771996033`                                  |
  | `deletedAt`      | number  | Unix timestamp when deleted         | `1771996040`                                  |
  | `deletedBy`      | string  | UID of user who deleted the message | `"cometchat-uid-6"`                           |
  | `updatedAt`      | number  | Unix timestamp when updated         | `1771996040`                                  |
  | `sender`         | object  | Sender user details                 | [See below ↓](#missed-delete-sender-object)   |
  | `receiver`       | object  | Receiver user details               | [See below ↓](#missed-delete-receiver-object) |
  | `data`           | object  | Additional message data             | [See below ↓](#missed-delete-data-object)     |
  | `reactions`      | array   | Message reactions                   | `[]`                                          |
  | `mentionedUsers` | array   | Users mentioned in message          | `[]`                                          |
  | `mentionedMe`    | boolean | Whether current user is mentioned   | `false`                                       |

  ***

  <span id="missed-delete-sender-object" style={{scrollMarginTop: '100px'}} />

  **`sender` Object:**

  | Parameter       | Type    | Description                            | Sample Value                                                            |
  | --------------- | ------- | -------------------------------------- | ----------------------------------------------------------------------- |
  | `uid`           | string  | User's unique identifier               | `"cometchat-uid-6"`                                                     |
  | `name`          | string  | User's display name                    | `"Ronald Jerry"`                                                        |
  | `avatar`        | string  | URL to user's avatar                   | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` |
  | `status`        | string  | User's online status                   | `"offline"`                                                             |
  | `role`          | string  | User's role                            | `"default"`                                                             |
  | `lastActiveAt`  | number  | Last active timestamp                  | `1771994056`                                                            |
  | `hasBlockedMe`  | boolean | Whether user has blocked current user  | `false`                                                                 |
  | `blockedByMe`   | boolean | Whether current user blocked this user | `false`                                                                 |
  | `deactivatedAt` | number  | Deactivation timestamp (0 if active)   | `0`                                                                     |
  | `tags`          | array   | User tags                              | `[]`                                                                    |

  ***

  <span id="missed-delete-receiver-object" style={{scrollMarginTop: '100px'}} />

  **`receiver` Object:**

  | Parameter       | Type    | Description                            | Sample Value                                                            |
  | --------------- | ------- | -------------------------------------- | ----------------------------------------------------------------------- |
  | `uid`           | string  | User's unique identifier               | `"cometchat-uid-7"`                                                     |
  | `name`          | string  | User's display name                    | `"Henry Marino"`                                                        |
  | `avatar`        | string  | URL to user's avatar                   | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` |
  | `status`        | string  | User's online status                   | `"offline"`                                                             |
  | `role`          | string  | User's role                            | `"default"`                                                             |
  | `lastActiveAt`  | number  | Last active timestamp                  | `1771993054`                                                            |
  | `hasBlockedMe`  | boolean | Whether user has blocked current user  | `false`                                                                 |
  | `blockedByMe`   | boolean | Whether current user blocked this user | `false`                                                                 |
  | `deactivatedAt` | number  | Deactivation timestamp (0 if active)   | `0`                                                                     |
  | `tags`          | array   | User tags                              | `[]`                                                                    |

  ***

  <span id="missed-delete-data-object" style={{scrollMarginTop: '100px'}} />

  **`data` Object:**

  | Parameter  | Type   | Description                  | Sample Value                                       |
  | ---------- | ------ | ---------------------------- | -------------------------------------------------- |
  | `entities` | object | Sender and receiver entities | [See below ↓](#missed-delete-data-entities-object) |

  ***

  <span id="missed-delete-data-entities-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities` Object:**

  | Parameter  | Type   | Description             | Sample Value                                                |
  | ---------- | ------ | ----------------------- | ----------------------------------------------------------- |
  | `sender`   | object | Sender entity wrapper   | [See below ↓](#missed-delete-data-entities-sender-object)   |
  | `receiver` | object | Receiver entity wrapper | [See below ↓](#missed-delete-data-entities-receiver-object) |

  ***

  <span id="missed-delete-data-entities-sender-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.sender` Object:**

  | Parameter    | Type   | Description         | Sample Value                                                     |
  | ------------ | ------ | ------------------- | ---------------------------------------------------------------- |
  | `entityType` | string | Type of entity      | `"user"`                                                         |
  | `entity`     | object | User entity details | [See below ↓](#missed-delete-data-entities-sender-entity-object) |

  ***

  <span id="missed-delete-data-entities-sender-entity-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.sender.entity` Object:**

  | Parameter      | Type   | Description              | Sample Value                                                            |
  | -------------- | ------ | ------------------------ | ----------------------------------------------------------------------- |
  | `uid`          | string | User's unique identifier | `"cometchat-uid-6"`                                                     |
  | `name`         | string | User's display name      | `"Ronald Jerry"`                                                        |
  | `avatar`       | string | User's avatar URL        | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` |
  | `role`         | string | User's role              | `"default"`                                                             |
  | `status`       | string | User's online status     | `"offline"`                                                             |
  | `lastActiveAt` | number | Last active timestamp    | `1771994056`                                                            |
  | `tags`         | array  | User tags                | `[]`                                                                    |

  ***

  <span id="missed-delete-data-entities-receiver-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.receiver` Object:**

  | Parameter    | Type   | Description         | Sample Value                                                       |
  | ------------ | ------ | ------------------- | ------------------------------------------------------------------ |
  | `entityType` | string | Type of entity      | `"user"`                                                           |
  | `entity`     | object | User entity details | [See below ↓](#missed-delete-data-entities-receiver-entity-object) |

  ***

  <span id="missed-delete-data-entities-receiver-entity-object" style={{scrollMarginTop: '100px'}} />

  **`data.entities.receiver.entity` Object:**

  | Parameter        | Type   | Description              | Sample Value                                                            |
  | ---------------- | ------ | ------------------------ | ----------------------------------------------------------------------- |
  | `uid`            | string | User's unique identifier | `"cometchat-uid-7"`                                                     |
  | `name`           | string | User's display name      | `"Henry Marino"`                                                        |
  | `avatar`         | string | User's avatar URL        | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` |
  | `role`           | string | User's role              | `"default"`                                                             |
  | `status`         | string | User's online status     | `"offline"`                                                             |
  | `lastActiveAt`   | number | Last active timestamp    | `1771993054`                                                            |
  | `conversationId` | string | Conversation identifier  | `"cometchat-uid-6_user_cometchat-uid-7"`                                |
  | `tags`           | array  | User tags                | `[]`                                                                    |
</Accordion>

For the message deleted event, in the `Action` object received, the following fields can help you get the relevant information-

1. `action` - `deleted`
2. `actionOn` - Updated message object which was deleted.
3. `actionBy` - User object containing the details of the user who has deleted the message.
4. `actionFor` - User/group object having the details of the receiver to which the message was sent.

<Note>
  When fetching message history, deleted messages include `deletedAt` and `deletedBy` fields. You can check if `deletedAt` is set to identify deleted messages. Additionally, an Action message with `action: "deleted"` is added to the message list for audit/timeline purposes.
</Note>

<Note>
  In order to edit or delete a message, you need to be either the sender of the message or the admin/moderator of the group in which the message was sent.
</Note>

<AccordionGroup>
  <Accordion title="Best Practices">
    * **Check `deletedAt` when rendering messages.** Before displaying a message, check if `deletedAt` is set. If it is, show a "This message was deleted" placeholder instead of the original content.
    * **Use unique listener IDs.** Use a unique identifier per screen or component (e.g., `"ChatScreen_DeleteListener"`) to avoid conflicts with other listeners.
    * **Always clean up listeners.** Remove message listeners in your component's cleanup or unmount lifecycle to prevent memory leaks.
    * **Handle permissions gracefully.** If a user attempts to delete a message they don't have permission to delete, handle the error callback and inform the user.
  </Accordion>

  <Accordion title="Troubleshooting">
    * **"Message delete failed" error:** Verify that the message ID is valid and that the current user has permission to delete the message (sender, group admin, or group moderator).
    * **`onMessageDeleted` not firing:** Ensure you have registered the `MessageListener` with `CometChat.addMessageListener()` before the delete event occurs, and that the listener ID is unique.
    * **Deleted messages still showing in the UI:** Make sure you are checking the `deletedAt` field on each message when rendering your message list, and updating your local state when `onMessageDeleted` fires.
    * **Duplicate delete events:** This usually happens when multiple listeners are registered with the same or different IDs without being removed. Ensure you remove listeners on component unmount.
  </Accordion>
</AccordionGroup>

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Edit a Message" icon="pen-to-square" href="/sdk/react-native/edit-message">
    Modify the content of a sent message
  </Card>

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

  <Card title="Receive Messages" icon="inbox" href="/sdk/react-native/receive-messages">
    Listen for and retrieve incoming messages
  </Card>

  <Card title="Flag a Message" icon="flag" href="/sdk/react-native/flag-message">
    Report inappropriate or unwanted messages
  </Card>
</CardGroup>
