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

# Edit A Message

> Edit A Message — CometChat documentation.

While [editing a message](/sdk/react-native/2.0/messaging-edit-message) is straightforward, receiving events for edited messages with CometChat has two parts:

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

## Edit a Message

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

In order to edit a message, you can use the `editMessage()` method. This method takes an object of the `BaseMessage` class. At the moment, you are only allowed to edit `TextMessage` and `CustomMessage`. Thus, the `BaseMessage` object must either be a Text or a Custom Message.

<Tabs>
  <Tab title="Edit Message">
    ```javascript theme={null}
    let receiverID = "RECEIVER_UID";
    let messageText = "Hello world!";
    let receiverType = CometChat.RECEIVER_TYPE.USER;
    let messageId = "MESSAGE_ID_OF_THE_MESSAGE_TO_BE_EDITED";
    let textMessage = new CometChat.TextMessage(receiverID, messageText, receiverType);

    textMessage.setId(messageId);

    CometChat.editMessage(textMessage).then(
      message => {
        console.log("Message Edited", message);
      }, error => {
        console.log("Message editing failed with error:", error);
      }
    );
    ```
  </Tab>
</Tabs>

The object of the edited message will be returned in the `onSuccess()` callback method of the listener. The message object will contain the `editedAt` field set with the timestamp of the time the message was edited. This will help you identify if the message was edited while iterating through the list of messages. The `editedBy` field is also set to the UID of the user who edited the message.

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

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

## Real-time Message Edit Events

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

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

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

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

## Missed Message Edit Events

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

When you retrieve the list of previous messages, for the message that was edited, the `editedAt` and the `editedBy` 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 edited. Now the message with id 50 will have the `editedAt` and the `editedBy` fields set whenever it is pulled from the history. Also, the 101st message will be and \[Action] message informing you that the message with id 50 has been edited.

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

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

<Note>
  In order to edit 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>
