Hook
useTransactionStatus
Tracks a Solana transaction signature and exposes confirmation state.
Installation
terminal
$npx shadcn@latest add https://uxdotsol.xyz/r/use-transaction-status.jsonUsage
use-transaction-status.tsx
"use client"; import type { Connection } from "@solana/web3.js";import { useTransactionStatus } from "@/hooks/use-transaction-status"; export function PaymentReceipt({ connection, signature,}: { connection: Connection; signature: string;}) { const transaction = useTransactionStatus({ client: connection, signature, commitment: "confirmed", cluster: "mainnet-beta", }); return ( <section aria-live="polite"> <h2>Payment receipt</h2> <p>Status: {transaction.status}</p> {transaction.status === "failed" || transaction.status === "expired" ? ( <button onClick={transaction.retry}>Check again</button> ) : null} {transaction.explorerLink ? ( <a href={transaction.explorerLink} target="_blank" rel="noreferrer"> View transaction </a> ) : null} </section> );}Options
| Name | Type | Default | Description |
|---|---|---|---|
| signature | string | undefined | Transaction signature to watch. |
| timeoutMs | number | 90000 | Time before the hook reports an expired status. |
| client | Connection | KitRpcLike | undefined | RPC client used for subscription and status polling. |
| pollIntervalMs | number | 2000 | Polling interval used alongside or instead of subscriptions. |
| cluster / explorer / explorerUrl | string | 'mainnet-beta' / 'solscan' / undefined | Explorer link controls. |
Types
| Name | Type | Default | Description |
|---|---|---|---|
| TransactionStatusState | 'idle' | 'pending' | 'confirmed' | 'finalized' | 'failed' | 'expired' | - | Clean UI state for a watched signature. |
Returns
| Name | Type | Default | Description |
|---|---|---|---|
| status | TransactionStatusState | 'idle' | Current signature state. |
| confirmations / confirmationStatus | number | null / string | null | null | RPC confirmation details when available. |
| error | SignatureResult['err'] | Error | null | null | Failure or timeout error. |
| explorerLink / isPending / isTerminal | string | null / boolean / boolean | null / false / false | Convenience values for rendering status UI. |