Skip to main content
If you are a current user of our legacy embedded wallets, you can find the migration guide here and any legacy documentation here (only creating and reveal/unlinking are different).

General Setup

Enable in Dashboard

Navigate to the Dynamic Dashboard > Developers and enable Embedded Wallets, then click settings and choose the chains you’d like wallets created on.
Embedded Wallets V3 Settings

Using your UI

Only supported on React SDK v4.20.0 and later versions
1

Install Wallet Connectors

Note: You only need to install the connectors for the chains you want to support.
npm i @dynamic-labs/sdk-react-core
npm i @dynamic-labs/ethereum
npm i @dynamic-labs/solana
npm i @dynamic-labs/sui
npm i @dynamic-labs/ton
2

Configure CSP

You must whitelist the dynamic auth URL for the iframe connection to work. Here’s how:
res.setHeader("Content-Security-Policy", "frame-src https://app.dynamicauth.com 'self';");
⚠️ If you’re already setting CSP, append https://app.dynamicauth.com to the existing frame-src list rather than replacing it.

<meta http-equiv="Content-Security-Policy" content="frame-src https://app.dynamicauth.com 'self';">
add_header Content-Security-Policy "frame-src https://app.dynamicauth.com 'self';";
vercel.json
{
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        {
          "key": "Content-Security-Policy",
          "value": "frame-src https://app.dynamicauth.com 'self';"
        }
      ]
    }
  ]
}
_headers
  Content-Security-Policy: frame-src https://app.dynamicauth.com 'self';
3

Configure Your Provider

Include the appropriate connectors inside your provider settings:
import { EthereumWalletConnectors } from '@dynamic-labs/ethereum';
import { SolanaWalletConnectors } from '@dynamic-labs/solana';
import { SuiWalletConnectors } from '@dynamic-labs/sui';
import { TonWalletConnectors } from '@dynamic-labs/ton';

const connectors = [
  EthereumWalletConnectors,
  SolanaWalletConnectors,
  SuiWalletConnectors,
  TonWalletConnectors,
];

return (
  <DynamicContextProvider
    settings={{
      walletConnectors: connectors,
    }}
  >
    {/* Your app components */}
  </DynamicContextProvider>
);
Once enabled, you can choose whether wallets are created automatically on signup/sign-in, or created manually in your app logic. See Creating Embedded Wallets.

Next steps