Skip to main content
External wallets — also called externally owned accounts (EOAs) — are wallets users bring to your app, such as MetaMask, Phantom, or Rainbow. They are different from embedded wallets, which Dynamic creates and manages for the user. When external wallet login is enabled, users can sign up or log in by connecting an existing wallet through the Dynamic auth UI. The SDK handles the wallet app handoff and returns the connected wallet.

Prerequisites

  • Dynamic Swift SDK initialized (see Quickstart)
  • ClientProps configured with appOrigin and redirectUrl
  • Chains enabled in your Dynamic dashboard
  • Wallet login enabled under External Wallets in the dashboard

Dashboard configuration

  1. Go to Chains & Networks in the Dynamic dashboard and enable the chains you want to support (e.g. EVM, Solana).
  2. Go to Log in & User Profile in the Dynamic dashboard and toggle on Wallet Log in under External Wallets.
  3. Go to Security → Whitelist Mobile Deeplink and add the same URL you use for redirectUrl (e.g. myapp://). This is required for the wallet app to return to your app after approval.
appOrigin is required for external wallet connections. Use the HTTPS origin that represents your app (for example, https://your-app.com).

SDK configuration

Make sure ClientProps includes appOrigin and redirectUrl when you initialize the SDK:
External wallet connections open the wallet app using deep links. The wallet app then redirects back to your app using the redirectUrl you configured. Add your URL scheme to Info.plist:

Show the auth UI

The simplest way to let users connect an external wallet is to show the Dynamic auth UI. The SDK presents available wallet options, opens the selected wallet app, and handles the redirect automatically.

Listen for connected wallets

After a wallet is connected, it appears in the user’s wallet list. Use userWalletsChanges to react to new or updated wallets:

Filter connected wallets

You can separate EVM and Solana wallets by chain:

Set the primary wallet

If a user connects multiple wallets, you can set one as the primary wallet:

Troubleshooting

  • Wallet app does not open: Verify redirectUrl matches the URL scheme in Info.plist, and that the deep link is whitelisted in the dashboard.
  • Wallet does not appear after connection: Ensure you are listening to userWalletsChanges.
  • Connection fails after redirect: Confirm appOrigin is set and matches the origin registered in the dashboard.

Next steps

Last modified on July 31, 2026