Loading...
wagmi is React Query for on-chain state. Hooks give you balances, reads, writes — with all the hard caching done for you.
typescriptimport { useReadContract } from "wagmi"; const { data: balance } = useReadContract({ address: TOKEN, abi: erc20Abi, functionName: "balanceOf", args: [userAddress], });
Cached, deduplicated, refetches on block. No manual polling.
typescriptimport { useWriteContract, useWaitForTransactionReceipt } from "wagmi"; const { data: hash, writeContract } = useWriteContract(); const { isLoading, isSuccess } = useWaitForTransactionReceipt({ hash }); <button onClick={() => writeContract({ address, abi, functionName: "mint" })}>Mint</button> {isLoading && <p>Confirming…</p>} {isSuccess && <p>Done!</p>}
typescriptimport { useAccount, useConnect } from "wagmi"; import { injected } from "wagmi/connectors"; const { address, isConnected } = useAccount(); const { connect } = useConnect(); {isConnected ? <p>{address}</p> : <button onClick={() => connect({ connector: injected() })}>Connect</button>}
javascriptif (!isConnected) return <ConnectButton />; const { data: balance } = useReadContract({ ... }); const { writeContract } = useWriteContract(); return <div>{balance} <button onClick={() => writeContract(...)}>...</button></div>;