useWaitForTransaction
Hook for declaratively waiting until transaction is processed. Pairs well with useContractWrite
and useTransaction
.
import { useWaitForTransaction } from 'wagmi'
Usage
import { useWaitForTransaction } from 'wagmi'
const App = () => {
const [{ data, error, loading }, wait] = useWaitForTransaction({
hash: '0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060',
})
if (loading) return <div>Processing…</div>
if (error) return <div>Transaction error</div>
return <div>Transaction: {JSON.stringify(data)}</div>
}
Return Values
result
{
data?: TransactionReceipt
error?: Error
loading?: boolean
}
wait
(config?: {
confirmations?: number
hash?: string
timeout?: number
wait?: TransactionResponse['wait']
}) => Promise<{ data?: TransactionReceipt; error?: Error }>
Configuration
confirmations (optional)
Waits until confirmations number of blocks are mined on top of the block containing the transaction. Defaults to 1
. If confirmations is 0
, hook will not wait and return immediately without blocking, likely resulting in data
being null
.
import { useWaitForTransaction } from 'wagmi'
const App = () => {
const [{ data, error, loading }, wait] = useWaitForTransaction({
confirmations: 1,
hash: '0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060',
})
return ...
}
hash (optional)
Transaction hash to monitor.
import { useWaitForTransaction } from 'wagmi'
const App = () => {
const [{ data, error, loading }, wait] = useWaitForTransaction({
hash: '0x7be10a9c3440cdc09f7e9b36b7b162e0a377cae104742f6ee43e8f2fea6cfdcf',
})
return ...
}
skip (optional)
Skips automatically waiting for transaction to process on mount. Defaults to false
. Useful if you want to call wait
manually at some other point.
import { useWaitForTransaction } from 'wagmi'
const App = () => {
const [{ data, error, loading }, wait] = useWaitForTransaction({
hash: '0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060',
skip: true,
})
return ...
}
timeout (optional)
Maximum amount of time to wait before timing out in milliseconds. Defaults to 0
(will wait until transaction processes).
import { useWaitForTransaction } from 'wagmi'
const App = () => {
const [{ data, error, loading }, wait] = useWaitForTransaction({
hash: '0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060',
timeout: 2000, // 2 seconds
})
return ...
}
wait (optional)
Function that resolves to processed transaction receipt. Works well with useContractWrite
and useTransaction
results hash
or wait
.
import { useTransaction, useWaitForTransaction } from 'wagmi'
const App = () => {
const [result, sendTransaction] = useTransaction()
const [{ data, error, loading }, wait] = useWaitForTransaction({
wait: result.data?.wait
})
return ...
}