Skip to main content

Documentation Index

Fetch the complete documentation index at: https://www.dynamic.xyz/docs/llms.txt

Use this file to discover all available pages before exploring further.

Embedded wallets are Dynamic-created, user-owned wallets secured with multi-party computation (MPC). You configure how they behave per environment — when they’re created, how users recover them, whether gas is sponsored — through the project settings tree under sdk.embeddedWallets.
What you need: The CLI installed and authenticated, with an environment selected. See Getting started. These settings change configuration for the active environment — confirm it with dyn status first.
These are dashboard settings — configuration, not behavior. How they take effect depends on your SDK.
  • JavaScript SDK (@dynamic-labs/client) — used vanilla, or inside React, Vue, and other frameworks. This is the SDK to build on. It surfaces each setting to your app, and you honor it with an explicit call at the right point in your flow (each section below names the call). You stay in control of when wallets are created and how recovery and security prompts appear.
  • Legacy React SDK (@dynamic-labs/sdk-react-core) — deprecated; documented here only for existing integrations. It reads the same settings and runs the flows for you (creating wallets during sign-up, rendering recovery and authenticator prompts). New apps should build on the JavaScript SDK.
Changing a setting here updates the environment’s configuration; your app then acts on it through whichever SDK you use. Each section below shows how.

Discover the available settings

dyn settings list is the canonical discovery surface. Filter it to the embedded wallet subtree:
dyn settings list | grep -i embeddedWallets
dyn settings show sdk.embeddedWallets        # read the whole subtree

Control wallet creation

Mark that new users should get an embedded wallet:
dyn settings set sdk.embeddedWallets.automaticEmbeddedWalletCreation true
To extend that to users who sign in with an external wallet (e.g. MetaMask):
dyn settings set sdk.embeddedWallets.automaticEmbeddedWalletCreationForExternal true
Acting on this setting:
  • JavaScript SDK (@dynamic-labs/client): read the policy for the user’s chain with shouldAutoCreateWalletForChain, then create the wallet when it returns true by calling createWaasWalletAccounts. This lets you decide exactly when creation happens — right after sign-up, or lazily before the first transaction. See Creating WaaS wallet accounts.
  • Legacy React SDK (@dynamic-labs/sdk-react-core): the wallet is created automatically during sign-up — no extra code. See Creating wallets.

Configure recovery and security

Let users start account recovery by email:
dyn settings set sdk.embeddedWallets.emailRecoveryEnabled true
Require users to add a security method (authenticator) at sign-up, optionally letting them defer it until just before their first transaction:
dyn settings set sdk.embeddedWallets.forceAuthenticatorAtSignup true
dyn settings set sdk.embeddedWallets.allowSkippingAuthenticatorAtSignup true
Acting on these settings:
  • JavaScript SDK (@dynamic-labs/client): you own the recovery and sign-up security experience. Offer email recovery and prompt for an authenticator at the points your flow calls for them, using the SDK’s WaaS recovery and authentication APIs — which also lets you tailor exactly when each prompt appears. (These particular toggles configure the prebuilt prompts in the legacy React SDK; on the JavaScript SDK you implement the equivalent UX directly.)
  • Legacy React SDK (@dynamic-labs/sdk-react-core): these render prebuilt recovery and authenticator prompts for you during the auth flow.
Cover network fees so users don’t pay them. Enable per chain family:
dyn settings set sdk.embeddedWallets.evmGasSponsorshipEnabled true   # EVM chains
dyn settings set sdk.embeddedWallets.svmGasSponsorshipEnabled true   # Solana
Gas sponsorship is enforced by Dynamic when a transaction is submitted, so the policy applies no matter which SDK you use. In the JavaScript SDK (@dynamic-labs/client), check it before submitting with the isEvmGasSponsorshipEnabled helper; the legacy React SDK routes transactions through sponsorship transparently.

Email notifications

Dynamic emails users on sensitive wallet events. These are sent server-side and apply regardless of SDK. They are on by default; toggle them under security.notifications:
dyn settings set security.notifications.waasPrivateKeyExport true    # private key export
dyn settings set security.notifications.waasSignedTransaction true   # transaction signed

Apply across environments

To roll the same wallet configuration from sandbox to live, capture it as code and apply it rather than re-running each set:
dyn export --output-file env.yaml
dyn apply -f env.yaml --dry-run
See Config as code for the full export/apply workflow and its safety gates.
Changes apply immediately to the active environment. On live, that affects real users’ wallets. Confirm with dyn status, and test on sandbox first.