# JavaScript SDK > Vanilla JS / framework-agnostic integration. - [JavaScript SDK Overview](https://www.dynamic.xyz/docs/javascript/overview.md) — A headless, framework-agnostic SDK for authentication, wallets, and signing. You build the UI — Dynamic handles everything else. - [User and Session Management](https://www.dynamic.xyz/docs/javascript/user-session-management.md) ### Authentication Methods - [Adding Captcha Protection](https://www.dynamic.xyz/docs/javascript/authentication-methods/captcha.md) - [Cookie-based authentication](https://www.dynamic.xyz/docs/javascript/authentication-methods/cookie-authentication.md) — Configure the JavaScript SDK to use cookie-based authentication with a custom API base URL. - [Device Registration](https://www.dynamic.xyz/docs/javascript/authentication-methods/device-registration.md) — Verify new devices and manage trusted devices for your users. - [Authenticate with Email](https://www.dynamic.xyz/docs/javascript/authentication-methods/email.md) - [Authenticate with an external JWT](https://www.dynamic.xyz/docs/javascript/authentication-methods/external-jwt.md) — Sign users into Dynamic with a JWT issued by your own authentication provider. - [Authenticate with External Wallets](https://www.dynamic.xyz/docs/javascript/authentication-methods/external-wallets.md) - [Authentication screens](https://www.dynamic.xyz/docs/javascript/authentication-methods/headless-authentication.md) - [Check Recovery Codes Acknowledgment](https://www.dynamic.xyz/docs/javascript/authentication-methods/is-pending-recovery-codes-acknowledgment.md) - [Check MFA Authentication Status](https://www.dynamic.xyz/docs/javascript/authentication-methods/is-user-missing-mfa-auth.md) - [Check User Scopes](https://www.dynamic.xyz/docs/javascript/authentication-methods/is-user-onboarding-complete.md) - [MFA Enrollment](https://www.dynamic.xyz/docs/javascript/authentication-methods/mfa/account-based.md) - [Action-Based MFA](https://www.dynamic.xyz/docs/javascript/authentication-methods/mfa/action-based.md) - [MFA Device Management](https://www.dynamic.xyz/docs/javascript/authentication-methods/mfa/device-management.md) — How to delete user MFA devices and perform admin resets. - [MFA Overview](https://www.dynamic.xyz/docs/javascript/authentication-methods/mfa/overview.md) - [Passkeys](https://www.dynamic.xyz/docs/javascript/authentication-methods/mfa/passkey.md) - [Recovery Codes](https://www.dynamic.xyz/docs/javascript/authentication-methods/mfa/recovery-codes.md) - [Session-Based MFA](https://www.dynamic.xyz/docs/javascript/authentication-methods/mfa/session-mfa.md) - [Authenticator Apps](https://www.dynamic.xyz/docs/javascript/authentication-methods/mfa/totp.md) - [Authenticate with Passkey](https://www.dynamic.xyz/docs/javascript/authentication-methods/passkey.md) - [Refresh Authentication](https://www.dynamic.xyz/docs/javascript/authentication-methods/refresh-auth.md) - [Refresh User Data](https://www.dynamic.xyz/docs/javascript/authentication-methods/refresh-user.md) - [Authenticate with SMS](https://www.dynamic.xyz/docs/javascript/authentication-methods/sms.md) - [Social Account Linking](https://www.dynamic.xyz/docs/javascript/authentication-methods/social-linking.md) — Link and unlink social accounts (Google, Apple, Twitter, etc.) on an authenticated user. - [Authenticate with Social](https://www.dynamic.xyz/docs/javascript/authentication-methods/social.md) - [External Auth Step-Up](https://www.dynamic.xyz/docs/javascript/authentication-methods/step-up-auth/external-auth.md) — Request elevated access tokens using your own backend's signed JWTs — no user interaction required. - [Step-Up Authentication](https://www.dynamic.xyz/docs/javascript/authentication-methods/step-up-auth/overview.md) — Headless step-up authentication using the JavaScript SDK — check, verify, and the SDK handles the rest. ### Building UI - [Account conflict resolution](https://www.dynamic.xyz/docs/javascript/building-ui/account-conflict-resolution.md) — Handle the case where a user tries to add a credential — an email, phone, social account, or wallet — that already belongs to a different account. - [Account merging](https://www.dynamic.xyz/docs/javascript/building-ui/account-merging.md) — Complete an account merge when a user adds a credential that belongs to a mergeable second account — including resolving field-level conflicts. - [Handling blocked wallets](https://www.dynamic.xyz/docs/javascript/building-ui/blocked-wallet-screening.md) — Detect a wallet rejected by compliance screening and show a clear access-denied experience. - [Building for Flow (deposits & payments)](https://www.dynamic.xyz/docs/javascript/building-ui/building-for-flow.md) — Build a deposit/payment UI with Fireblocks Flow — load a flow, attach a source, quote, sign, and track it to settlement. - [Connected wallets management](https://www.dynamic.xyz/docs/javascript/building-ui/connected-wallets-management.md) — Show a user's connected wallets, let them choose which one to act on, and remove wallets they no longer want. - [Connecting external wallets](https://www.dynamic.xyz/docs/javascript/building-ui/connecting-external-wallets.md) — Let users connect a browser-extension or mobile wallet — list the available providers, connect, and verify ownership. - [Device registration](https://www.dynamic.xyz/docs/javascript/building-ui/device-registration.md) — Approve a new device when it's required at sign-in, complete the approval redirect, and manage a user's registered devices. - [Email & SMS OTP sign-in](https://www.dynamic.xyz/docs/javascript/building-ui/email-sms-otp-sign-in.md) — Build a one-time-passcode sign-in UI: send a code to an email or phone, then verify it to authenticate the user. - [Embedded wallet delegated access](https://www.dynamic.xyz/docs/javascript/building-ui/embedded-wallet-delegated-access.md) — Let your app sign for a user's embedded wallet without prompting each time — and let users revoke it. - [Embedded wallet password & security](https://www.dynamic.xyz/docs/javascript/building-ui/embedded-wallet-security.md) — Protect embedded wallets with a user password — set it during setup, unlock on a new device, and let users change it. - [Building an exchange transfer UI](https://www.dynamic.xyz/docs/javascript/building-ui/exchange-transfers.md) — Let users withdraw crypto from a connected Kraken or Coinbase account to an external wallet, including Coinbase's two-step verification and Travel Rule steps. - [Funding flows](https://www.dynamic.xyz/docs/javascript/building-ui/funding-flows.md) — Let users buy crypto with fiat by generating a hosted on-ramp URL for their wallet. - [Upgrading legacy embedded wallets to Dynamic WaaS](https://www.dynamic.xyz/docs/javascript/building-ui/legacy-wallet-upgrade.md) — Detect users whose embedded wallets need upgrading and move them onto Dynamic WaaS with the ready-made upgrade app — by redirect, embed, or popup — using the legacy-embedded-wallet-upgrade package. - [Embed the upgrade app (iframe)](https://www.dynamic.xyz/docs/javascript/building-ui/legacy-wallet-upgrade/embed.md) — Render the Dynamic upgrade app inline in an iframe within your own sheet or modal, reacting to its origin-checked completion message. - [Going lower-level (build the URL yourself)](https://www.dynamic.xyz/docs/javascript/building-ui/legacy-wallet-upgrade/lower-level.md) — Build the upgrade app URL and own the mounting and completion handling yourself with buildUpgradeUrl and subscribeToUpgradeCompletion — the escape hatch behind the redirect, embed, and popup routes. - [Upgrade by popup](https://www.dynamic.xyz/docs/javascript/building-ui/legacy-wallet-upgrade/popup.md) — Open the Dynamic upgrade app in a popup window (web) or the system auth session (React Native) without navigating away, using openUpgradePopup. - [Upgrade by redirect](https://www.dynamic.xyz/docs/javascript/building-ui/legacy-wallet-upgrade/redirect.md) — Navigate the user to the Dynamic upgrade app and read the outcome when they return, using detectUpgradeRedirect and completeUpgradeRedirect. - [MFA enrollment & management](https://www.dynamic.xyz/docs/javascript/building-ui/mfa-enrollment-management.md) — Enroll an authenticator app (TOTP), verify it, show recovery codes, and let users manage their MFA devices. - [Network switching & validation](https://www.dynamic.xyz/docs/javascript/building-ui/network-switching.md) — Show the active network, let users switch, and make sure a wallet is on the right network before you transact. - [Building UI Overview](https://www.dynamic.xyz/docs/javascript/building-ui/overview.md) — Guides for building complete, real-world UI flows with the headless JavaScript SDK — you own the interface, the SDK does the work. - [Passkey sign-in & registration](https://www.dynamic.xyz/docs/javascript/building-ui/passkey-sign-in-registration.md) — Let returning users sign in with Face ID, a fingerprint, or a security key, and manage their registered passkeys. - [Post-login user setup](https://www.dynamic.xyz/docs/javascript/building-ui/post-auth-user-setup.md) — Get a freshly signed-in user ready for your app — collect required fields, enroll MFA, register their device, and create an embedded wallet. - [Social sign-in & OAuth redirect handling](https://www.dynamic.xyz/docs/javascript/building-ui/social-oauth-redirect-handling.md) — Start a social login and complete the OAuth redirect so users land back in your app authenticated. - [Step-up authentication](https://www.dynamic.xyz/docs/javascript/building-ui/step-up-authentication.md) — Require fresh authentication before a sensitive action — signing, exporting a key, or updating a profile — scoped to what the action needs. - [Building a swap UI](https://www.dynamic.xyz/docs/javascript/building-ui/swap-ui.md) — Quote a token swap, show the estimate, execute it from the user's wallet, and track it to completion. - [Token balances & display](https://www.dynamic.xyz/docs/javascript/building-ui/token-balances-display.md) — Show a wallet's native balance and its token holdings — with prices, market values, and spam filtering. - [Transaction confirmation & simulation](https://www.dynamic.xyz/docs/javascript/building-ui/transaction-confirmation.md) — Simulate a transaction, show the user what it will do (assets, fees, security), send it, and wait for confirmation. - [User profile & settings](https://www.dynamic.xyz/docs/javascript/building-ui/user-profile-settings.md) — Display the signed-in user, edit profile fields, verify email or phone changes, and delete the account. - [Wallet backup & recovery](https://www.dynamic.xyz/docs/javascript/building-ui/wallet-backup-recovery.md) — Show backup status, back an embedded wallet up to Google Drive, and export the private key as a last-resort escape hatch. ### External Auth - [Using your own authentication provider](https://www.dynamic.xyz/docs/javascript/external-auth/third-party-auth-overview.md) - [Configuring your authentication provider](https://www.dynamic.xyz/docs/javascript/external-auth/third-party-auth-setup.md) - [Integrating your authentication provider with Dynamic](https://www.dynamic.xyz/docs/javascript/external-auth/third-party-auth-usage.md) ### Funding - [addCoinbaseOnrampOrderEventListener](https://www.dynamic.xyz/docs/javascript/funding/add-coinbase-onramp-order-event-listener.md) - [createCoinbaseExchangeTransfer](https://www.dynamic.xyz/docs/javascript/funding/create-coinbase-exchange-transfer.md) - [createCoinbaseOnrampOrder](https://www.dynamic.xyz/docs/javascript/funding/create-coinbase-onramp-order.md) - [createCryptoDotComPayment](https://www.dynamic.xyz/docs/javascript/funding/create-crypto-dot-com-payment.md) - [createKrakenExchangeTransfer](https://www.dynamic.xyz/docs/javascript/funding/create-kraken-exchange-transfer.md) - [getCoinbaseAccounts](https://www.dynamic.xyz/docs/javascript/funding/get-coinbase-accounts.md) - [getCoinbaseBuyUrl](https://www.dynamic.xyz/docs/javascript/funding/get-coinbase-buy-url.md) - [getKrakenAccounts](https://www.dynamic.xyz/docs/javascript/funding/get-kraken-accounts.md) - [getKrakenWhitelistedAddresses](https://www.dynamic.xyz/docs/javascript/funding/get-kraken-whitelisted-addresses.md) - [getMissingVerificationForCoinbaseOnrampOrder](https://www.dynamic.xyz/docs/javascript/funding/get-missing-verification-for-coinbase-onramp-order.md) - [getMoonPayCurrencies](https://www.dynamic.xyz/docs/javascript/funding/get-moonpay-currencies.md) - [getMoonPayUrl](https://www.dynamic.xyz/docs/javascript/funding/get-moonpay-url.md) - [Kraken Integration](https://www.dynamic.xyz/docs/javascript/funding/kraken-integration.md) — Transfer crypto from Kraken exchange accounts to external wallets ### Migrating From React - [Account conflict resolution](https://www.dynamic.xyz/docs/javascript/migrating-from-react/account-conflict-resolution.md) — The React SDK rendered the account-exists and merge screens for you. In the JavaScript SDK you catch the conflict errors and build the resolution UI yourself. - [Basic setup](https://www.dynamic.xyz/docs/javascript/migrating-from-react/basic-setup.md) — Migrate provider setup, context access, and the event model from the React SDK to the JavaScript SDK. - [Cookies](https://www.dynamic.xyz/docs/javascript/migrating-from-react/cookies.md) — Cookie-based sessions work the same way in the JavaScript SDK, but you enable them by passing apiBaseUrl in createDynamicClient()'s coreConfig instead of a provider prop, and you read the session from the user rather than a JWT. - [Embedded wallets: backup & recovery](https://www.dynamic.xyz/docs/javascript/migrating-from-react/embedded-wallets-backup-recovery.md) — The React SDK drove keyshare backup and private-key export from its widget screens. In the JavaScript SDK you run the readiness check, the Google Drive backup, and the secure export yourself. - [Embedded wallets: delegated access](https://www.dynamic.xyz/docs/javascript/migrating-from-react/embedded-wallets-delegated-access.md) — The React SDK managed delegated signing through its hooks and widget. In the JavaScript SDK you check, grant, and revoke delegated access with explicit functions and hooks. - [Embedded wallets: password & security](https://www.dynamic.xyz/docs/javascript/migrating-from-react/embedded-wallets-password-security.md) — The React SDK popped a password modal for you on the first wallet action. In the JavaScript SDK you check whether a password is needed and run the set, unlock, and change flows yourself. - [Embedded wallets: setup & creation](https://www.dynamic.xyz/docs/javascript/migrating-from-react/embedded-wallets-setup.md) — The React SDK auto-created embedded wallets during its login flow. In the JavaScript SDK you decide when to create them and for which chains — the full build lives in the Building UI post-login guide. - [Embedded wallets: transactions & session keys](https://www.dynamic.xyz/docs/javascript/migrating-from-react/embedded-wallets-transactions.md) — The React SDK signed and sent from embedded wallets through the widget, and had dedicated session-key approval screens. In the JavaScript SDK signing uses the same functions as any wallet, and scoped session keys move to delegated access. - [Funding](https://www.dynamic.xyz/docs/javascript/migrating-from-react/funding.md) — The React SDK opened funding, on-ramp, and exchange screens from hooks like useFundWithWallet and useOnramp. In the JavaScript SDK each funding path is a function (and hook), and you build the menu that routes between them. - [Gas sponsorship & smart wallets](https://www.dynamic.xyz/docs/javascript/migrating-from-react/gas-sponsorship-smart-wallets.md) — The React SDK exposed smart accounts through useSmartWallets and configured gas sponsorship behind the widget. In the JavaScript SDK smart wallets come from the ZeroDev extension and gas sponsorship is a set of EVM functions you call. - [Global wallets](https://www.dynamic.xyz/docs/javascript/migrating-from-react/global-wallets.md) — Global wallets — embedded wallets that connect across multiple apps — are a React SDK feature. The JavaScript SDK does not support them yet. - [Integrating chains](https://www.dynamic.xyz/docs/javascript/migrating-from-react/integrating-chains.md) — The React SDK enabled chains by passing a walletConnectors array to the provider. In the JavaScript SDK you enable each chain by calling its addExtension() once when you set up the client. - [Multi-factor authentication](https://www.dynamic.xyz/docs/javascript/migrating-from-react/mfa.md) — The React SDK exposed MFA through a single useMfa hook and drove enrollment screens in the widget. In the JavaScript SDK each MFA operation is its own function and hook. - [Network management](https://www.dynamic.xyz/docs/javascript/migrating-from-react/network-management.md) — The React SDK rendered the network picker and the 'switch in your wallet' modal for you. In the JavaScript SDK you read the network data and drive switching yourself. - [Non-wallet authentication](https://www.dynamic.xyz/docs/javascript/migrating-from-react/non-wallet-authentication.md) — Migrate email, SMS, social, passkey, and external-JWT sign-in from the React SDK to the JavaScript SDK. - [Migrating from React to the JavaScript SDK](https://www.dynamic.xyz/docs/javascript/migrating-from-react/overview.md) — What changes when you move from the React SDK (@dynamic-labs/sdk-react-core) to the headless JavaScript SDK, and where to find the implementation for each flow. - [Post-login user setup](https://www.dynamic.xyz/docs/javascript/migrating-from-react/post-login-user-setup.md) — SyncAuthFlow is gone — migrate the automatic post-login orchestration (onboarding, MFA, device registration, wallet creation) to an explicit chain you own. - [Step-up authentication](https://www.dynamic.xyz/docs/javascript/migrating-from-react/step-up-auth.md) — The React SDK could pop step-up UI inside the widget. In the JavaScript SDK you run the same scope-based check yourself and pass requestedScopes on the verify call. - [Transactions & balance](https://www.dynamic.xyz/docs/javascript/migrating-from-react/transactions-and-balance.md) — The React SDK gave you balance hooks and a built-in transaction confirmation modal. In the JavaScript SDK you read balances and drive the review-and-send flow yourself. - [Upgrading embedded wallets](https://www.dynamic.xyz/docs/javascript/migrating-from-react/upgrading-embedded-wallets.md) — The React SDK ran the wallet upgrade inside its widget. In the JavaScript SDK you detect who needs upgrading and route them to the ready-made upgrade app with the legacy-embedded-wallet-upgrade package. - [Users](https://www.dynamic.xyz/docs/javascript/migrating-from-react/users.md) — The React SDK exposed the user through useDynamicContext() and rendered the profile, settings, and delete screens inside DynamicUserProfile. In the JavaScript SDK you read the user with useUser() and build those screens yourself. - [Using connected wallets](https://www.dynamic.xyz/docs/javascript/migrating-from-react/using-connected-wallets.md) — The React SDK managed the wallet list, wallet selection, and connection prompts for you. In the JavaScript SDK you read the wallet accounts with functions and build the management UI yourself. - [Wagmi integration](https://www.dynamic.xyz/docs/javascript/migrating-from-react/wagmi.md) — The React SDK offered a wagmi connector. A wagmi integration for the JavaScript SDK is coming; until then, use the EVM extension directly. - [Wallet authentication](https://www.dynamic.xyz/docs/javascript/migrating-from-react/wallet-authentication.md) — Migrate external wallet discovery, connection, and verification from the React SDK to the JavaScript SDK. ### React Native - [Setup on Bare React Native](https://www.dynamic.xyz/docs/javascript/react-native/bare-react-native.md) — Install and configure the JavaScript SDK in a bare React Native app. - [Setup on Expo](https://www.dynamic.xyz/docs/javascript/react-native/expo.md) — Install and configure the JavaScript SDK in an Expo React Native app. - [React Native Passkeys](https://www.dynamic.xyz/docs/javascript/react-native/passkeys.md) — Configure native passkey support for the JavaScript SDK on Expo and bare React Native — associated domains, asset links, and client setup. - [React Native Setup](https://www.dynamic.xyz/docs/javascript/react-native/setup.md) — Run the headless JavaScript SDK in a React Native app — Expo or bare React Native. ### Reference - [Adding Extensions](https://www.dynamic.xyz/docs/javascript/reference/adding-extensions.md) — Add chain wallet and addon support to your Dynamic client with extensions - [Adding Aptos Extensions](https://www.dynamic.xyz/docs/javascript/reference/aptos/adding-aptos-extension.md) — Add Aptos blockchain support to your Dynamic client - [Checking Aptos Wallet Account Type](https://www.dynamic.xyz/docs/javascript/reference/aptos/checking-aptos-wallet-account-type.md) - [getAptosClient](https://www.dynamic.xyz/docs/javascript/reference/aptos/get-aptos-client.md) - [signAndSubmitTransaction (Aptos)](https://www.dynamic.xyz/docs/javascript/reference/aptos/sign-and-submit-transaction.md) - [signTransaction (Aptos)](https://www.dynamic.xyz/docs/javascript/reference/aptos/sign-transaction.md) - [Adding Bitcoin Extensions](https://www.dynamic.xyz/docs/javascript/reference/bitcoin/adding-bitcoin-extension.md) — Add Bitcoin blockchain support to your Dynamic client - [Checking Bitcoin Wallet Account Type](https://www.dynamic.xyz/docs/javascript/reference/bitcoin/checking-bitcoin-wallet-account-type.md) - [sendBitcoin](https://www.dynamic.xyz/docs/javascript/reference/bitcoin/send-bitcoin.md) - [sendRawTransaction](https://www.dynamic.xyz/docs/javascript/reference/bitcoin/send-raw-transaction.md) - [signMessageWithCustomOptions](https://www.dynamic.xyz/docs/javascript/reference/bitcoin/sign-message-with-custom-options.md) - [signPsbt](https://www.dynamic.xyz/docs/javascript/reference/bitcoin/sign-psbt.md) - [signPsbts](https://www.dynamic.xyz/docs/javascript/reference/bitcoin/sign-psbts.md) - [Add Wallets to a Business Account](https://www.dynamic.xyz/docs/javascript/reference/business-accounts/add-wallets.md) — Create a fresh business-account wallet, or bring an existing embedded wallet under the account. - [Create a Business Account](https://www.dynamic.xyz/docs/javascript/reference/business-accounts/create-a-business-account.md) — Create a business account, then list and read back its details. - [Manage Signers](https://www.dynamic.xyz/docs/javascript/reference/business-accounts/manage-signers.md) — Grant and revoke the ability to sign with a business-account wallet. - [Members & Roles](https://www.dynamic.xyz/docs/javascript/reference/business-accounts/members-and-roles.md) — Administer who can manage a business account, and transfer ownership. - [Business Accounts](https://www.dynamic.xyz/docs/javascript/reference/business-accounts/overview.md) — Share embedded wallets across a team, with separate control over who manages the account and who can sign. - [Signing with a Business-Account Wallet](https://www.dynamic.xyz/docs/javascript/reference/business-accounts/signing.md) — Sign transactions and messages with a wallet owned by a business account. - [Step-Up Authentication](https://www.dynamic.xyz/docs/javascript/reference/business-accounts/step-up-auth.md) — Obtain the elevated token required before calling sensitive business account operations. - [attachFlowSource](https://www.dynamic.xyz/docs/javascript/reference/client/attach-flow-source.md) - [broadcastFlow](https://www.dynamic.xyz/docs/javascript/reference/client/broadcast-flow.md) - [canConnectWithHardwareWallet](https://www.dynamic.xyz/docs/javascript/reference/client/can-connect-with-hardware-wallet.md) — Check if a wallet provider supports a given hardware wallet vendor - [cancelFlow](https://www.dynamic.xyz/docs/javascript/reference/client/cancel-flow.md) - [Creating a Dynamic Client](https://www.dynamic.xyz/docs/javascript/reference/client/create-dynamic-client.md) — The first step in using the JavaScript SDK is to create a Dynamic Client - [Delete User Account](https://www.dynamic.xyz/docs/javascript/reference/client/delete-user.md) — Permanently delete the current user's account. - [Distinguishing Login Methods](https://www.dynamic.xyz/docs/javascript/reference/client/distinguishing-login-methods.md) — Determine how the user authenticated by inspecting their verified credentials. - [Events Catalog](https://www.dynamic.xyz/docs/javascript/reference/client/events-catalog.md) — Full reference of events emitted by the Dynamic JavaScript client, including payload shapes. - [executeSwapTransaction](https://www.dynamic.xyz/docs/javascript/reference/client/execute-swap-transaction.md) - [getFlowQuote](https://www.dynamic.xyz/docs/javascript/reference/client/get-flow-quote.md) - [getFlow](https://www.dynamic.xyz/docs/javascript/reference/client/get-flow.md) - [getSwapQuote](https://www.dynamic.xyz/docs/javascript/reference/client/get-swap-quote.md) - [getSwapStatus](https://www.dynamic.xyz/docs/javascript/reference/client/get-swap-status.md) - [Initializing the Dynamic Client](https://www.dynamic.xyz/docs/javascript/reference/client/initialize-dynamic-client.md) - [isHardwareWalletAccount](https://www.dynamic.xyz/docs/javascript/reference/client/is-hardware-wallet-account.md) — Check if a wallet account was connected via a hardware wallet - [JWT Scopes & Access Lists](https://www.dynamic.xyz/docs/javascript/reference/client/jwt-scopes.md) — Read access list / gate scopes from the user's JWT to gate parts of your app. - [offEvent](https://www.dynamic.xyz/docs/javascript/reference/client/off-event.md) - [onEvent](https://www.dynamic.xyz/docs/javascript/reference/client/on-event.md) - [prepareFlowSigning](https://www.dynamic.xyz/docs/javascript/reference/client/prepare-flow-signing.md) - [submitFlowTransaction](https://www.dynamic.xyz/docs/javascript/reference/client/submit-flow-transaction.md) - [Creating Extensions](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions.md) — Build a custom extension that adds wallet providers or other runtime services to the Dynamic JavaScript SDK. - [Custom Functions](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/custom-functions.md) — Write standalone functions that use DynamicClient services and follow the Dynamic JavaScript SDK conventions. - [Publish an Extension](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/publish.md) — Package and publish a Dynamic JavaScript SDK extension so other developers can install and use it. - [Open deep links](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/services/open-deep-links.md) — Open cross-platform deep links from a Dynamic JavaScript SDK extension. - [Storage](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/services/storage.md) — Use regular and secure Storage from DynamicCore in your JavaScript SDK extension. - [Wallet provider priority](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/services/wallet-provider-priority.md) — Understand WalletProviderPriority levels and registry replacement in the Dynamic JavaScript SDK. - [Add swap capabilities](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/add-swap-capabilities.md) — Implement executeSwapTransaction on a custom WalletProvider to enable Fireblocks Flow and Swaps. - [Build a payment deep link](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-payment-deep-link.md) — Build a custom extension that turns a Fireblocks Flow deposit into a deep link or QR code for a mobile wallet app. - [Build a WalletProvider](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/build-wallet-provider.md) — Implement and register a custom WalletProvider with the Dynamic JavaScript SDK. - [Wallet Provider](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/overview.md) — Integrate a custom wallet with the Dynamic JavaScript SDK through a WalletProvider. - [Supported wallet standards](https://www.dynamic.xyz/docs/javascript/reference/creating-extensions/wallet-provider/supported-standards.md) — Wallet standards the Dynamic JavaScript SDK already supports. - [Adding EVM Extensions](https://www.dynamic.xyz/docs/javascript/reference/evm/adding-evm-extensions.md) — Add one or more EVM extensions to support embedded wallets and external wallets on EVM chains - [calculateEvmTransactionFee](https://www.dynamic.xyz/docs/javascript/reference/evm/calculate-evm-transaction-fee.md) — Estimate the gas fee for an EVM transaction - [Checking EVM Wallet Account Type](https://www.dynamic.xyz/docs/javascript/reference/evm/checking-evm-wallet-account-type.md) - [EIP-5792 (Batched Calls)](https://www.dynamic.xyz/docs/javascript/reference/evm/eip-5792.md) — Use wallet_getCapabilities and wallet_sendCalls to batch and sponsor EVM transactions. - [EVM Gas Sponsorship](https://www.dynamic.xyz/docs/javascript/reference/evm/evm-gas-sponsorship.md) — Sponsor EVM transaction fees for your users with Dynamic's built-in gas sponsorship feature. - [Getting a Viem PublicClient](https://www.dynamic.xyz/docs/javascript/reference/evm/getting-viem-public-client.md) - [Getting a Viem WalletClient](https://www.dynamic.xyz/docs/javascript/reference/evm/getting-viem-wallet-client.md) - [Managing EIP-7702 delegation](https://www.dynamic.xyz/docs/javascript/reference/evm/managing-7702-delegation.md) — Check, sign, and activate the one-time EIP-7702 delegation that powers gas-sponsored EVM transactions. - [sendSponsoredTransaction](https://www.dynamic.xyz/docs/javascript/reference/evm/send-sponsored-transaction.md) — Send a gas-sponsored EVM transaction and wait for it to land on-chain. - [Sign a Transaction](https://www.dynamic.xyz/docs/javascript/reference/evm/sign-transaction.md) — Sign an EVM transaction without broadcasting it to the network. - [Sign Typed Data (EIP-712)](https://www.dynamic.xyz/docs/javascript/reference/evm/sign-typed-data.md) — Sign EIP-712 typed data with an EVM wallet account using a Viem WalletClient. - [simulateEvmTransaction](https://www.dynamic.xyz/docs/javascript/reference/evm/simulate-evm-transaction.md) — Preview an EVM transaction's effects before sending it - [Splitting sign & send](https://www.dynamic.xyz/docs/javascript/reference/evm/splitting-sign-and-send.md) — Pre-sign a sponsored intent, relay it, and poll relay status for custom transaction flows. - [Validate Signatures](https://www.dynamic.xyz/docs/javascript/reference/evm/validate-signatures.md) — Verify EIP-191, EIP-712, ERC-1271, and EIP-6492 signatures produced by Dynamic wallets. - [Flow: Getting Started](https://www.dynamic.xyz/docs/javascript/reference/flow-getting-started.md) — Set up the Dynamic client for Fireblocks Flow — enable chains, add extensions, and create your first flow. - [Flow: Building a Payment UI](https://www.dynamic.xyz/docs/javascript/reference/flow-ui-guide.md) — Build a multi-chain payment widget with Fireblocks Flow — wallet connection, token selection, quoting, signing, and status tracking. - [Network Transformers](https://www.dynamic.xyz/docs/javascript/reference/networks/network-transformers.md) — Customize the network list before it's used throughout the SDK - [JavaScript Quickstart](https://www.dynamic.xyz/docs/javascript/reference/quickstart.md) - [React Hooks Catalog](https://www.dynamic.xyz/docs/javascript/reference/react-hooks-catalog.md) — Complete reference for all hooks exported by @dynamic-labs-sdk/react-hooks, organized by category. - [How React Hooks Work](https://www.dynamic.xyz/docs/javascript/reference/react-hooks-guide.md) — The rules behind @dynamic-labs-sdk/react-hooks — how client functions map to hooks, which functions get one, and the three shapes a hook can take. - [React Hooks](https://www.dynamic.xyz/docs/javascript/reference/react-hooks.md) — Reactive bindings for the Dynamic JavaScript SDK — useUser, useGetWalletAccounts, useOnEvent, and more. - [React Native Quickstart (JS SDK)](https://www.dynamic.xyz/docs/javascript/reference/react-native-quickstart.md) - [React Quickstart (JS SDK)](https://www.dynamic.xyz/docs/javascript/reference/react-quickstart.md) - [Adding Solana Extensions](https://www.dynamic.xyz/docs/javascript/reference/solana/adding-solana-extensions.md) — To interact with the Solana wallets, you need to add the appropriate extensions - [calculateSolanaTransactionFee](https://www.dynamic.xyz/docs/javascript/reference/solana/calculate-solana-transaction-fee.md) — Estimate the fee for a Solana transaction - [Checking Solana Wallet Account Type](https://www.dynamic.xyz/docs/javascript/reference/solana/checking-solana-wallet-account-type.md) - [Solana Connection](https://www.dynamic.xyz/docs/javascript/reference/solana/getting-solana-connection.md) - [isSolanaGasSponsorshipEnabled](https://www.dynamic.xyz/docs/javascript/reference/solana/is-solana-gas-sponsorship-enabled.md) — Check if SVM gas sponsorship is enabled for your project. - [addPhantomRedirectSolanaExtension](https://www.dynamic.xyz/docs/javascript/reference/solana/phantom-redirect-extension.md) — Enable Phantom wallet support via deep link redirect on mobile - [Signing and Sending Transactions with Solana](https://www.dynamic.xyz/docs/javascript/reference/solana/signing-sending-transactions.md) - [simulateSolanaTransaction](https://www.dynamic.xyz/docs/javascript/reference/solana/simulate-solana-transaction.md) — Preview a Solana transaction's effects before sending it - [SVM Gas Sponsorship](https://www.dynamic.xyz/docs/javascript/reference/solana/svm-gas-sponsorship.md) — Sponsor Solana transaction fees for your users with Dynamic's built-in gas sponsorship feature. - [Adding Starknet Extension](https://www.dynamic.xyz/docs/javascript/reference/starknet/adding-starknet-extension.md) — Add Starknet blockchain support to your Dynamic client - [Checking Starknet Wallet Account Type](https://www.dynamic.xyz/docs/javascript/reference/starknet/checking-starknet-wallet-account-type.md) - [getStarknetAccount](https://www.dynamic.xyz/docs/javascript/reference/starknet/get-starknet-account.md) - [Adding Stellar Extension](https://www.dynamic.xyz/docs/javascript/reference/stellar/adding-stellar-extension.md) — Add Stellar blockchain support to your Dynamic client - [Checking Stellar Wallet Account Type](https://www.dynamic.xyz/docs/javascript/reference/stellar/checking-stellar-wallet-account-type.md) - [signTransaction (Stellar)](https://www.dynamic.xyz/docs/javascript/reference/stellar/sign-transaction.md) - [Adding Sui Extensions](https://www.dynamic.xyz/docs/javascript/reference/sui/adding-sui-extension.md) — Add Sui blockchain support to your Dynamic client - [Checking Sui Wallet Account Type](https://www.dynamic.xyz/docs/javascript/reference/sui/checking-sui-wallet-account-type.md) - [getSuiClient](https://www.dynamic.xyz/docs/javascript/reference/sui/get-sui-client.md) - [signAndExecuteTransactionBlock (Sui)](https://www.dynamic.xyz/docs/javascript/reference/sui/sign-and-execute-transaction-block.md) - [signAndExecuteTransaction (Sui)](https://www.dynamic.xyz/docs/javascript/reference/sui/sign-and-execute-transaction.md) - [signTransactionBlock (Sui)](https://www.dynamic.xyz/docs/javascript/reference/sui/sign-transaction-block.md) - [signTransaction (Sui)](https://www.dynamic.xyz/docs/javascript/reference/sui/sign-transaction.md) - [Algorand](https://www.dynamic.xyz/docs/javascript/reference/tier-2-chains/algorand.md) — Derive Algorand addresses and sign transactions using Dynamic embedded wallets - [Aptos](https://www.dynamic.xyz/docs/javascript/reference/tier-2-chains/aptos.md) — Derive Aptos addresses and sign transactions using Dynamic embedded wallets - [Cardano](https://www.dynamic.xyz/docs/javascript/reference/tier-2-chains/cardano.md) — Derive Cardano addresses and sign transactions using Dynamic embedded wallets - [Cosmos](https://www.dynamic.xyz/docs/javascript/reference/tier-2-chains/cosmos.md) — Derive Cosmos SDK chain addresses and sign transactions using Dynamic embedded wallets - [Mavryk](https://www.dynamic.xyz/docs/javascript/reference/tier-2-chains/mavryk.md) — Derive Mavryk addresses and sign transactions using Dynamic embedded wallets - [NEAR](https://www.dynamic.xyz/docs/javascript/reference/tier-2-chains/near.md) — Derive NEAR addresses and sign transactions using Dynamic embedded wallets - [Using chains with Tier 2 and 3 support — Technical Overview](https://www.dynamic.xyz/docs/javascript/reference/tier-2-chains/overview.md) — Embedded wallets via raw signing with helper methods and EOA support - [XRP (Ripple)](https://www.dynamic.xyz/docs/javascript/reference/tier-2-chains/ripple.md) — Derive XRP addresses and sign transactions using Dynamic embedded wallets - [Tron](https://www.dynamic.xyz/docs/javascript/reference/tier-2-chains/tron.md) — Derive Tron addresses and sign transactions using Dynamic embedded wallets - [Adding TON Extensions](https://www.dynamic.xyz/docs/javascript/reference/ton/adding-ton-extension.md) — Add TON blockchain support to your Dynamic client - [Checking TON Wallet Account Type](https://www.dynamic.xyz/docs/javascript/reference/ton/checking-ton-wallet-account-type.md) - [generateTonConnectProof](https://www.dynamic.xyz/docs/javascript/reference/ton/generate-ton-connect-proof.md) - [sendJetton](https://www.dynamic.xyz/docs/javascript/reference/ton/send-jetton.md) - [sendTon](https://www.dynamic.xyz/docs/javascript/reference/ton/send-ton.md) - [sendTransaction (TON)](https://www.dynamic.xyz/docs/javascript/reference/ton/send-transaction.md) - [Adding Tron Extensions](https://www.dynamic.xyz/docs/javascript/reference/tron/adding-tron-extension.md) — Add Tron blockchain support to your Dynamic client - [Checking Tron Wallet Account Type](https://www.dynamic.xyz/docs/javascript/reference/tron/checking-tron-wallet-account-type.md) - [getTronWeb](https://www.dynamic.xyz/docs/javascript/reference/tron/get-tron-web.md) - [sendTransaction (Tron)](https://www.dynamic.xyz/docs/javascript/reference/tron/send-transaction.md) - [Checking if Dynamic WaaS is enabled](https://www.dynamic.xyz/docs/javascript/reference/waas/checking-if-waas-is-enabled.md) - [Checking WaaS Wallet Account Type](https://www.dynamic.xyz/docs/javascript/reference/waas/checking-waas-wallet-account-type.md) - [Creating WaaS Wallet Accounts](https://www.dynamic.xyz/docs/javascript/reference/waas/creating-waas-wallet-accounts.md) - [Exporting WaaS Private Key](https://www.dynamic.xyz/docs/javascript/reference/waas/exporting-waas-private-key.md) - [getGoogleDriveBackupReadiness](https://www.dynamic.xyz/docs/javascript/reference/waas/get-google-drive-backup-readiness.md) — Pre-flight readiness check for backing up MPC key shares to Google Drive - [Importing WaaS Private Key](https://www.dynamic.xyz/docs/javascript/reference/waas/importing-waas-private-key.md) - [Migrate from Fireblocks](https://www.dynamic.xyz/docs/javascript/reference/waas/migrate-from-fireblocks.md) - [Password encryption](https://www.dynamic.xyz/docs/javascript/reference/waas/password-encryption.md) — Add password protection to embedded wallets for enhanced security - [Adding a network](https://www.dynamic.xyz/docs/javascript/reference/wallets/add-network.md) - [Build a Wallet Picker](https://www.dynamic.xyz/docs/javascript/reference/wallets/build-wallet-picker.md) — Render every wallet a user can connect to — installed, URI-based (deeplink + QR), in-app browser, and install-only — from a single SDK call. - [Checking Wallet Account Availability](https://www.dynamic.xyz/docs/javascript/reference/wallets/check-wallet-account-availability.md) - [Connecting and Verifying a Wallet](https://www.dynamic.xyz/docs/javascript/reference/wallets/connect-and-verify-wallet.md) - [Getting Active Network](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-active-network.md) - [Getting Available Wallets to Connect](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-available-wallets-to-connect.md) - [Get Balances for All Wallets](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-balance-for-all-wallets.md) — Use getMultichainTokenBalances to fetch token holdings across every connected wallet in a single API call. - [Getting Connected Addresses](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-connected-addresses.md) - [Getting Multichain Token Balances](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-multichain-token-balances.md) - [Getting Native Balance](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-native-balance.md) - [Getting Networks Data](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-networks-data.md) - [Getting Token Balances](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-token-balances.md) — Retrieve token balances for a wallet account on one chain (one or more networks). - [Getting Transaction History](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-transaction-history.md) - [Getting the Wallet Account Given an Address and Chain](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-wallet-account-from-address.md) - [Getting Wallet Accounts](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-wallet-accounts.md) - [Get Wallet Options Catalogue](https://www.dynamic.xyz/docs/javascript/reference/wallets/get-wallet-options-catalogue.md) — Get every wallet a user can sign in with — installed providers, WalletConnect, MetaMask SDK URI, in-app browsers, and install links — in a single ordered list. - [Hardware Wallet Support](https://www.dynamic.xyz/docs/javascript/reference/wallets/hardware-wallets.md) — Connect and verify Ledger hardware wallets via supported software wallets - [List WalletConnect Wallets](https://www.dynamic.xyz/docs/javascript/reference/wallets/list-walletconnect-wallets.md) — Use getWalletConnectCatalog to render a simple list of WalletConnect wallets with their names, icons, and deep link URLs. - [MetaMask Connection Guide](https://www.dynamic.xyz/docs/javascript/reference/wallets/metamask-connection-guide.md) — Handle MetaMask connections across desktop (extension), desktop (QR code), and mobile (deeplink) using the JavaScript SDK. - [Removing a Wallet Account](https://www.dynamic.xyz/docs/javascript/reference/wallets/remove-wallet-account.md) - [Signing a Message](https://www.dynamic.xyz/docs/javascript/reference/wallets/sign-message.md) - [Switching Active Network](https://www.dynamic.xyz/docs/javascript/reference/wallets/switch-active-network.md) - [Wallet Provider Events](https://www.dynamic.xyz/docs/javascript/reference/wallets/wallet-provider-events.md) - [Authenticate with WalletConnect](https://www.dynamic.xyz/docs/javascript/reference/wallets/walletconnect-integration.md) — Connect mobile wallets to your dapp - add extension, get wallet list, connect (QR or deep link), handle prompts - [Adding ZeroDev Extension](https://www.dynamic.xyz/docs/javascript/reference/zerodev/adding-zerodev-extension.md) — Add ZeroDev account abstraction support to your Dynamic client - [calculateFeeForUserOperation](https://www.dynamic.xyz/docs/javascript/reference/zerodev/calculate-fee-for-user-operation.md) — Calculate the fee for a ZeroDev user operation from known gas values - [canSponsorUserOperation](https://www.dynamic.xyz/docs/javascript/reference/zerodev/can-sponsor-user-operation.md) - [createKernelClientForWalletAccount](https://www.dynamic.xyz/docs/javascript/reference/zerodev/create-kernel-client-for-wallet-account.md) - [estimateUserOperationGas](https://www.dynamic.xyz/docs/javascript/reference/zerodev/estimate-user-operation-gas.md) - [ZeroDev Gas Sponsorship Quickstart](https://www.dynamic.xyz/docs/javascript/reference/zerodev/gas-sponsorship-quickstart.md) — Set up gasless EVM transactions with ZeroDev (ERC-4337) so your app pays gas for users - [getSignerForSmartWalletAccount](https://www.dynamic.xyz/docs/javascript/reference/zerodev/get-signer-for-smart-wallet-account.md) - [isGasSponsorshipError](https://www.dynamic.xyz/docs/javascript/reference/zerodev/is-gas-sponsorship-error.md) - [Migration Guide - v0.9.0](https://www.dynamic.xyz/docs/javascript/reference/zerodev/migration-v0.9.md) — Guide for migrating from transaction-based APIs to UserOperation APIs - [sendUserOperation](https://www.dynamic.xyz/docs/javascript/reference/zerodev/send-user-operation.md) - [signEip7702Authorization](https://www.dynamic.xyz/docs/javascript/reference/zerodev/sign-eip-7702-authorization.md) - [simulateZerodevUserOperation](https://www.dynamic.xyz/docs/javascript/reference/zerodev/simulate-zerodev-user-operation.md) — Preview a ZeroDev user operation's effects before sending it ### Wallets - [Developer Actions](https://www.dynamic.xyz/docs/javascript/wallets/embedded-wallets/mpc/delegated-access/developer-actions.md) — Use the delegated materials to act on behalf of the user. - [Delegation Flow](https://www.dynamic.xyz/docs/javascript/wallets/embedded-wallets/mpc/delegated-access/receiving-delegation.md) — What happens when a user approves delegation and how to handle the webhook. - [Revoking Delegation](https://www.dynamic.xyz/docs/javascript/wallets/embedded-wallets/mpc/delegated-access/revoking-delegation.md) — How to revoke delegation using the JavaScript SDK. - [Triggering Delegation](https://www.dynamic.xyz/docs/javascript/wallets/embedded-wallets/mpc/delegated-access/triggering-delegation.md) — How to trigger delegation for a user using the JavaScript SDK. - [Google Drive backup setup](https://www.dynamic.xyz/docs/javascript/wallets/embedded-wallets/mpc/google-drive-backup.md) — Configure Google Drive as a backup option for embedded wallet recovery