waitForTransactionReceipt
Waits for the Transaction to be included on a Block (one confirmation), and then returns the Transaction Receipt. If the Transaction reverts, then the action will throw an error.
The waitForTransactionReceipt
action additionally supports Replacement detection (ie. sped up Transactions).
Import
ts
import { waitForTransactionReceipt } from 'viem/public'
Usage
ts
import { waitForTransactionReceipt } from 'viem/public'
import { publicClient } from '.'
const transaction = await waitForTransactionReceipt(
publicClient,
{ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d' }
)
/**
* {
* blockHash: '0xaf1dadb8a98f1282e8f7b42cc3da8847bfa2cf4e227b8220403ae642e1173088',
* blockNumber: 15132008n,
* from: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
* ...
* status: 'success',
* }
*/
Returns
The transaction receipt.
Parameters
confirmations (optional)
- Type:
number
- Default:
1
The number of confirmations (blocks that have passed) to wait before resolving.
ts
const transaction = await waitForTransactionReceipt(
publicClient,
{
confirmations: 5,
hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d'
}
)
onReplaced (optional)
- Type:
({ reason: 'replaced' | 'repriced' | 'cancelled', replacedTransaction: Transaction, transaction: Transaction, transactionReceipt: TransactionReceipt }) => void
Optional callback to emit if the transaction has been replaced.
ts
const transaction = await waitForTransactionReceipt(
publicClient,
{
hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
onReplaced: replacement => console.log(replacement)
}
)
pollingInterval (optional)
- Type:
number
Polling frequency (in ms). Defaults to the Client's pollingInterval
config.
ts
const transaction = await waitForTransactionReceipt(
publicClient,
{
hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
pollingInterval: 12_000,
}
)
timeout (optional)
- Type:
number
Optional timeout (in milliseconds) to wait before stopping polling.
ts
const transaction = await waitForTransactionReceipt(
publicClient,
{
hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
timeout: 60_000,
}
)
Notes
- Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce.
- There are 3 types of Transaction Replacement reasons:
repriced
: The gas price has been modified (ie. differentmaxFeePerGas
)cancelled
: The Transaction has been cancelled (ie.value === 0n
)replaced
: The Transaction has been replaced (ie. differentvalue
ordata
)