Skip to main content
// Delete a message
await CometChat.deleteMessage(messageId);

// Listen for real-time deletions
CometChat.addMessageListener("ID", new CometChat.MessageListener({
  onMessageDeleted: (message) => {
    console.log("Deleted:", message.getId(), message.getDeletedAt());
  }
}));
Who can delete: Message sender, Group admin, Group moderator Deleted fields: deletedAt (timestamp), deletedBy (user who deleted)
This operation is irreversible. Deleted messages cannot be recovered.
Deleting a message is straightforward. Receiving delete events has two parts:
  1. Adding a listener for real-time deletes when your app is running
  2. Fetching missed deletes when your app was offline

Delete a Message

Use deleteMessage() with the message ID.
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);
}
); 
The deleted message object is returned with deletedAt (timestamp) and deletedBy (UID of deleter) fields set. The deleteMessage() method returns a BaseMessage object. Access the response data using getter methods:
FieldGetterReturn TypeDescription
idgetId()numberUnique message ID
sendergetSender()UserThe user who sent the message
deletedAtgetDeletedAt()numberTimestamp when the message was deleted
deletedBygetDeletedBy()stringUID of the user who deleted the message
By default, CometChat allows certain roles to delete a message.
User RoleConversation TypeDeletion Capabilities
Message SenderOne-on-One ConversationMessages they have sent.
Message SenderGroup ConversationMessages they have sent.
Group AdminGroup ConversationAll the messages in the group.
Group ModeratorGroup ConversationAll the messages in the group.

Real-time Message Delete Events

Use onMessageDeleted in MessageListener to receive real-time delete events.
let listenerID = "UNIQUE_LISTENER_ID";

CometChat.addMessageListener(
listenerID,
new CometChat.MessageListener({
  onMessageDeleted: message => {
    console.log("Deleted Message", message);
  }
})
); 
The onMessageDeleted callback receives a BaseMessage object with the deletedAt and deletedBy fields set. Access the data using getter methods:
FieldGetterReturn TypeDescription
idgetId()numberUnique message ID
sendergetSender()UserThe user who sent the message
deletedAtgetDeletedAt()numberTimestamp when the message was deleted
deletedBygetDeletedBy()stringUID of the user who deleted the message

Missed Message Delete Events

When fetching message history, deleted messages have deletedAt and deletedBy fields set. Additionally, an Action message is created when a message is deleted. The Action object contains:
  • actiondeleted
  • actionOn — Deleted message object
  • actionBy — User who deleted the message
  • actionFor — Receiver (User/Group)
You must be the message sender or a group admin/moderator to delete a message.
Always remove message listeners when they’re no longer needed to prevent memory leaks.

Next Steps

Edit a Message

Edit sent messages in conversations

Send Messages

Send text, media, and custom messages

Receive Messages

Listen for incoming messages in real-time

Flag a Message

Report inappropriate messages