Embedded wallets
The dynamic client provides an interface to easily interact with and create embedded wallets for your users.
Notice that embedded wallets must be enabled in your environment’s dashboard settings first!
Creating and Getting the Wallet
This interface allows you to create new embedded wallets, check if any already exist and fetch the current wallet.
See the following example which renders a prompt to create a wallet or renders its address if it already exists:
import { dynamicClient } from '<path to client file>';
import { useReactiveClient } from '@dynamic-labs/react-hooks';
const EmbeddedWallet: FC = () => {
const { wallets } = useReactiveClient(dynamicClient)
const wallet = wallets.userWallets[0]
return (
<View>
{wallet && wallets.embedded.hasWallet ? (
<View>Your wallet address: {wallet.address}</View>
) : (
<Button onPress={() => wallets.embedded.createWallet()}>
Create Wallet
</Button>
)}
</View>
)
}
Creating a Wallet for a Specific Chain
The createWallet
method also allows you to create an embedded wallet for a specific chain
See the example below:
import { dynamicClient } from '<path to client file>';
import { useReactiveClient } from '@dynamic-labs/react-hooks';
const AddEvmWalletButton: FC = () => {
return (
<Button
title="Add EVM wallet"
onPress={() => dynamicClient
.wallets
.embedded
.createWallet({ chain: 'Evm' })
}
/>
)
}
Exporting Wallet Keys
If your app uses embedded wallets, you must also make sure to provide your users with some way to export their wallets’ keys to ensure they have absolute control over them.
Dynamic provides a quick and easy way to do so with our embedded wallet key export UI flow!
This flow will export the keys from your primary wallet. See here how to set your primary wallet.
const ExportEmbeddedWalletKeyButtons: FC = () => {
return (
<View>
<TouchableOpacity
onPress={() =>
dynamicClient.ui.wallets.revealEmbeddedWalletKey({
type: 'private-key',
})
}
>
Reveal private key
</TouchableOpacity>
<TouchableOpacity
onPress={() =>
dynamicClient.ui.wallets.revealEmbeddedWalletKey({
type: 'recovery-phrase',
})
}
>
Reveal recovery phrase
</TouchableOpacity>
</View>
)
}
You can read more about the embedded wallets module here.
Was this page helpful?