Skip to main content
// Delete a message
CometChat.delete(messageId: 12345, onSuccess: { msg in
  print("Deleted:", msg.id, msg.deletedAt)
}, onError: { err in })

// Listen for real-time deletions
extension VC: CometChatMessageDelegate {
  func onMessageDeleted(message: BaseMessage) {
    print("Deleted:", message.id, message.deletedAt)
  }
}
Who can delete: Message sender, Group admin, Group moderator Deleted fields: deletedAt (timestamp), deletedBy (user who deleted)
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 CometChat.delete(messageId:) with the message ID.
CometChat.delete(messageId: 12345, onSuccess: { (message) in
    print("Message deleted: \(message)")
}, onError: { (error) in
    print("Error: \(error.errorDescription)")
})
The deleted message object is returned with deletedAt (timestamp) and deletedBy (UID of deleter) fields set. The delete() method returns a BaseMessage object.
This is a soft delete — message content is still available on the object. Check deletedAt > 0 to identify deleted messages.
UserConversation TypeDeletion Capabilities
Message SenderOne-on-oneOwn messages only
Message SenderGroupOwn messages only
Group AdminGroupAll messages
Group ModeratorGroupAll messages

Real-time Message Delete Events

The onMessageDeleted callback receives a BaseMessage object with the deletedAt and deletedBy fields set.
extension YourViewController: CometChatMessageDelegate {

    func onMessageDeleted(message: BaseMessage) {
        print("Message deleted: \(message.id)")
        print("Deleted at: \(message.deletedAt)")
        print("Deleted by: \(message.deletedBy ?? "")")
    }
}

// Register the delegate:
CometChat.messagedelegate = self

Missed Message Delete Events

When fetching message history, deleted messages have deletedAt and deletedBy fields set. Additionally, an Action message is added to history indicating the deletion. The Action object contains:
  • actiondeleted
  • actionOn — The deleted message object
  • actionBy — User who deleted the message
  • actionFor — Receiver (User or Group)
for message in messages {
    if message.deletedAt > 0 {
        print("Message \(message.id) was deleted at \(message.deletedAt)")
    }

    if let actionMessage = message as? ActionMessage {
        if actionMessage.action == .messageDeleted {
            print("Delete action detected")
        }
    }
}
You must be the message sender or a group admin/moderator to delete a message.

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