Skip to main content
Sharing contacts is a command that allows you to request users to share contacts in their phone in a privacy preserving way. This command will be available from v1.4.0 of minikit and v2.8.72 of World App.

Crafting the payload

export type ShareContactsInput = {
	isMultiSelectEnabled: boolean
	inviteMessage?: string
}
  • isMultiSelectEnabled is a boolean that determines if the user can select multiple contacts, by default you can only select one contact in the modal.
  • inviteMessage is an optional custom message that will be displayed to the user when the user invites a non world app user while inside of your mini app.

Using the command

Here is an example of how to use the shareContacts command.
  • Async handlers
  • Event listeners

Sending the command and handling the response

// Example function of how to use the command
const shareContacts = useCallback(
    async (isMultiSelectEnabled: boolean = false, inviteMessage?: string) => {
        const shareContactsPayload: ShareContactsPayload = {
            isMultiSelectEnabled,
            inviteMessage,
        };
        const payload = await MiniKit.commandsAsync.shareContacts(shareContactsPayload);
        // Handle the response
    },
    []
);

Response type

The response will contain an array of contacts that the user has selected.

Success response payload

type MiniAppShareContactsSuccessPayload = {
    status: 'success';
    contacts: Array<{
        username: string;
        walletAddress: string;
        profilePictureUrl: string | null;
    }>;
    timestamp: string;
    version: number;
};

Error response payload

type MiniAppShareContactsErrorPayload = {
    status: 'error';
    error_code: ShareContactsErrorCodes;
    version: number;
}
The possible error codes are:
  • user_rejected - The user rejected the request
  • generic_error - An unknown error occurred

Success Result on World App

If implemented correctly, the user will see the following drawer on World App.
I