From 0243f32ee4ce894050467c791261b5df009cd763 Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Mon, 6 Apr 2026 17:13:36 -0400 Subject: [PATCH 01/14] docs(wallets): add Tenderly debugging documentation page Create a new docs page covering both onchain and offchain Tenderly debugging workflows for the Transaction Lifecycle Dashboard. Convert the "Debug transactions" nav entry from a single page to a section with the new "Debug with Tenderly" sub-page. Linear: ALC-531 --- content/docs.yml | 6 +- .../debug-with-tenderly.mdx | 165 ++++++++++++++++++ 2 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx diff --git a/content/docs.yml b/content/docs.yml index d0986076b..b04c076b1 100644 --- a/content/docs.yml +++ b/content/docs.yml @@ -920,8 +920,12 @@ navigation: path: wallets/pages/transactions/send-batch-transactions/index.mdx - page: Parallel transactions path: wallets/pages/transactions/send-parallel-transactions/index.mdx - - page: Debug transactions + - section: Debug transactions path: wallets/pages/transactions/debug-transactions/index.mdx + collapsed: true + contents: + - page: Debug with Tenderly + path: wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx - page: How EIP-7702 works path: wallets/pages/transactions/using-eip-7702/index.mdx - section: Sponsor gas diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx new file mode 100644 index 000000000..b44126859 --- /dev/null +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -0,0 +1,165 @@ +--- +title: Debug with Tenderly +description: Use the Tenderly integration to debug onchain reverts and simulate offchain user operation failures directly from the Transaction Lifecycle Dashboard +slug: wallets/transactions/debug-transactions/debug-with-tenderly +--- + + + The Tenderly integration is available for customers on paying tiers (e.g. PAYG or Enterprise). + + +The Transaction Lifecycle Dashboard integrates with [Tenderly](https://tenderly.co/) to give you EVM-level visibility into failed Wallet API transactions. You can debug onchain reverts by opening the Tenderly [debugger](https://docs.tenderly.co/debugger), or simulate offchain failures using Tenderly's [simulation engine](https://docs.tenderly.co/simulations) to replay the user operation and inspect the execution trace. + +Two buttons appear in the transaction detail panel depending on the type of failure: + +- **Debug** -- Opens the Tenderly transaction debugger for onchain failures that already have a transaction hash +- **Simulate** -- Runs a Tenderly simulation for offchain failures where the user operation was rejected before reaching the network + +{/* TODO: Screenshot showing both Debug and Simulate buttons in the transaction detail panel */} + +## Prerequisites + +- An Alchemy account on a paying tier (PAYG or Enterprise) +- A transaction that failed through the Wallet API on a [supported network](#supported-networks) +- A free [Tenderly account](https://dashboard.tenderly.co/register) to access the full debugger interface (the simulation link is public, but the full debugger requires a Tenderly login) + +## Debug onchain failures + +When a transaction is included onchain but reverts (status: **Onchain Failure** or **Partial Failure**), the **Debug** button appears in the detail panel. This applies to transactions where the bundler submitted the user operation, it was mined, but execution reverted during the inner call. + + + + + +Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Onchain Failure** or **Partial Failure** status. Select the failed transaction to open the detail panel. + +{/* TODO: Screenshot of the log table filtered to onchain failures */} + + + + + +In the detail panel, locate the **Debug** button next to the failed step. The button only appears when the event has a transaction hash on a supported Tenderly network. + +{/* TODO: Screenshot of the Debug button in the detail panel */} + + + + + +Clicking **Debug** opens the [Tenderly Debugger](https://docs.tenderly.co/debugger) for that transaction in a new tab. From there you can: + +- Walk through the **execution trace** to see every call made during the transaction +- Inspect **state changes** to see how storage slots were modified +- View the **decoded call information** (function name, inputs, outputs, gas usage) for each step +- Identify the exact line of Solidity code where the revert occurred + +{/* TODO: Screenshot of the Tenderly debugger showing an execution trace */} + +See the [Tenderly Debugger documentation](https://docs.tenderly.co/debugger) for a full guide on navigating the execution trace and evaluating expressions. + + + + + +## Debug offchain failures + +When a `wallet_sendPreparedCalls` call fails before reaching the network (the bundler or EntryPoint rejects the user operation), the **Simulate** button appears instead. This covers cases where the error is a `UserOperationExecutionError` and no transaction hash exists. + +The simulation reconstructs the `handleOps` call that would have been submitted to the EntryPoint and runs it through Tenderly's simulation engine. This produces a full execution trace as if the transaction had been mined, allowing you to inspect what would have happened onchain. + + + + + +Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Offchain Failure** status. Select the failed transaction to open the detail panel. + +{/* TODO: Screenshot of the log table filtered to offchain failures */} + + + + + +In the detail panel, locate the **Simulate** button. The button appears on `wallet_sendPreparedCalls` events with a `UserOperationExecutionError` on a supported Tenderly network. + +{/* TODO: Screenshot of the Simulate button in the detail panel */} + + + + + +After clicking **Simulate**, a new browser tab opens and the button text changes to **Simulating...** while the simulation runs. The simulation typically completes within a few seconds. If the simulation fails or encounters an error, the tab closes automatically and an error message appears below the button. + + + + + +Once the simulation completes, the new tab redirects to a shared Tenderly [simulation page](https://docs.tenderly.co/simulations). From there you can: + +- View the **execution trace** showing every internal call, delegate call, and revert +- Check **decoded inputs and outputs** for each call frame +- Examine **state changes** to see what storage writes the transaction would have made +- Review the **gas breakdown** to understand where gas was consumed + +{/* TODO: Screenshot of a Tenderly simulation result page */} + +See the [Tenderly Simulations documentation](https://docs.tenderly.co/simulations) for a full guide on interpreting simulation results. + + + + + +## Supported networks + +The Debug and Simulate buttons are available on networks supported by both Alchemy and Tenderly. If the transaction occurred on an unsupported network, the buttons do not appear. + +| Network | Mainnet | Testnet | +| --- | --- | --- | +| Ethereum | Ethereum Mainnet | Sepolia | +| Polygon | Polygon PoS | Amoy | +| Arbitrum | Arbitrum One | Arbitrum Sepolia | +| Optimism | OP Mainnet | OP Sepolia | +| Base | Base | Base Sepolia | +| Avalanche | Avalanche C-Chain | Fuji | +| BNB Chain | BNB Smart Chain | BNB Testnet | +| Gnosis | Gnosis Chain | -- | +| Linea | Linea Mainnet | Linea Sepolia | +| Scroll | Scroll | Scroll Sepolia | +| Blast | Blast | Blast Sepolia | +| zkSync | zkSync Era | zkSync Sepolia | +| Fantom | Fantom Opera | -- | +| Polygon zkEVM | Polygon zkEVM | -- | + +## Rate limits + +Offchain simulation (the **Simulate** button) is rate-limited to **10 simulations per team per hour**. This limit applies across all team members and apps. Simulation results are cached for 24 hours, so clicking **Simulate** again for the same event reuses the cached result without counting toward the limit. + +If you hit the rate limit, the button displays a "Simulation rate limit reached. Try again later." message. Wait for the hourly window to reset before running more simulations. + +The **Debug** button for onchain failures is not rate-limited because it links directly to Tenderly without making an API call. + +## Troubleshooting + + + The buttons require: (1) a supported Tenderly network, (2) the correct failure type (onchain revert for Debug, offchain `UserOperationExecutionError` for Simulate), and (3) an active Alchemy paying tier. If the transaction is on an unsupported network or the failure type does not match, the buttons are hidden. Check the [supported networks table](#supported-networks) and verify the transaction status in the detail panel. + + + + Each team is limited to 10 simulations per hour. Cached simulations (same call ID and event timestamp) do not count toward the limit. Wait for the hourly window to reset, or check if the same simulation was already run by another team member. + + + + If the simulation encounters an unexpected error (e.g., the user operation could not be decoded or the Tenderly API returned an error), a "Simulation failed. Try again." message appears below the button. Try clicking **Simulate** again. If the error persists, check that the request payload in the transaction detail panel contains a valid user operation. + + + + The shared simulation link is publicly accessible without a Tenderly account. The full Tenderly transaction debugger (used by the Debug button for onchain failures) requires a free Tenderly account. Sign up at [dashboard.tenderly.co/register](https://dashboard.tenderly.co/register). + + +## Next steps + +- [Debug transactions](/docs/wallets/transactions/debug-transactions) -- Overview of the Transaction Lifecycle Dashboard and AI error explanations +- [Send transactions](/docs/wallets/transactions/send-transactions) -- How to send Wallet API transactions +- [Common errors](/docs/wallets/resources/faqs#common-errors) -- Reference for frequently encountered issues +- [Tenderly Debugger documentation](https://docs.tenderly.co/debugger) -- Full guide on using the Tenderly transaction debugger +- [Tenderly Simulations documentation](https://docs.tenderly.co/simulations) -- Full guide on running and interpreting transaction simulations From 241d18f4f57b1499f6837449f823d66797726d73 Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Mon, 6 Apr 2026 17:19:20 -0400 Subject: [PATCH 02/14] fix(wallets): correct Tenderly simulation docs URL Update links from docs.tenderly.co/simulations to docs.tenderly.co/simulator-ui to match the actual Tenderly docs page. --- .../debug-transactions/debug-with-tenderly.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index b44126859..6559ae759 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -8,7 +8,7 @@ slug: wallets/transactions/debug-transactions/debug-with-tenderly The Tenderly integration is available for customers on paying tiers (e.g. PAYG or Enterprise). -The Transaction Lifecycle Dashboard integrates with [Tenderly](https://tenderly.co/) to give you EVM-level visibility into failed Wallet API transactions. You can debug onchain reverts by opening the Tenderly [debugger](https://docs.tenderly.co/debugger), or simulate offchain failures using Tenderly's [simulation engine](https://docs.tenderly.co/simulations) to replay the user operation and inspect the execution trace. +The Transaction Lifecycle Dashboard integrates with [Tenderly](https://tenderly.co/) to give you EVM-level visibility into failed Wallet API transactions. You can debug onchain reverts by opening the Tenderly [debugger](https://docs.tenderly.co/debugger), or simulate offchain failures using Tenderly's [Simulator UI](https://docs.tenderly.co/simulator-ui) to replay the user operation and inspect the execution trace. Two buttons appear in the transaction detail panel depending on the type of failure: @@ -94,7 +94,7 @@ After clicking **Simulate**, a new browser tab opens and the button text changes -Once the simulation completes, the new tab redirects to a shared Tenderly [simulation page](https://docs.tenderly.co/simulations). From there you can: +Once the simulation completes, the new tab redirects to a shared Tenderly [simulation page](https://docs.tenderly.co/simulator-ui). From there you can: - View the **execution trace** showing every internal call, delegate call, and revert - Check **decoded inputs and outputs** for each call frame @@ -103,7 +103,7 @@ Once the simulation completes, the new tab redirects to a shared Tenderly [simul {/* TODO: Screenshot of a Tenderly simulation result page */} -See the [Tenderly Simulations documentation](https://docs.tenderly.co/simulations) for a full guide on interpreting simulation results. +See the [Tenderly Simulator UI documentation](https://docs.tenderly.co/simulator-ui) for a full guide on interpreting simulation results. @@ -162,4 +162,4 @@ The **Debug** button for onchain failures is not rate-limited because it links d - [Send transactions](/docs/wallets/transactions/send-transactions) -- How to send Wallet API transactions - [Common errors](/docs/wallets/resources/faqs#common-errors) -- Reference for frequently encountered issues - [Tenderly Debugger documentation](https://docs.tenderly.co/debugger) -- Full guide on using the Tenderly transaction debugger -- [Tenderly Simulations documentation](https://docs.tenderly.co/simulations) -- Full guide on running and interpreting transaction simulations +- [Tenderly Simulator UI documentation](https://docs.tenderly.co/simulator-ui) -- Full guide on running and interpreting transaction simulations From 42ff48135c3bbf1443e9dfad9e042101d386ee90 Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Mon, 6 Apr 2026 17:22:49 -0400 Subject: [PATCH 03/14] docs(wallets): remove rate limits section from Tenderly page --- .../debug-transactions/debug-with-tenderly.mdx | 8 -------- 1 file changed, 8 deletions(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index 6559ae759..cf6e82dc0 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -130,14 +130,6 @@ The Debug and Simulate buttons are available on networks supported by both Alche | Fantom | Fantom Opera | -- | | Polygon zkEVM | Polygon zkEVM | -- | -## Rate limits - -Offchain simulation (the **Simulate** button) is rate-limited to **10 simulations per team per hour**. This limit applies across all team members and apps. Simulation results are cached for 24 hours, so clicking **Simulate** again for the same event reuses the cached result without counting toward the limit. - -If you hit the rate limit, the button displays a "Simulation rate limit reached. Try again later." message. Wait for the hourly window to reset before running more simulations. - -The **Debug** button for onchain failures is not rate-limited because it links directly to Tenderly without making an API call. - ## Troubleshooting From 289a5beaa14135f6eb4656d143d6235892aace49 Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Mon, 6 Apr 2026 17:24:11 -0400 Subject: [PATCH 04/14] docs(wallets): replace em dashes with colons in Tenderly page --- .../debug-with-tenderly.mdx | 118 ++++++++---------- 1 file changed, 50 insertions(+), 68 deletions(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index cf6e82dc0..22165a776 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -12,54 +12,46 @@ The Transaction Lifecycle Dashboard integrates with [Tenderly](https://tenderly. Two buttons appear in the transaction detail panel depending on the type of failure: -- **Debug** -- Opens the Tenderly transaction debugger for onchain failures that already have a transaction hash -- **Simulate** -- Runs a Tenderly simulation for offchain failures where the user operation was rejected before reaching the network +* **Debug**: Opens the Tenderly transaction debugger for onchain failures that already have a transaction hash +* **Simulate**: Runs a Tenderly simulation for offchain failures where the user operation was rejected before reaching the network {/* TODO: Screenshot showing both Debug and Simulate buttons in the transaction detail panel */} ## Prerequisites -- An Alchemy account on a paying tier (PAYG or Enterprise) -- A transaction that failed through the Wallet API on a [supported network](#supported-networks) -- A free [Tenderly account](https://dashboard.tenderly.co/register) to access the full debugger interface (the simulation link is public, but the full debugger requires a Tenderly login) +* An Alchemy account on a paying tier (PAYG or Enterprise) +* A transaction that failed through the Wallet API on a [supported network](#supported-networks) +* A free [Tenderly account](https://dashboard.tenderly.co/register) to access the full debugger interface (the simulation link is public, but the full debugger requires a Tenderly login) ## Debug onchain failures When a transaction is included onchain but reverts (status: **Onchain Failure** or **Partial Failure**), the **Debug** button appears in the detail panel. This applies to transactions where the bundler submitted the user operation, it was mined, but execution reverted during the inner call. + + Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Onchain Failure** or **Partial Failure** status. Select the failed transaction to open the detail panel. - + {/* TODO: Screenshot of the log table filtered to onchain failures */} + -Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Onchain Failure** or **Partial Failure** status. Select the failed transaction to open the detail panel. + + In the detail panel, locate the **Debug** button next to the failed step. The button only appears when the event has a transaction hash on a supported Tenderly network. -{/* TODO: Screenshot of the log table filtered to onchain failures */} + {/* TODO: Screenshot of the Debug button in the detail panel */} + - + + Clicking **Debug** opens the [Tenderly Debugger](https://docs.tenderly.co/debugger) for that transaction in a new tab. From there you can: - + * Walk through the **execution trace** to see every call made during the transaction + * Inspect **state changes** to see how storage slots were modified + * View the **decoded call information** (function name, inputs, outputs, gas usage) for each step + * Identify the exact line of Solidity code where the revert occurred -In the detail panel, locate the **Debug** button next to the failed step. The button only appears when the event has a transaction hash on a supported Tenderly network. - -{/* TODO: Screenshot of the Debug button in the detail panel */} - - - - - -Clicking **Debug** opens the [Tenderly Debugger](https://docs.tenderly.co/debugger) for that transaction in a new tab. From there you can: - -- Walk through the **execution trace** to see every call made during the transaction -- Inspect **state changes** to see how storage slots were modified -- View the **decoded call information** (function name, inputs, outputs, gas usage) for each step -- Identify the exact line of Solidity code where the revert occurred - -{/* TODO: Screenshot of the Tenderly debugger showing an execution trace */} - -See the [Tenderly Debugger documentation](https://docs.tenderly.co/debugger) for a full guide on navigating the execution trace and evaluating expressions. - - + {/* TODO: Screenshot of the Tenderly debugger showing an execution trace */} + See the [Tenderly Debugger documentation](https://docs.tenderly.co/debugger) for a full guide on navigating the execution trace and evaluating expressions. + ## Debug offchain failures @@ -69,44 +61,34 @@ When a `wallet_sendPreparedCalls` call fails before reaching the network (the bu The simulation reconstructs the `handleOps` call that would have been submitted to the EntryPoint and runs it through Tenderly's simulation engine. This produces a full execution trace as if the transaction had been mined, allowing you to inspect what would have happened onchain. + + Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Offchain Failure** status. Select the failed transaction to open the detail panel. - - -Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Offchain Failure** status. Select the failed transaction to open the detail panel. - -{/* TODO: Screenshot of the log table filtered to offchain failures */} - - - - - -In the detail panel, locate the **Simulate** button. The button appears on `wallet_sendPreparedCalls` events with a `UserOperationExecutionError` on a supported Tenderly network. - -{/* TODO: Screenshot of the Simulate button in the detail panel */} - - - - - -After clicking **Simulate**, a new browser tab opens and the button text changes to **Simulating...** while the simulation runs. The simulation typically completes within a few seconds. If the simulation fails or encounters an error, the tab closes automatically and an error message appears below the button. - - + {/* TODO: Screenshot of the log table filtered to offchain failures */} + - + + In the detail panel, locate the **Simulate** button. The button appears on `wallet_sendPreparedCalls` events with a `UserOperationExecutionError` on a supported Tenderly network. -Once the simulation completes, the new tab redirects to a shared Tenderly [simulation page](https://docs.tenderly.co/simulator-ui). From there you can: + {/* TODO: Screenshot of the Simulate button in the detail panel */} + -- View the **execution trace** showing every internal call, delegate call, and revert -- Check **decoded inputs and outputs** for each call frame -- Examine **state changes** to see what storage writes the transaction would have made -- Review the **gas breakdown** to understand where gas was consumed + + After clicking **Simulate**, a new browser tab opens and the button text changes to **Simulating...** while the simulation runs. The simulation typically completes within a few seconds. If the simulation fails or encounters an error, the tab closes automatically and an error message appears below the button. + -{/* TODO: Screenshot of a Tenderly simulation result page */} + + Once the simulation completes, the new tab redirects to a shared Tenderly [simulation page](https://docs.tenderly.co/simulator-ui). From there you can: -See the [Tenderly Simulator UI documentation](https://docs.tenderly.co/simulator-ui) for a full guide on interpreting simulation results. + * View the **execution trace** showing every internal call, delegate call, and revert + * Check **decoded inputs and outputs** for each call frame + * Examine **state changes** to see what storage writes the transaction would have made + * Review the **gas breakdown** to understand where gas was consumed - + {/* TODO: Screenshot of a Tenderly simulation result page */} + See the [Tenderly Simulator UI documentation](https://docs.tenderly.co/simulator-ui) for a full guide on interpreting simulation results. + ## Supported networks @@ -122,13 +104,13 @@ The Debug and Simulate buttons are available on networks supported by both Alche | Base | Base | Base Sepolia | | Avalanche | Avalanche C-Chain | Fuji | | BNB Chain | BNB Smart Chain | BNB Testnet | -| Gnosis | Gnosis Chain | -- | +| Gnosis | Gnosis Chain | - | | Linea | Linea Mainnet | Linea Sepolia | | Scroll | Scroll | Scroll Sepolia | | Blast | Blast | Blast Sepolia | | zkSync | zkSync Era | zkSync Sepolia | -| Fantom | Fantom Opera | -- | -| Polygon zkEVM | Polygon zkEVM | -- | +| Fantom | Fantom Opera | - | +| Polygon zkEVM | Polygon zkEVM | - | ## Troubleshooting @@ -150,8 +132,8 @@ The Debug and Simulate buttons are available on networks supported by both Alche ## Next steps -- [Debug transactions](/docs/wallets/transactions/debug-transactions) -- Overview of the Transaction Lifecycle Dashboard and AI error explanations -- [Send transactions](/docs/wallets/transactions/send-transactions) -- How to send Wallet API transactions -- [Common errors](/docs/wallets/resources/faqs#common-errors) -- Reference for frequently encountered issues -- [Tenderly Debugger documentation](https://docs.tenderly.co/debugger) -- Full guide on using the Tenderly transaction debugger -- [Tenderly Simulator UI documentation](https://docs.tenderly.co/simulator-ui) -- Full guide on running and interpreting transaction simulations +* [Debug transactions](/docs/wallets/transactions/debug-transactions): Overview of the Transaction Lifecycle Dashboard and AI error explanations +* [Send transactions](/docs/wallets/transactions/send-transactions): How to send Wallet API transactions +* [Common errors](/docs/wallets/resources/faqs#common-errors): Reference for frequently encountered issues +* [Tenderly Debugger documentation](https://docs.tenderly.co/debugger): Full guide on using the Tenderly transaction debugger +* [Tenderly Simulator UI documentation](https://docs.tenderly.co/simulator-ui): Full guide on running and interpreting transaction simulations From 90db3111ce81f13bad281aed5b4a0c7216837004 Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Tue, 7 Apr 2026 14:22:44 -0400 Subject: [PATCH 05/14] fix(wallets): correct filter status to Send Failed for simulation flow --- .../transactions/debug-transactions/debug-with-tenderly.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index 22165a776..228681a73 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -62,9 +62,9 @@ The simulation reconstructs the `handleOps` call that would have been submitted - Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Offchain Failure** status. Select the failed transaction to open the detail panel. + Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Send Failed** status. Select the failed transaction to open the detail panel. - {/* TODO: Screenshot of the log table filtered to offchain failures */} + {/* TODO: Screenshot of the log table filtered to send failures */} From 1644b21c17763c561f77ecb5de7d8b7b42c2cf0a Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Tue, 7 Apr 2026 14:24:40 -0400 Subject: [PATCH 06/14] docs(wallets): add Simulate button screenshot to Tenderly page --- .../transactions/debug-transactions/debug-with-tenderly.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index 228681a73..318644b98 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -70,7 +70,7 @@ The simulation reconstructs the `handleOps` call that would have been submitted In the detail panel, locate the **Simulate** button. The button appears on `wallet_sendPreparedCalls` events with a `UserOperationExecutionError` on a supported Tenderly network. - {/* TODO: Screenshot of the Simulate button in the detail panel */} + Simulate button in the Wallet API Log detail panel From 2a8996f47d2622db733dfaeb2332b302e851d7fe Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Tue, 7 Apr 2026 14:26:11 -0400 Subject: [PATCH 07/14] docs(wallets): add Tenderly simulation result screenshot --- .../transactions/debug-transactions/debug-with-tenderly.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index 318644b98..8437a7b1c 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -85,7 +85,7 @@ The simulation reconstructs the `handleOps` call that would have been submitted * Examine **state changes** to see what storage writes the transaction would have made * Review the **gas breakdown** to understand where gas was consumed - {/* TODO: Screenshot of a Tenderly simulation result page */} + Tenderly simulation result page showing execution trace See the [Tenderly Simulator UI documentation](https://docs.tenderly.co/simulator-ui) for a full guide on interpreting simulation results. From 238766f2be5aaf81b56fc58111fa8f99e38688e3 Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Tue, 7 Apr 2026 14:28:35 -0400 Subject: [PATCH 08/14] docs(wallets): add Send Failed filter screenshot --- .../transactions/debug-transactions/debug-with-tenderly.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index 8437a7b1c..5ff48e093 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -64,7 +64,7 @@ The simulation reconstructs the `handleOps` call that would have been submitted Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Send Failed** status. Select the failed transaction to open the detail panel. - {/* TODO: Screenshot of the log table filtered to send failures */} + Transaction Lifecycle Dashboard filtered to Send Failed status From 75db69dad142830be0f357c6cdeeb196a7271bf0 Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Tue, 7 Apr 2026 14:33:28 -0400 Subject: [PATCH 09/14] docs(wallets): add Tenderly debugger execution trace screenshot --- .../transactions/debug-transactions/debug-with-tenderly.mdx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index 5ff48e093..1b26ce34d 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -15,8 +15,6 @@ Two buttons appear in the transaction detail panel depending on the type of fail * **Debug**: Opens the Tenderly transaction debugger for onchain failures that already have a transaction hash * **Simulate**: Runs a Tenderly simulation for offchain failures where the user operation was rejected before reaching the network -{/* TODO: Screenshot showing both Debug and Simulate buttons in the transaction detail panel */} - ## Prerequisites * An Alchemy account on a paying tier (PAYG or Enterprise) @@ -48,7 +46,7 @@ When a transaction is included onchain but reverts (status: **Onchain Failure** * View the **decoded call information** (function name, inputs, outputs, gas usage) for each step * Identify the exact line of Solidity code where the revert occurred - {/* TODO: Screenshot of the Tenderly debugger showing an execution trace */} + Tenderly debugger showing an execution trace See the [Tenderly Debugger documentation](https://docs.tenderly.co/debugger) for a full guide on navigating the execution trace and evaluating expressions. From 7f7c562e6421c54a0592770d0ae42fe32d0d560f Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Tue, 7 Apr 2026 14:37:24 -0400 Subject: [PATCH 10/14] fix(wallets): remove indentation on img tags inside Step components --- .../debug-transactions/debug-with-tenderly.mdx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index 1b26ce34d..17b05cccb 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -46,7 +46,8 @@ When a transaction is included onchain but reverts (status: **Onchain Failure** * View the **decoded call information** (function name, inputs, outputs, gas usage) for each step * Identify the exact line of Solidity code where the revert occurred - Tenderly debugger showing an execution trace + +Tenderly debugger showing an execution trace See the [Tenderly Debugger documentation](https://docs.tenderly.co/debugger) for a full guide on navigating the execution trace and evaluating expressions. @@ -62,13 +63,15 @@ The simulation reconstructs the `handleOps` call that would have been submitted Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Send Failed** status. Select the failed transaction to open the detail panel. - Transaction Lifecycle Dashboard filtered to Send Failed status + +Transaction Lifecycle Dashboard filtered to Send Failed status In the detail panel, locate the **Simulate** button. The button appears on `wallet_sendPreparedCalls` events with a `UserOperationExecutionError` on a supported Tenderly network. - Simulate button in the Wallet API Log detail panel + +Simulate button in the Wallet API Log detail panel @@ -83,7 +86,8 @@ The simulation reconstructs the `handleOps` call that would have been submitted * Examine **state changes** to see what storage writes the transaction would have made * Review the **gas breakdown** to understand where gas was consumed - Tenderly simulation result page showing execution trace + +Tenderly simulation result page showing execution trace See the [Tenderly Simulator UI documentation](https://docs.tenderly.co/simulator-ui) for a full guide on interpreting simulation results. From 9560652108684ccf6238ba4a1ebf1f0cdf9d5666 Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Tue, 7 Apr 2026 14:50:55 -0400 Subject: [PATCH 11/14] docs(wallets): add onchain failure filter and Debug button screenshots --- .../debug-transactions/debug-with-tenderly.mdx | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index 17b05cccb..1941c6672 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -29,13 +29,13 @@ When a transaction is included onchain but reverts (status: **Onchain Failure** Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Onchain Failure** or **Partial Failure** status. Select the failed transaction to open the detail panel. - {/* TODO: Screenshot of the log table filtered to onchain failures */} + Transaction Lifecycle Dashboard filtered to Onchain Failure status In the detail panel, locate the **Debug** button next to the failed step. The button only appears when the event has a transaction hash on a supported Tenderly network. - {/* TODO: Screenshot of the Debug button in the detail panel */} + Debug button in the Wallet API Log detail panel @@ -46,8 +46,7 @@ When a transaction is included onchain but reverts (status: **Onchain Failure** * View the **decoded call information** (function name, inputs, outputs, gas usage) for each step * Identify the exact line of Solidity code where the revert occurred - -Tenderly debugger showing an execution trace + Tenderly debugger showing an execution trace See the [Tenderly Debugger documentation](https://docs.tenderly.co/debugger) for a full guide on navigating the execution trace and evaluating expressions. @@ -63,15 +62,13 @@ The simulation reconstructs the `handleOps` call that would have been submitted Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Send Failed** status. Select the failed transaction to open the detail panel. - -Transaction Lifecycle Dashboard filtered to Send Failed status + Transaction Lifecycle Dashboard filtered to Send Failed status In the detail panel, locate the **Simulate** button. The button appears on `wallet_sendPreparedCalls` events with a `UserOperationExecutionError` on a supported Tenderly network. - -Simulate button in the Wallet API Log detail panel + Simulate button in the Wallet API Log detail panel @@ -86,8 +83,7 @@ The simulation reconstructs the `handleOps` call that would have been submitted * Examine **state changes** to see what storage writes the transaction would have made * Review the **gas breakdown** to understand where gas was consumed - -Tenderly simulation result page showing execution trace + Tenderly simulation result page showing execution trace See the [Tenderly Simulator UI documentation](https://docs.tenderly.co/simulator-ui) for a full guide on interpreting simulation results. From 2dff328d7d30a3d5abc0ee636076dd476ffe363a Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Tue, 7 Apr 2026 14:58:18 -0400 Subject: [PATCH 12/14] docs(wallets): clean up inline links and button text in Tenderly page --- .../transactions/debug-transactions/debug-with-tenderly.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index 1941c6672..68d0ed1ac 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -39,7 +39,7 @@ When a transaction is included onchain but reverts (status: **Onchain Failure** - Clicking **Debug** opens the [Tenderly Debugger](https://docs.tenderly.co/debugger) for that transaction in a new tab. From there you can: + Clicking **Debug** opens the Tenderly Debugger for that transaction in a new tab. From there you can: * Walk through the **execution trace** to see every call made during the transaction * Inspect **state changes** to see how storage slots were modified @@ -72,11 +72,11 @@ The simulation reconstructs the `handleOps` call that would have been submitted - After clicking **Simulate**, a new browser tab opens and the button text changes to **Simulating...** while the simulation runs. The simulation typically completes within a few seconds. If the simulation fails or encounters an error, the tab closes automatically and an error message appears below the button. + After clicking **Simulate**, a new browser tab opens while the simulation runs. The simulation typically completes within a few seconds. If the simulation fails or encounters an error, the tab closes automatically and an error message appears below the button. - Once the simulation completes, the new tab redirects to a shared Tenderly [simulation page](https://docs.tenderly.co/simulator-ui). From there you can: + Once the simulation completes, the new tab redirects to a shared Tenderly simulation page. From there you can: * View the **execution trace** showing every internal call, delegate call, and revert * Check **decoded inputs and outputs** for each call frame From 6255ecf556eeb6c21f4cea1161ae6a6a20f73fb4 Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Fri, 10 Apr 2026 13:31:13 -0400 Subject: [PATCH 13/14] docs(wallets): add "when to use" guidance for Debug and Simulate buttons Help developers understand which errors benefit from Tenderly's execution trace (opaque revert data, generic reverts, third-party contract errors, batch failures) and update the Simulate button screenshot. --- .../debug-transactions/debug-with-tenderly.mdx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index 68d0ed1ac..ec20fdcba 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -25,6 +25,12 @@ Two buttons appear in the transaction detail panel depending on the type of fail When a transaction is included onchain but reverts (status: **Onchain Failure** or **Partial Failure**), the **Debug** button appears in the detail panel. This applies to transactions where the bundler submitted the user operation, it was mined, but execution reverted during the inner call. +Use **Debug** when: + +* The transaction reverted with a generic `execution reverted` and no reason string — the debugger shows exactly which nested call failed and why. +* A third-party contract (a DEX, NFT marketplace, or lending protocol) reverted with a custom error — the debugger decodes the function call, inputs, and the exact point of failure. +* A batched transaction with multiple calls reverted, and you need to identify which call in the batch caused the revert. + Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Onchain Failure** or **Partial Failure** status. Select the failed transaction to open the detail panel. @@ -58,6 +64,12 @@ When a `wallet_sendPreparedCalls` call fails before reaching the network (the bu The simulation reconstructs the `handleOps` call that would have been submitted to the EntryPoint and runs it through Tenderly's simulation engine. This produces a full execution trace as if the transaction had been mined, allowing you to inspect what would have happened onchain. +Use **Simulate** when: + +* The error contains opaque revert data (e.g., `0x7939f424`) instead of a human-readable reason — the simulation decodes the full execution trace and identifies which contract emitted the error. +* The smart account's validation reverted with a generic reason like `AA23 reverted` — the simulation shows what happened inside `validateUserOp` so you can pinpoint the failing check. +* The error is `execution reverted` with empty revert data (`0x`) — without a trace, there's no way to tell which call failed or why. The simulation reconstructs the execution and reveals the root cause. + Open the [Transaction Lifecycle Dashboard](https://dashboard.alchemy.com/logs/wallet-api) and filter by **Send Failed** status. Select the failed transaction to open the detail panel. @@ -68,7 +80,7 @@ The simulation reconstructs the `handleOps` call that would have been submitted In the detail panel, locate the **Simulate** button. The button appears on `wallet_sendPreparedCalls` events with a `UserOperationExecutionError` on a supported Tenderly network. - Simulate button in the Wallet API Log detail panel + Simulate button in the Wallet API Log detail panel From 3bae93cbd85a2ca1c38afd91ab935a0a16fc685a Mon Sep 17 00:00:00 2001 From: Richard Dang Date: Fri, 10 Apr 2026 13:36:36 -0400 Subject: [PATCH 14/14] docs(wallets): use proper h3 headers for "when to use" sections --- .../transactions/debug-transactions/debug-with-tenderly.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx index ec20fdcba..6cce131d0 100644 --- a/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx +++ b/content/wallets/pages/transactions/debug-transactions/debug-with-tenderly.mdx @@ -25,7 +25,7 @@ Two buttons appear in the transaction detail panel depending on the type of fail When a transaction is included onchain but reverts (status: **Onchain Failure** or **Partial Failure**), the **Debug** button appears in the detail panel. This applies to transactions where the bundler submitted the user operation, it was mined, but execution reverted during the inner call. -Use **Debug** when: +### When to use Debug * The transaction reverted with a generic `execution reverted` and no reason string — the debugger shows exactly which nested call failed and why. * A third-party contract (a DEX, NFT marketplace, or lending protocol) reverted with a custom error — the debugger decodes the function call, inputs, and the exact point of failure. @@ -64,7 +64,7 @@ When a `wallet_sendPreparedCalls` call fails before reaching the network (the bu The simulation reconstructs the `handleOps` call that would have been submitted to the EntryPoint and runs it through Tenderly's simulation engine. This produces a full execution trace as if the transaction had been mined, allowing you to inspect what would have happened onchain. -Use **Simulate** when: +### When to use Simulate * The error contains opaque revert data (e.g., `0x7939f424`) instead of a human-readable reason — the simulation decodes the full execution trace and identifies which contract emitted the error. * The smart account's validation reverted with a generic reason like `AA23 reverted` — the simulation shows what happened inside `validateUserOp` so you can pinpoint the failing check. @@ -80,7 +80,7 @@ Use **Simulate** when: In the detail panel, locate the **Simulate** button. The button appears on `wallet_sendPreparedCalls` events with a `UserOperationExecutionError` on a supported Tenderly network. - Simulate button in the Wallet API Log detail panel + Simulate button in the Wallet API Log detail panel