Dynamic: React SDK V5 and V3 wallets logoDynamic: React SDK V5 and V3 wallets
Update every @dynamic-labs/* package together. sdk-react-core 5.7.0. New React apps can use @dynamic-labs-sdk/react-hooks. Embedded-wallet showdown stays.
devrels.xyz/a/311Dynamic React SDK V5 is the current React SDK major. It talks to Dynamic's current embedded wallet infrastructure. SDK version and wallet generation are independent. React SDK V5 creates V3 wallets. Existing V1/V2 wallets stay reachable only through the migration flow.
V3 embedded wallets use TSS-MPC. Docs list stronger key security, sub-second signing, flexible recovery, and broader chain support. New React apps can start on the JavaScript SDK with React hooks (@dynamic-labs-sdk/react-hooks 1.31.1) instead of this legacy React SDK. The comparison piece stays: embedded wallet showdown.
Upgrade
Update every @dynamic-labs/* package to V5 at the same time. Mixing V4 and V5 is not supported. Latest @dynamic-labs/sdk-react-core on npm is 5.7.0. Check whether the environment still has V1/V2 wallets with the Dynamic CLI before you skip migration.
dyn wallets list-active-embedded-versions --output json | jq '{
migrationRequired: any(.[]; . == "V1" or . == "V2"),
legacyVersions: [.[] | select(. == "V1" or . == "V2")],
legacyVersionCount: ([.[] | select(. == "V1" or . == "V2")] | length)
}'That command reports which versions are active. It does not count wallets or users. Dashboard: Authenticated Users, Account tab, and Embedded Wallets for the version used for new users.
Solana connectors
SolanaWalletConnectors no longer bundles the legacy embedded wallet connector. New V3 wallets do not need it. Migration from V1/V2 Solana wallets needs LegacySolanaEmbeddedWalletConnectors from @dynamic-labs/embedded-wallet-solana, next to @dynamic-labs/solana. The @dynamic-labs/eclipse package is removed. Eclipse and other Solana-based chains use @dynamic-labs/solana.
import { SolanaWalletConnectors } from "@dynamic-labs/solana"
import { LegacySolanaEmbeddedWalletConnectors } from "@dynamic-labs/embedded-wallet-solana"
const walletConnectors = [
SolanaWalletConnectors,
LegacySolanaEmbeddedWalletConnectors,
]Removed APIs
| Removed | Replacement |
|---|---|
useUpgradeEmbeddedWallet | migration package @dynamic-labs/legacy-embedded-wallet-migration |
useUpgradeToDynamicWaasFlow | same migration package |
useEmbeddedWallet().revealWalletKey | useLegacyWalletExport().revealWalletKey |
useFunding | useOnramp |
handleUnlinkWallet | removeWallet |
Migrate V1/V2
Users export the legacy private key client-side and import it into a V3 wallet. Same key keeps the address. Without LegacyWalletMigrationProvider, the SDK throws when it sees a V1/V2 wallet. Built-in UI is the default. Headless is autoOpen=false plus the migration hooks. Do not log or persist the exported key.
import { DynamicContextProvider } from "@dynamic-labs/sdk-react-core"
import { LegacyWalletMigrationProvider } from "@dynamic-labs/legacy-embedded-wallet-migration"
<DynamicContextProvider settings={{ environmentId: "YOUR_ENVIRONMENT_ID" }}>
<LegacyWalletMigrationProvider>
<YourApp />
</LegacyWalletMigrationProvider>
</DynamicContextProvider>React Native on the legacy SDK: packages renamed with a legacy- prefix. Secure storage is react-native-keychain, not expo-secure-store.
Resources
Keep reading
Email/social/passkey login → portable MPC wallets; sign via SDK or REST without exposing full keys.
Launch lists CommerceKit as the complete e-commerce toolkit for Solana-powered stores. Under the hood it is a package graph: headless commerce logic, React UI, wallet connector, and a full Solana Pay implementation — install @solana-commerce/kit for the whole stack.
Stop re-wrapping wallet adapters for every app. ConnectorKit is the Foundation's headless wallet connector: Wallet Standard first, React + vanilla paths, mobile support, health checks and analytics events — npm @solana/connector on launch.solana.com.
Get new articles in your inbox
Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.
