Skip to main content

useTransactor

Use this hook to interact with the chain and give UI feedback on the transaction status.

You can pass in anything that is a valid parameter to Viem's sendTransaction function. It also possible to pass it an promise that resolves in with a transaction hash for example promise from Wagmi's writeContractAsync function. This is actually what useScaffoldWriteContract does under the hood. Refer to this recipe for a more detailed example.

const transactor = useTransactor();
const writeTx = transactor({
to: "0x97843608a00e2bbc75ab0C1911387E002565DEDE", // address of buidlguidl.eth
value: 1000000000000000000n,
});
await writeTx();

This example tries to send 1 ETH to the address buidlguidl.eth, prompting the connected WalletClient for a signature. And in the case of a successful transaction, it will show a popup in the UI with the message: "πŸŽ‰ Transaction completed successfully!".

Configuration​

useTransactor​

ParameterTypeDescription
_walletClient (optional)WalletClientThe wallet client that should sign the transaction. Defaults to the connected wallet client, and is only needed if the transaction is not already sent using writeContractAsync

callback function​

ParameterTypeDescription
txsendTransaction-parameters or Promise<Hash>Either valid parameters for sendTransaction-parameters or a promise that resolves with the transaction hash, e.g. Wagmi's writeContractAsync function.
options (optional)objectAdditional options for the confirmation.
└─options.blockConfirmations (optional)numberThe number of block confirmations to wait for before resolving. Defaults to 1.
└─options.onBlockConfirmation (optional)functionA callback function that is called once all blockConfirmations is reached.

Return Values​

useTransactor​

  • The callback function that is used to inialize the UI feedback flow.

callback function​

  • A promise that resolves with the transaction hash once the transaction is mined.

UI Feedback​

A small popup will appear in the UI with the following messages:

  1. "Awaiting for user confirmation."
  2. "Waiting for transaction to complete."
  3. "Transaction completed successfully!"

Happy Flow

Any error will instead show a popup with the error message.

Error Example