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 September 21, 2026