This is an enterprise-only feature. Please contact us to enable.
Connect-only. Connections never requests a signature or a transaction — it reads only the user’s public wallet address and hands it back to you. This proves the user can present an address, not that they control it. For proof of ownership, add your own sign-in step after the connection.
When to use Connections
Reach for Connections when you want a wallet address without adding the Dynamic SDK to every client:- You want a hosted picker. Link out to one page instead of building and maintaining a wallet list per platform.
- You can’t add a third-party SDK. On iOS and Android, a headless mode runs the wallet list and connection logic behind a hidden web view, so your app links no wallet SDK at all.
How it works
Every platform follows the same contract:1
Open the connect page
Open Connections with a
redirect_uri you control, and an optional nonce.2
The user connects
The user searches Dynamic’s catalog of 600+ EVM and Solana wallets, or pastes an address manually.
3
Read the result on your redirect
Connections redirects back to your
redirect_uri with the result appended as query parameters.Web
Link to the hosted page and read the result on your redirect.
iOS
Present it in
ASWebAuthenticationSession, or go headless.Android
Present it in a Chrome Custom Tab, or go headless.
React Native
Present it with
expo-web-browser, for Expo or bare React Native.Flutter
Present it with
flutter_web_auth_2, or go headless.Securing the redirect
redirect_uri is caller-supplied, so an http(s) target is an open-redirect surface. Lock it down before exposing Connections to untrusted callers.
.env
- Exact hostname match.
example.comdoes not matchsub.example.com. Port is ignored. - Rebuild to apply. Vite inlines
VITE_*variables at build time, so changing this needs a rebuild and redeploy — setting it in a hosting dashboard alone does nothing. - Custom app schemes are never host-filtered. Their “host” is a callback name interpreted by your native app, not a network address.
javascript:, data:, intent:, android-app:, market:, content:, chrome:, ftp:, and similar. A refused value falls back to VITE_REDIRECT_BASE_URL and logs a warning — so if your callback never fires, check the browser console first.
Deploying Connections
Connections ships as an open-source app,dynamic-labs-oss/iframe-fb. To run your own instance:
1
Set your environment ID
Copy
.env.example to .env and set your Dynamic environment ID in VITE_DYNAMIC_ENVIRONMENT_ID.2
Enable chains and origins
In the Dynamic dashboard, enable the EVM and Solana chains, and add your domain to Allowed Origins.
3
Serve over HTTPS
Connections mints WalletConnect URIs via WebCrypto, which needs a secure context. Serve the page over HTTPS in production.