Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.solanamobile.com/llms.txt

Use this file to discover all available pages before exploring further.

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

Advanced: Invoke MWA Sessions Directly

Learn the low-level transact() API for direct MWA session control.

Sample Apps

Browse reference apps to jumpstart your development.
Last modified on February 13, 2026