← Articles
Dynamic: React SDK V5 and V3 wallets logo
solana

Dynamic: React SDK V5 and V3 wallets

· SEP 9, 2026 ·
Read
Share

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/311

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

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

typescript
import { SolanaWalletConnectors } from "@dynamic-labs/solana"
import { LegacySolanaEmbeddedWalletConnectors } from "@dynamic-labs/embedded-wallet-solana"

const walletConnectors = [
  SolanaWalletConnectors,
  LegacySolanaEmbeddedWalletConnectors,
]

Removed APIs

React SDK V5 replacements
RemovedReplacement
useUpgradeEmbeddedWalletmigration package @dynamic-labs/legacy-embedded-wallet-migration
useUpgradeToDynamicWaasFlowsame migration package
useEmbeddedWallet().revealWalletKeyuseLegacyWalletExport().revealWalletKey
useFundinguseOnramp
handleUnlinkWalletremoveWallet

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.

tsx
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

Get new articles in your inbox

Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.

Dynamic: React SDK V5 and V3 wallets | devrels.xyz