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 > Embedded Wallets and enable Embedded Wallets, then click settings and choose the chains you’d like wallets created on.
Embedded Wallets V3 Settings

Private Key Export Settings

By default, users can export their private keys from embedded wallets. You can disable private key exports in the Embedded Wallets settings. Navigate to the Security section and toggle Private Key Exports to control whether users can export their private keys.
Private Key Export Toggle
Consider disabling private key exports if your use case requires additional security controls. Disabling exports prevents users from exporting keys, which can reduce the risk of key exposure but limits user portability. See Best Practices - Private Key Export Controls for guidance.

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/stellar
npm i @dynamic-labs/sui
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 { StellarWalletConnectors } from '@dynamic-labs/stellar';
import { SuiWalletConnectors } from '@dynamic-labs/sui';

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

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