What to use instead of the deprecated alchemy_simulate* methods

Last updated: August 25, 2026

The Transaction Simulation API family is being deprecated on September 30, 2026. This includes alchemy_simulateAssetChanges, alchemy_simulateExecution, alchemy_simulateAssetChangesBundle, alchemy_simulateUserOperationAssetChanges, and alchemy_simulateExecutionBundle. After that date these methods stop working. There is no direct 1:1 replacement for any of them, but the options below cover most use cases.

alchemy_simulateAssetChanges

  • If you only need to confirm a transaction would succeed (no revert), eth_call works as a lightweight check. It does not return an asset-change breakdown.

  • If you need the decoded asset or transfer breakdown (who received how much of a given token), the Transfers API (alchemy_getAssetTransfers) is the most practical option. It returns normalized transfer objects (from, to, value, asset, token) instead of requiring you to decode raw logs yourself. One caveat: it doesn't support filtering by a single transaction hash directly, so you'd scope the call to the transaction's block (optionally with address or token filters) and filter client-side by hash.

alchemy_simulateExecution

  • eth_simulateV1 - doesn't expose full execution traces, so it may not be a perfect drop-in if traces matter to your use case.

  • debug_traceCall with a callTracer tracer - more setup involved, but the closest fit if full execution traces are a hard requirement.

Related docs