UX.SOL

Hook

useTokenBalance

Fetches, aggregates, and refreshes precise SPL token balances for a wallet and mint.

Installation

terminal
$npx shadcn@latest add https://uxdotsol.xyz/r/use-token-balance.json

Usage

use-token-balance.tsx
"use client";
 
import { PublicKey } from "@solana/web3.js";
import { useConnection, useWallet } from "@solana/wallet-adapter-react";
import { useTokenBalance } from "@/hooks/use-token-balance";
 
const USDC_MINT = new PublicKey(
"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
);
 
export function WalletUsdcBalance() {
const { connection } = useConnection();
const { publicKey } = useWallet();
const balance = useTokenBalance(publicKey, USDC_MINT, {
connection,
refreshIntervalMs: 15_000,
});
 
if (!publicKey) return <p>Connect your wallet to view your USDC balance.</p>;
 
return (
<section>
<p>Available to spend</p>
<strong>
{balance.isLoading ? "Loading..." : `${balance.formattedBalance ?? "0"} USDC`}
</strong>
{balance.error ? (
<button onClick={balance.refetch}>Retry balance check</button>
) : null}
</section>
);
}

Options

NameTypeDefaultDescription
publicKeyPublicKeyrequiredThe target wallet address.
mintPublicKeyrequiredThe SPL token mint address.
optionsTokenBalanceOptions{}Solana connection, commitment, and optional refresh interval.