Skip to main content

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.
TON is exposed as a first-class module on the headless React Native client — 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 pass tonNetworks 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
The signing scheme follows what the underlying connector supports (TonConnect proof for external wallets, Ed25519 for embedded MPC wallets).

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.
A single user session can hold multiple wallets across chains. Filter by wallet.chain to find the right one.

Examples

Last modified on July 29, 2026