Skip to main content
This page demonstrates how to use each method from the useMobileWallet hook. Make sure you have completed the Installation and Setup steps first.

Connect / Disconnect

Use connect to initiate a wallet connection and disconnect to end it. The account field contains the connected wallet’s public key.
import { useMobileWallet } from '@wallet-ui/react-native-web3js';

function ConnectButton() {
  const { account, connect, disconnect } = useMobileWallet();

  if (account) {
    return (
      <Button title="Disconnect" onPress={disconnect} />
    );
  }

  return (
    <Button title="Connect Wallet" onPress={connect} />
  );
}

Sign Message

Use signMessage to request the wallet to sign an arbitrary byte payload. This is useful for off-chain signature verification.
import { useMobileWallet } from '@wallet-ui/react-native-web3js';

function SignMessageButton() {
  const { signMessage } = useMobileWallet();

  const handleSignMessage = async () => {
    const message = 'Verify this message';
    const messageBytes = new TextEncoder().encode(message);
    const signature = await signMessage(messageBytes);
    console.log('Signature:', signature);
  };

  return <Button title="Sign Message" onPress={handleSignMessage} />;
}

Sign In with Solana (SIWS)

Use signIn to connect to a wallet and verify ownership in a single step. This combines authorization and message signing into one user interaction.
import { useMobileWallet } from '@wallet-ui/react-native-web3js';

function SignInButton() {
  const { account, signIn } = useMobileWallet();

  const handleSignIn = async () => {
    await signIn({
      domain: 'your-app-domain.com',
      statement: 'Sign in to Your App',
    });
    console.log('Signed in:', account?.address);
  };

  return <Button title="Sign In" onPress={handleSignIn} />;
}

Sign and Send Transaction

Use signAndSendTransaction to request the wallet to sign a transaction and submit it to the Solana network.
import { useMobileWallet } from '@wallet-ui/react-native-web3js';
import {
  PublicKey,
  SystemProgram,
  Transaction,
} from '@solana/web3.js';

function SendTransactionButton() {
  const { account, signAndSendTransaction, connection } = useMobileWallet();

  const handleSendTransaction = async () => {
    if (!account) return;

    const { blockhash } = await connection.getLatestBlockhash();

    const transaction = new Transaction({
      recentBlockhash: blockhash,
      feePayer: new PublicKey(account.address),
    }).add(
      SystemProgram.transfer({
        fromPubkey: new PublicKey(account.address),
        toPubkey: new PublicKey('11111111111111111111111111111111'),
        lamports: 1_000_000,
      }),
    );

    const signature = await signAndSendTransaction(transaction);
    console.log('Transaction signature:', signature);
  };

  return <Button title="Send Transaction" onPress={handleSendTransaction} />;
}

Next steps

Last modified on February 13, 2026