Skip to main content
Signing produces a signature without submitting a transaction. The React Native SDK signs and verifies against the active wallet, so these operations require a completed wallet session. The public verification methods do not accept an explicit wallet address.

Sign and verify a message

Use the same network and exact message for signing and verification:
isValidMessageSignature returns false when the signature does not validate for the wallet, network, and message. Pass walletAddress to verify a signature from any wallet, even while signed out; omit it to verify against the active Ethereum wallet.

Sign and verify a Solana message

For a selected Solana wallet, use the Solana-specific methods. Off-chain messages do not take a network because they are not cluster-specific.
Signing uses the active Solana wallet. Verification uses it too unless you pass walletAddress.

Sign and verify typed data

Pass the EIP-712 data as a JSON-serializable object with domain, types, primaryType, and message. The SDK serializes it with JSON.stringify before passing it to the native layer, so write integer values as numbers or decimal strings instead of bigint:
The chainId in the EIP-712 domain remains part of the signed payload. The wallet method also requires the corresponding exported network value. Without walletAddress, verification uses the currently active wallet of the matching type. If the app switches wallets between signing and verification, pass the signer’s address as walletAddress.

Sign and verify with a Tron wallet

For an active Tron wallet, use the Tron methods. Messages and TIP-712 typed data do not take a network, and address values in typed data may be Base58Check (T…):
signTronTypedData({ typedData }) and isValidTronTypedDataSignature({ typedData, signature }) work the same way for TIP-712 data. Both verification methods accept walletAddress, a Base58Check address.