Async Transactions
Async transaction mode decouples signing and broadcasting from the main flow. Instead of blocking until the transaction confirms, the request returns immediately with a pendingTxId, and progress is reported via events.
This enables non-blocking UX in apps and efficient batch operations in agent workflows.
Event Lifecycle
waap_sign_pending → waap_sign_complete → waap_tx_pending → waap_tx_confirmed
↘ waap_2fa_required ↘ waap_sign_failed ↘ waap_tx_failedEvents Reference
| Event | When it fires | Key payload fields |
|---|---|---|
waap_sign_pending | Background signing has started | pendingTxId, txRequest |
waap_2fa_required | High-risk transaction requires 2FA | pendingTxId |
waap_sign_complete | Signing finished (before broadcast) | pendingTxId, signature, serializedTx |
waap_sign_failed | Error during signing | pendingTxId, error |
waap_tx_pending | Transaction broadcast; waiting for confirmation | pendingTxId, txHash |
waap_tx_confirmed | Transaction confirmed on-chain | pendingTxId, txHash, receipt |
waap_tx_failed | Error during broadcast or confirmation | pendingTxId, error, stage |
For full implementation details including the useWaapTransaction React hook and event payload shapes, see the Transactions SDK guide.
Related
- Permission Tokens — Pre-approved transaction scopes (uses async flow)
- Transactions (SDK) — Full transaction guide for dApps