Skip to main content
Make sure you enable TON chain in the Dynamic dashboard.

Installation

Default TON extension

If you wish to support TON external wallets (via TonConnect) and Dynamic embedded wallets, you can add the default TON extension to your client using the addTonExtension method.
This enables support for external wallets like Tonkeeper, MyTonWallet, and Telegram Wallet (via TonConnect), as well as embedded wallets managed by Dynamic’s infrastructure (via WaaS).

Standalone TON extensions

If you want to be more granular, you can add the standalone TON extensions individually to your client.

TonConnect extension

WaaS TON extension

Reusing an existing TonConnectUI instance

By default, addTonExtension and addTonConnectExtension create a new TonConnectUI instance internally, using your client’s metadata.universalLink to derive the manifest URL. If your app already manages a TonConnectUI instance (for example via useTonConnectUI from @tonconnect/ui-react), you can pass it in to avoid duplicate instances.

Combining extensions

You can combine as many extensions as you want to support all the wallets you want to support.

TonConnect manifest

When using TonConnect (via addTonExtension or addTonConnectExtension), the SDK expects a tonconnect-manifest.json file to be served at your app’s origin. The URL is derived from the client’s metadata.universalLink setting, which defaults to window.location.origin:
If your manifest is hosted at a different URL, you can configure it via the metadata.universalLink option when creating the client:
This manifest contains metadata about your app that is displayed in the user’s wallet during connection. Place this file in your app’s public directory (e.g. public/tonconnect-manifest.json):
For more details on the manifest format, see the TonConnect documentation.

Browser polyfill for Buffer

The TON ecosystem libraries (@ton/core, @ton/crypto) use Node.js’s Buffer internally. If you’re running in a browser environment where Buffer is not available globally, you’ll need to add a polyfill. In your application’s entry point (before any TON-related code runs), add the following:
This is only needed in browser environments. Node.js has Buffer available globally by default.
Last modified on May 6, 2026