> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrating from React to the JavaScript SDK

> 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.

## 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 or prompt, and you render most screens yourself. Each flow's UI is covered in the [Building UI](https://docs.dynamic.xyz/docs/javascript/building-ui/overview.md) section. For a React web app, [React UI components](https://docs.dynamic.xyz/docs/javascript/building-ui/react-ui/overview.md) provide a prebuilt wallet picker and Flow payment widget.
* **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](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/post-login-user-setup.md).
* **No provider monolith.** `DynamicContextProvider` becomes `createDynamicClient()` plus (in React) a thin `DynamicProvider`. `useDynamicContext()` splits into focused hooks like `useUser()`. See [Basic setup](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/basic-setup.md).
* **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](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/users.md).

## Type renames

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

| React SDK | JavaScript SDK |
| - | - |
| `WalletConnector` | `WalletProvider` |
| `Wallet` | `WalletAccount` |
| `EvmNetwork` / `GenericNetwork` | `NetworkData` |

## The pages

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

### Foundations

* [Basic setup](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/basic-setup.md) — provider, client, and the events → promises shift
* [Non-wallet authentication](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/non-wallet-authentication.md) — email, SMS, social, passkey, external JWT
* [Wallet authentication](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/wallet-authentication.md) — connecting and verifying external wallets
* [Post-login user setup](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/post-login-user-setup.md) — the orchestration chain you now own

### Accounts, wallets & networks

* [Account conflict resolution](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/account-conflict-resolution.md)
* [Using connected wallets](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/using-connected-wallets.md)
* [Network management](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/network-management.md)
* [Transactions and balance](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/transactions-and-balance.md)

### Embedded wallets

* [Setup & creation](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/embedded-wallets-setup.md)
* [Password & security](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/embedded-wallets-password-security.md)
* [Backup & recovery](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/embedded-wallets-backup-recovery.md)
* [Delegated access](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/embedded-wallets-delegated-access.md)
* [Transactions & session keys](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/embedded-wallets-transactions.md)
* [Upgrading embedded wallets](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/upgrading-embedded-wallets.md)

### Identity & advanced auth

* [MFA](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/mfa.md)
* [Step-up authentication](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/step-up-auth.md)
* [Users](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/users.md)

### Money, chains & configuration

* [Funding](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/funding.md)
* [Gas sponsorship & smart wallets](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/gas-sponsorship-smart-wallets.md)
* [Global wallets](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/global-wallets.md)
* [Integrating chains](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/integrating-chains.md)
* [Cookies](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/cookies.md)
* [Wagmi integration](https://docs.dynamic.xyz/docs/javascript/migrating-from-react/wagmi.md)

## Where implementation lives

Each migration page explains *what changed*; the [Building UI](https://docs.dynamic.xyz/docs/javascript/building-ui/overview.md) 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](https://docs.dynamic.xyz/docs/javascript/reference/client/create-dynamic-client.md) and [Initializing the client](https://docs.dynamic.xyz/docs/javascript/reference/client/initialize-dynamic-client.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.