DEV Community

Gideon Elliott
Gideon Elliott

Posted on

Wait or retry: what to do with a stuck cross-chain swap?

Wait when the source transaction is still pending or the bridge is waiting for the source chain to finalize it; retry only after you confirm the original transfer failed or the destination action needs a separate recovery step. A cross-chain transfer has several stages, so “pending” alone does not tell you whether your funds are lost or what action is safe.

Wait while the source transaction or message is progressing

Wait if the source transaction has not yet been included in a block, or if it succeeded but the bridge is still waiting for enough confirmations. Check the source transaction hash in that chain’s block explorer: a pending transaction is not the same as a confirmed transfer, and a reverted transaction did not complete the bridge deposit.

After source confirmation, the bridge generally observes the event, waits for its required finality, then relays a message or proof so the destination can execute. The time varies with the chains, their congestion, and the bridge design; there is no universal cross-chain timeout. Wormhole’s documentation, for example, describes a flow that includes source-chain initiation and destination-chain redemption.

Suppose you send a token from Ethereum to a layer 2 and the source explorer says “success,” while the destination wallet balance has not changed. Look up the transfer using its source hash or message ID in the bridge’s official status tool. If it is still awaiting finality or relay, avoid starting a second transfer: the original may still complete.

Retry only when the recorded state calls for it

Retry when the source transaction reverted, or when the bridge reports a destination execution failure with a supported recovery action. A revert can still cost source-chain gas, but it normally means no bridge message was emitted. If the source transaction was replaced or dropped, check the replacement hash and account nonce before treating the original attempt as active; Ethereum.org’s transaction documentation explains how pending transactions can be included, replaced, or dropped.

When the source succeeded but destination execution failed, follow the bridge’s documented recovery path for that specific message. Check that you are using the correct destination network and address, and that the destination wallet can pay any required gas. Acrossbridge is relevant when your next step is to move or swap assets across networks in one flow: an acrossbridge swap is a service for handling that cross-chain transfer and swap together.

Before retrying, match the source hash, destination network, token, and amount against the status record. If the state is unclear, preserve the transaction details and consult the bridge’s official recovery instructions; do not share a seed phrase or sign an unrelated transaction to “release” funds. Ask yourself: has the original message failed, or is it still moving through the bridge?

Questions to check before acting

Can I speed up a pending source transaction?

On some chains, your wallet can replace a pending transaction with one using the same nonce and a higher fee. This can help it get included sooner, but it does not restart a bridge transfer that already confirmed. Check the wallet’s replacement process and verify which transaction hash ultimately succeeded before taking another bridge action.

What if the source says success but the destination is empty?

Check the bridge’s message status using the source hash or message ID, then confirm the destination network and address. If the message is still awaiting finality or relay, wait and recheck. If the bridge marks destination execution as failed, use its documented recovery option; a successful source transaction alone does not prove destination delivery is complete.

Top comments (0)