Skip to main content

Who this is for

You’re moving an app from the React SDK (@dynamic-labs/sdk-react-core) to the JavaScript SDK (@dynamic-labs-sdk/client). This section explains what’s different, what your app now owns, and links each flow to a concrete implementation guide. The JavaScript SDK is headless: it gives you the logic for auth, wallets, and money movement, and you build every screen. The React SDK shipped a widget and orchestrated flows for you; the JavaScript SDK hands you the same capabilities as functions (and React hooks) that you call when you decide.

The big shifts

Almost every change traces back to one idea — the SDK no longer does anything on its own. Keep these in mind as you read the per-flow pages:
  • No built-in UI. There’s no modal, wallet picker, or prompt. You render everything. Each flow’s UI is covered in the Building UI section.
  • Nothing is automatic. Onboarding, MFA, device registration, and wallet creation used to run automatically after login. Now you run each step explicitly — see Post-login user setup.
  • No provider monolith. DynamicContextProvider becomes createDynamicClient() plus (in React) a thin DynamicProvider. useDynamicContext() splits into focused hooks like useUser(). See Basic setup.
  • Call functions, don’t wait for events. The React SDK was event-driven; the JavaScript SDK is imperative — you await a function or use a hook’s onSuccess/onError. Events still exist for convenience but aren’t the primary pattern.
  • You choose the wallet. The SDK doesn’t track a current or active wallet for you — you work with the array of wallet accounts from getWalletAccounts() and pass the specific walletAccount you mean into each call.
  • No isSignedIn / isLoggedIn flag. Derive state directly from the user, their wallets, and onboarding completeness. See Users.

Type renames

The concepts carry over, but several types were renamed for the JavaScript SDK:

The pages

Work through these roughly in order — setup and auth first, then the flows your app uses.

Foundations

Accounts, wallets & networks

Embedded wallets

Identity & advanced auth

Money, chains & configuration

Where implementation lives

Each migration page explains what changed; the Building UI section shows how to build the replacement flow, with copy-and-adapt TypeScript and React examples. Migration pages link to the matching Building UI guide wherever one exists. For SDK setup itself, see Creating a Dynamic client and Initializing the client.
Last modified on July 27, 2026