Dynamic v3 wallets are built on our most advanced TSS-MPC infrastructure, delivering stronger security and flexibility. This guide explains how to seamlessly transition your users from legacy embedded wallets (v1 & v2).
Create a new v3 wallet and hide the old v2 wallets.
Create a new wallet
Copy
Ask AI
import { useDynamicWaas } from '@dynamic-labs/sdk-react-core';import { ChainEnum } from "@dynamic-labs/sdk-api-core";const MyComponent = () => { const { createWalletAccount } = useDynamicWaas(); ...onSignIn // Adjust the chain you want to create a wallet for as needed await createWalletAccount([ChainEnum.Evm]);}
The entire migration process via the Dynamic Widget occurs on the client-side within a secure iframe. The private key is exported from the old wallet and imported to the new wallet entirely within this iframe, meaning only the user ever has access to it. No key exists on the server.
Private Key To Shares
When importing an existing private key into Dynamic’s TSS-MPC system, we use Shamir Secret Sharing (SSS) to securely split the key into multiple shares. This process:
Takes an existing private key as input
Uses SSS to split it into either 2 or 3 shares (depending on your configuration)
Distributes the shares between the relevant parties (user, server, and optionally a backup)
Securely destroys the original private key
After import, the key exists solely in its distributed form, and all future operations are performed using TSS-MPC. The complete private key is never reconstructed, preserving the security benefits of TSS-MPC while enabling seamless migration from traditional wallets.
What if my users have smart contract (AA) wallets?
This is handled automatically in the background, the SCW will automatically be associated with the v3 wallet.
Not Using Smart Contract Wallets (SCWs) yet? This migration is an ideal time to upgrade your smart accounts from ERC-4337 to ERC-7702. ERC-7702 improves the user experience by using a single address for both the user’s main account (EOA) and the smart contract.You can switch to ERC-7702 in your dashboard’s Smart Wallets & AA settings.
What if my user has multiple wallets?
The UI path is designed to be flexible. The user can upgrade each wallet one by one in the same session, or upgrade one wallet, then leave the upgrade flow and come back to upgrade the remaining ones another time.For the headless path, you just need to call the upgradeToDynamicWaas hook for each wallet.
Does the timing of the wallet creation change?
Yes. In Dynamic WaaS, wallets are no longer created immediately upon authentication. Instead, wallet creation occurs after authentication through a dedicated create wallet flow. If your existing implementation relies on wallets being available immediately after authentication success (e.g., accessing wallet data in JWTs during first-time creation), verify compatibility with this new flow. Use onAuthSuccess to trigger any logic that requires a wallet.