Recommended: JavaScript SDK for React Native
While this SDK is still supported, we recommend using newer JavaScript SDK, which is optimized for React Native, but also comes with a host of other benefits.
dynamicClient.ton — alongside dynamicClient.wallets, dynamicClient.bitcoin, and the chain extensions. There is no separate TonExtension to install: the module ships with @dynamic-labs/legacy-client and routes every call through the embedded WebView, which already includes the TON wallet connectors and a TonController that handles the bridge messages.
Checking if a wallet is a TON wallet
React Native
wallet.chain returns one of 'EVM' | 'SOL' | 'BTC' | 'SUI' | 'TON'. To list every TON wallet the user has connected:
React Native
Configuring the client
TON support is enabled the moment you create the client; no extension is required. Optionally passtonNetworks to override the dashboard network list (custom entries win on chainId conflicts).
The dynamicClient.ton module
Every method takes a walletId (string) — typically read from wallet.id of a wallet you’ve already filtered by chain === 'TON'.
Sign a message
React Native
Get balance
React Native
Get network details
React Native
Embedded vs external TON wallets
- Embedded (MPC) TON wallets — derived from the same root entropy as the user’s other embedded wallets but with a TON-specific Ed25519 derived key. The private key is never reconstructed in your app; signing happens through the MPC ceremony.
- External TON wallets — connect via TonConnect (Tonkeeper, MyTonWallet, OpenMask, etc.). The signing protocol depends on the connector.
wallet.chain to find the right one.
Examples
- Send TON — transfer native Toncoin.
- Send a Jetton — transfer a TON-native token.