Skip to main content


Hook for getting all wallet addresses that have a role in a smart contract.

Available to use on contracts that implement Permission Controls.

import { useAllRoleMembers } from "@thirdweb-dev/react";

const { data, isLoading, error } = useAllRoleMembers(contract);


Provide your contract instance as the argument.

import { useAllRoleMembers, useContract } from "@thirdweb-dev/react";

// Your smart contract address (must implement permission controls)
const contractAddress = "{{contract_address}}";

function App() {
const { contract } = useContract(contractAddress);
const { data, isLoading, error } = useAllRoleMembers(contract);

Return Value

Return Value

The hook's data property, once loaded, is an object, where the keys are the role names and the values are arrays of wallet addresses that have that role.

| "admin"
| "transfer"
| "minter"
| "pauser"
| "lister"
| "asset"
| "unwrap"
| "factory"
| (string & {}),
> | undefined;

For example, if the contract has two roles, admin and transfer, and the admin role has two members, the data property will look like this:

admin: ["0x1234", "0x5678"],
transfer: [],