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

# Change Member Scope

> Learn how to change group member scope (admin, moderator, participant) and receive real-time scope change events using the CometChat React Native SDK.

<Accordion title="AI Integration Quick Reference">
  | Field | Value |
  | - | - |
  | Package | `@cometchat/chat-sdk-react-native` |
  | Import | `import { CometChat } from "@cometchat/chat-sdk-react-native";` |
  | Key Methods | `addGroupListener()`, `removeGroupListener()`, `updateGroupMemberScope()` |
  | Key Classes | `Action`, `CometChatException`, `GROUP_MEMBER_SCOPE`, `Group`, `GroupListener`, `User` |
  | Prerequisites | SDK initialized via [`CometChat.init()`](/sdk/react-native/setup-sdk) and a logged-in user via [`CometChat.login()`](/sdk/react-native/authentication-overview) |
  | Primary output | `Promise<boolean>` — `true` on success; rejects with `CometChatException` |
  | Constraints | Scopes are `admin` / `moderator` / `participant`. Only an owner or admin may promote; the owner's scope cannot be changed here — use ownership transfer. Every `add*Listener()` needs a matching `remove*Listener()` with the same listener ID — unremoved listeners leak and fire after unmount. |
  | Related | [Transfer Ownership](/sdk/react-native/transfer-group-ownership) · [Retrieve Group Members](/sdk/react-native/retrieve-group-members) · [Kick & Ban Members](/sdk/react-native/group-kick-ban-members) |
  | Full reference | [`GroupMember`](/sdk/reference/entities#groupmember) · [`Group`](/sdk/reference/entities#group) · [`CometChatException`](/sdk/reference/auxiliary#cometchatexception) |

  ```javascript theme={null}
  // Change member scope to admin
  await CometChat.updateGroupMemberScope("GUID", "UID", CometChat.GROUP_MEMBER_SCOPE.ADMIN);

  // Listen for scope change events
  CometChat.addGroupListener("listener", new CometChat.GroupListener({
    onGroupMemberScopeChanged: (message, changedUser, newScope, oldScope, changedGroup) => { }
  }));
  ```
</Accordion>

Promote or demote group members between admin, moderator, and participant scopes. Only admins can change member scopes, and only the group owner can change admin scopes.

## Change Scope of a Group Member

Use `updateGroupMemberScope()` to change a member's scope within a [Group](/sdk/reference/entities#group).

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

    CometChat.updateGroupMemberScope(GUID, UID, CometChat.GROUP_MEMBER_SCOPE.ADMIN).then(
      (response: boolean) => {
          console.log("Group member scope changed", response);
      }, (error: CometChat.CometChatException) => {
          console.log("Group member scope change failed", error);
      }
    );
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let UID = "UID";
    let scope = CometChat.GROUP_MEMBER_SCOPE.ADMIN;

    CometChat.updateGroupMemberScope(GUID, UID, scope).then(
    response => {
      console.log("Group member scope changed", response);
    }, error => {
      console.log("Group member scope change failed", error);
    }
    );
    ```
  </Tab>
</Tabs>

This method takes the below parameters:

| Parameter | Description |
| - | - |
| `UID` | The UID of the member whose scope you want to change |
| `GUID` | The GUID of the group |
| `scope` | The new scope: `CometChat.GROUP_MEMBER_SCOPE.ADMIN`, `CometChat.GROUP_MEMBER_SCOPE.MODERATOR`, or `CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT` |

The default scope is `participant`. Only Admins can change member scopes.

On success, the method resolves with `true` (boolean).

## Real-Time Group Member Scope Changed Events

Implement `onGroupMemberScopeChanged()` in `GroupListener` to receive real-time notifications when a member's scope changes.

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

    CometChat.addGroupListener(
      listenerID,
      new CometChat.GroupListener({
          onGroupMemberScopeChanged: (message: CometChat.Action, changedUser: CometChat.User, newScope: string, oldScope: string, changedGroup: CometChat.Group) => {
              console.log("Scope changed", { message, changedUser, newScope, oldScope, changedGroup });
          }
      })
    );
    ```
  </Tab>

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

    CometChat.addGroupListener(
    listenerID,
    new CometChat.GroupListener({
      onGroupMemberScopeChanged: (message, changedUser, newScope, oldScope, changedGroup) => {
        console.log("Scope changed", {message, changedUser, newScope, oldScope, changedGroup});
      }
    })
    );
    ```
  </Tab>
</Tabs>

<Warning>
  Always remove group 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.

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

## Missed Group Member Scope Changed Events

When fetching previous messages, scope changes appear as [Action](/sdk/reference/messages#action) messages (a subclass of `BaseMessage`).

| Field | Value/Type | Description |
| - | - | - |
| `action` | `"scopeChanged"` | The action type |
| `actionOn` | [User](/sdk/reference/entities#user) | The user whose scope changed |
| `actionBy` | [User](/sdk/reference/entities#user) | The user who changed the scope |
| `actionFor` | [Group](/sdk/reference/entities#group) | The group |
| `oldScope` | `string` | The previous scope |
| `newScope` | `string` | The new scope |

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Transfer Group Ownership" icon="arrow-right-arrow-left" href="/sdk/react-native/transfer-group-ownership">
    Transfer ownership of a group to another member
  </Card>

  <Card title="Kick & Ban Members" icon="user-slash" href="/sdk/react-native/group-kick-ban-members">
    Remove or ban members from a group
  </Card>

  <Card title="Add Members" icon="user-plus" href="/sdk/react-native/group-add-members">
    Add new members to a group
  </Card>

  <Card title="Retrieve Group Members" icon="users" href="/sdk/react-native/retrieve-group-members">
    Fetch the list of members in a group
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.