App manifest
App manifest is a small JSON file that lets wallets discover information about your dApp. It should be namedtonconnect-manifest.json
and correspond to the following definition.
Field | Requirement | Description |
---|---|---|
url | required | Defines the app URL. It will be used to open the dApp after clicking its icon in the wallet. It is recommended to pass the URL without closing the slash, e.g., ‘https://mydapp.com’ instead of ‘https://mydapp.com/’. |
name | required | Defines the app name. Typically simple word. Shouldn’t be used as identifier. |
iconUrl | required | Defines the URL to the app icon. It must be in PNG or ICO format. SVG icons are not supported. An 180x180 px PNG icon is optimal. |
termsOfUseUrl | optional | Only needed for apps to be featured in the wallet’s recommendation lists. |
privacyPolicyUrl | optional | Only needed for apps to be featured in the wallet’s recommendation lists. |
https://[myapp.com]/tonconnect-manifest.json
so that wallets can fetch it with a simple GET request.
Application manifest must be publicly available with CORS disabled, without any authorization required, and without a CloudFlare or similar service proxying them. If hosting that way is troublesome on your own, consider using a trusted CDN.
Wallet manifest
Wallet manifest is a JSON configuration that defines how your wallet interacts with the TON Connect. Here is an example of a custodian manifest:There, bridge refers to the way connectivity between the wallet and dApp is achieved. It can either be a JavaScript one, extending the
window
object, or an HTTP one, requiring a separate service to be running.For more details, see the respective reference section: WalletKit reference.Essential properties
-
app_name
: A unique identifier for the wallet. This string should be lowercase, without spaces or special characters. It will be used as an identifier in connection events and must match theConnectEventSuccess.device.appName
value. -
name
: The display name of the wallet that will be shown to users in dApp interfaces. For your custodian, simply use “[Custodian]” or “[Custodian] Wallet” as appropriate. -
image
: A URL pointing to the wallet’s icon. This should be a high-quality image with the following specifications:- Resolution: 288×288 pixels
- Background: Non-transparent
- Corners: Non-rounded
- Format: PNG
Connection properties
-
about_url
: A URL to the wallet information or landing page. This helps new TON users learn about your wallet. -
universal_url
: The base part of the wallet’s universal URL that will handle TON Connect parameters. This is a critical component for enabling connections via universal links. For your custodian, this could be something likehttps://wallet.[custodian].com/ton-connect
. -
bridge
: An array specifying connectivity options between dApps and the wallet.-
HTTP bridge setups should include:
There,
url
points to the publicly exposed bridge. -
JavaScript bridge setups should include:
There,
key
points to the property name within thewindow
object on the same web page.
-
HTTP bridge setups should include:
Platform and feature support
-
platforms
: An array listing all platforms where the wallet is available. This can include any of the following values:"ios"
,"android"
,"chrome"
,"firefox"
,"safari"
,"windows"
,"macos"
,"linux"
,"web"
. Include only the platforms that you actually support. -
features
: This section defines the capabilities of the wallet:name
: Currently, only “SendTransaction” is defined in the protocol.maxMessages
: The maximum number of messages the wallet can sign in a single transaction (4 is standard for many wallets).extraCurrencySupported
: Whether the wallet supports additional currencies beyond TON. Set tofalse
initially; you can update this later if you add support.