Linking & handling multiple wallets
Privy allows users to link multiple wallets to their account. Your app may want users to link additional wallets to get a more comprehensive understanding of the user's web3 experience and activities.
Linking multiple wallets
You can prompt a user to link additional wallets to their account using the
linkWallet method. Once this method is invoked, the user's chosen wallet application (e.g. MetaMask) will prompt the user to select the address they want to link.
The active wallet
To make it easier to handle multiple wallets for a single user, Privy has a notion of an active wallet in the client. If a user has linked multiple wallets, the active wallet represents the wallet that the user is actively using in your app.
Additionally, when you need to request a signature or transaction from the user, and you request Privy for their wallet provider, Privy will return the provider for the user's active wallet.
Setting the active wallet
Generally, the wallet that a user has linked most recently will be the active wallet. More concretely:
- If a user has no wallets linked to their account, the active wallet (
user.wallet) will be
- If a user has only one wallet linked to their account, that wallet will be the active wallet.
- When a user links a new wallet, that wallet will become the new active wallet.
- If a user unlinks their active wallet, the new active wallet will be the most recently linked of their remaining wallets.
You can override the user's current active wallet by calling the
setActiveWallet method from the
usePrivy hook and specifying the address of the wallet that you would like to become active.
You may want to override the current user's active wallet when certain events take place in your app. For instance, if a user disconnects their current active wallet from your site, and connects a different wallet, you may want to call
accountsChanged event is fired.