> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crossmint.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Hooks

> React hooks for React SDK reference for Crossmint wallets

<Warning>
  **You are viewing docs for the previous version of the Wallets SDK.** We recommend upgrading to V1.
  See the [updated version of this page](/sdk-reference/wallets/react/hooks) or the [V1 migration guide](/wallets/guides/migrate-to-v1).
</Warning>

***

## useWallet()

### Returns

<ResponseField name="wallet" type="Wallet | undefined">
  The current wallet instance, or undefined if no wallet is loaded.
</ResponseField>

<ResponseField name="status" type="WalletStatus">
  Current wallet status. Options: `not-loaded` | `in-progress` | `loaded` | `error`.
</ResponseField>

<ResponseField name="getOrCreateWallet" type="(args: WalletArgsFor<Chain>) => Promise<Wallet | undefined>">
  Creates a new wallet or retrieves an existing one.

  <Expandable title="parameters">
    <ResponseField name="chain" type="Chain">
      The blockchain to create the wallet on (e.g. "base-sepolia").
    </ResponseField>

    <ResponseField name="signer" type="SignerConfigForChain">
      The signer configuration (e.g. `{ type: "email" }`).
    </ResponseField>

    <ResponseField name="owner" type="string">
      Optional owner identifier.
    </ResponseField>

    <ResponseField name="alias" type="string">
      Optional wallet alias.
    </ResponseField>

    <ResponseField name="plugins" type="WalletPlugin[]">
      Optional array of wallet plugins.
    </ResponseField>

    <ResponseField name="delegatedSigners" type="DelegatedSigner[]">
      Optional array of delegated signers.
    </ResponseField>
  </Expandable>
</ResponseField>

### Usage

```tsx theme={null}
import { useWallet } from "@crossmint/client-sdk-react-ui";

function WalletActions() {
    const { wallet, status } = useWallet();

    if (status === "in-progress") return <p>Loading wallet...</p>;
    if (!wallet) return <p>No wallet</p>;

    const handleSend = async () => {
        const tx = await wallet.send("0x...", "usdc", "10");
        console.log("Transaction:", tx.explorerLink);
    };

    const handleBalances = async () => {
        const balances = await wallet.balances();
        console.log("USDC:", balances.usdc.amount);
        console.log("Native:", balances.nativeToken.amount);
    };

    return (
        <div>
            <p>Wallet: {wallet.address}</p>
            <button onClick={handleBalances}>Check Balances</button>
            <button onClick={handleSend}>Send USDC</button>
        </div>
    );
}
```

***

## Wallet Methods

The `wallet` instance returned by `useWallet()` provides methods for token transfers, balances, signing, and more.

Since the React SDK wraps the Wallets SDK, see the **[Wallets SDK Reference](/sdk-reference/wallets/v0/typescript/classes/Wallet)** for complete documentation.

| Method                                                                                                                | Description                                                                                                                                                                                                 |
| --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`wallet.addDelegatedSigner()`](/sdk-reference/wallets/v0/typescript/classes/Wallet#adddelegatedsigner)               | Add a delegated signer to the wallet                                                                                                                                                                        |
| [`wallet.balances()`](/sdk-reference/wallets/v0/typescript/classes/Wallet#balances)                                   | Get the wallet balances - always includes USDC and native token (ETH/SOL)                                                                                                                                   |
| [`wallet.delegatedSigners()`](/sdk-reference/wallets/v0/typescript/classes/Wallet#delegatedsigners)                   | List the delegated signers for this wallet.                                                                                                                                                                 |
| [`wallet.experimental_activity()`](/sdk-reference/wallets/v0/typescript/classes/Wallet#experimental-activity)         | Get the wallet activity                                                                                                                                                                                     |
| [`wallet.experimental_nfts()`](/sdk-reference/wallets/v0/typescript/classes/Wallet#experimental-nfts)                 | Get the wallet NFTs                                                                                                                                                                                         |
| [`wallet.experimental_transaction()`](/sdk-reference/wallets/v0/typescript/classes/Wallet#experimental-transaction)   | Get a transaction by id                                                                                                                                                                                     |
| [`wallet.experimental_transactions()`](/sdk-reference/wallets/v0/typescript/classes/Wallet#experimental-transactions) | Get the wallet transactions                                                                                                                                                                                 |
| [`wallet.send()`](/sdk-reference/wallets/v0/typescript/classes/Wallet#send)                                           | Send a token to a wallet or user locator                                                                                                                                                                    |
| [`wallet.stagingFund()`](/sdk-reference/wallets/v0/typescript/classes/Wallet#stagingfund)                             | Funds the wallet with Crossmint's stablecoin (USDXM).  **Note:** This method is only available in staging environments and exclusively supports USDXM tokens. It cannot be used in production environments. |

**Chain-specific:**

* [`EVMWallet`](/sdk-reference/wallets/v0/typescript/classes/EVMWallet) — `getViemClient()`, `sendTransaction()`, `signMessage()`, `signTypedData()`
* [`SolanaWallet`](/sdk-reference/wallets/v0/typescript/classes/SolanaWallet) — `sendTransaction()`
* [`StellarWallet`](/sdk-reference/wallets/v0/typescript/classes/StellarWallet) — `sendTransaction()`
