Skip to content

feat: after simulate and before sign hooks - #5503

Merged
matthewwalsh0 merged 8 commits into
mainfrom
feat/after-simulate-hook
Jun 12, 2025
Merged

feat: after simulate and before sign hooks#5503
matthewwalsh0 merged 8 commits into
mainfrom
feat/after-simulate-hook

Conversation

@matthewwalsh0

@matthewwalsh0matthewwalsh0 commented Mar 19, 2025

Copy link
Copy Markdown
Member

Explanation

Support afterSimulate and beforeSign hooks, including optional updateTransaction callbacks.

The afterSimulate hook can also return skipSimulation which will disable subsequent balance change simulation.

Plus:

  • Add optional containerTypes property to TransactionMeta.
  • Add TransactionControllerEstimateGasAction messenger action.
  • Add ignoreDelegationSignatures option to estimateGas method.
  • Ignore DelegationManager signature errors in simulation requests.

References

Fixes#5170

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've highlighted breaking changes using the "BREAKING" category above as appropriate
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

@matthewwalsh0

Copy link
Copy Markdown
MemberAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
"@metamask-previews/accounts-controller": "26.1.0-preview-39c90ec",
"@metamask-previews/address-book-controller": "6.0.3-preview-39c90ec",
"@metamask-previews/announcement-controller": "7.0.3-preview-39c90ec",
"@metamask-previews/approval-controller": "7.1.3-preview-39c90ec",
"@metamask-previews/assets-controllers": "54.0.0-preview-39c90ec",
"@metamask-previews/base-controller": "8.0.0-preview-39c90ec",
"@metamask-previews/bridge-controller": "8.0.0-preview-39c90ec",
"@metamask-previews/bridge-status-controller": "8.0.0-preview-39c90ec",
"@metamask-previews/build-utils": "3.0.3-preview-39c90ec",
"@metamask-previews/chain-agnostic-permission": "0.1.0-preview-39c90ec",
"@metamask-previews/composable-controller": "11.0.0-preview-39c90ec",
"@metamask-previews/controller-utils": "11.6.0-preview-39c90ec",
"@metamask-previews/earn-controller": "0.8.0-preview-39c90ec",
"@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-39c90ec",
"@metamask-previews/ens-controller": "15.0.2-preview-39c90ec",
"@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-39c90ec",
"@metamask-previews/gas-fee-controller": "22.0.3-preview-39c90ec",
"@metamask-previews/json-rpc-engine": "10.0.3-preview-39c90ec",
"@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-39c90ec",
"@metamask-previews/keyring-controller": "21.0.0-preview-39c90ec",
"@metamask-previews/logging-controller": "6.0.4-preview-39c90ec",
"@metamask-previews/message-manager": "12.0.1-preview-39c90ec",
"@metamask-previews/multichain": "4.0.0-preview-39c90ec",
"@metamask-previews/multichain-api-middleware": "0.1.0-preview-39c90ec",
"@metamask-previews/multichain-network-controller": "0.2.0-preview-39c90ec",
"@metamask-previews/multichain-transactions-controller": "0.7.2-preview-39c90ec",
"@metamask-previews/name-controller": "8.0.3-preview-39c90ec",
"@metamask-previews/network-controller": "22.2.1-preview-39c90ec",
"@metamask-previews/notification-services-controller": "3.0.0-preview-39c90ec",
"@metamask-previews/permission-controller": "11.0.6-preview-39c90ec",
"@metamask-previews/permission-log-controller": "3.0.3-preview-39c90ec",
"@metamask-previews/phishing-controller": "12.4.1-preview-39c90ec",
"@metamask-previews/polling-controller": "12.0.3-preview-39c90ec",
"@metamask-previews/preferences-controller": "17.0.0-preview-39c90ec",
"@metamask-previews/profile-sync-controller": "10.1.0-preview-39c90ec",
"@metamask-previews/queued-request-controller": "9.0.1-preview-39c90ec",
"@metamask-previews/rate-limit-controller": "6.0.3-preview-39c90ec",
"@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-39c90ec",
"@metamask-previews/sample-controllers": "0.0.0-preview-39c90ec",
"@metamask-previews/selected-network-controller": "21.0.1-preview-39c90ec",
"@metamask-previews/signature-controller": "26.0.0-preview-39c90ec",
"@metamask-previews/token-search-discovery-controller": "2.1.0-preview-39c90ec",
"@metamask-previews/transaction-controller": "50.0.0-preview-39c90ec",
"@metamask-previews/user-operation-controller": "29.0.0-preview-39c90ec"
}

@matthewwalsh0

Copy link
Copy Markdown
MemberAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
"@metamask-previews/accounts-controller": "26.1.0-preview-2eeab776",
"@metamask-previews/address-book-controller": "6.0.3-preview-2eeab776",
"@metamask-previews/announcement-controller": "7.0.3-preview-2eeab776",
"@metamask-previews/approval-controller": "7.1.3-preview-2eeab776",
"@metamask-previews/assets-controllers": "54.0.0-preview-2eeab776",
"@metamask-previews/base-controller": "8.0.0-preview-2eeab776",
"@metamask-previews/bridge-controller": "8.0.0-preview-2eeab776",
"@metamask-previews/bridge-status-controller": "8.0.0-preview-2eeab776",
"@metamask-previews/build-utils": "3.0.3-preview-2eeab776",
"@metamask-previews/chain-agnostic-permission": "0.1.0-preview-2eeab776",
"@metamask-previews/composable-controller": "11.0.0-preview-2eeab776",
"@metamask-previews/controller-utils": "11.6.0-preview-2eeab776",
"@metamask-previews/earn-controller": "0.8.0-preview-2eeab776",
"@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-2eeab776",
"@metamask-previews/ens-controller": "15.0.2-preview-2eeab776",
"@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-2eeab776",
"@metamask-previews/gas-fee-controller": "22.0.3-preview-2eeab776",
"@metamask-previews/json-rpc-engine": "10.0.3-preview-2eeab776",
"@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-2eeab776",
"@metamask-previews/keyring-controller": "21.0.0-preview-2eeab776",
"@metamask-previews/logging-controller": "6.0.4-preview-2eeab776",
"@metamask-previews/message-manager": "12.0.1-preview-2eeab776",
"@metamask-previews/multichain": "4.0.0-preview-2eeab776",
"@metamask-previews/multichain-api-middleware": "0.1.0-preview-2eeab776",
"@metamask-previews/multichain-network-controller": "0.2.0-preview-2eeab776",
"@metamask-previews/multichain-transactions-controller": "0.7.2-preview-2eeab776",
"@metamask-previews/name-controller": "8.0.3-preview-2eeab776",
"@metamask-previews/network-controller": "22.2.1-preview-2eeab776",
"@metamask-previews/notification-services-controller": "3.0.0-preview-2eeab776",
"@metamask-previews/permission-controller": "11.0.6-preview-2eeab776",
"@metamask-previews/permission-log-controller": "3.0.3-preview-2eeab776",
"@metamask-previews/phishing-controller": "12.4.1-preview-2eeab776",
"@metamask-previews/polling-controller": "12.0.3-preview-2eeab776",
"@metamask-previews/preferences-controller": "17.0.0-preview-2eeab776",
"@metamask-previews/profile-sync-controller": "10.1.0-preview-2eeab776",
"@metamask-previews/queued-request-controller": "9.0.1-preview-2eeab776",
"@metamask-previews/rate-limit-controller": "6.0.3-preview-2eeab776",
"@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-2eeab776",
"@metamask-previews/sample-controllers": "0.0.0-preview-2eeab776",
"@metamask-previews/selected-network-controller": "21.0.1-preview-2eeab776",
"@metamask-previews/signature-controller": "26.0.0-preview-2eeab776",
"@metamask-previews/token-search-discovery-controller": "2.1.0-preview-2eeab776",
"@metamask-previews/transaction-controller": "50.0.0-preview-2eeab776",
"@metamask-previews/user-operation-controller": "29.0.0-preview-2eeab776"
}

@matthewwalsh0
matthewwalsh0force-pushed the feat/after-simulate-hook branch 2 times, most recently from 1850f31 to 8c03250CompareJune 2, 2025 15:46
@matthewwalsh0matthewwalsh0 changed the title feat: after simulate hookfeat: after simulate and before sign hooksJun 9, 2025
@matthewwalsh0
matthewwalsh0force-pushed the feat/after-simulate-hook branch from 59d5e09 to 4d46a3eCompareJune 9, 2025 10:25
@matthewwalsh0
matthewwalsh0 marked this pull request as ready for review June 9, 2025 10:25
@matthewwalsh0
matthewwalsh0 requested review from a team as code ownersJune 9, 2025 10:25
@matthewwalsh0

Copy link
Copy Markdown
MemberAuthor

@metamaskbot publish-preview

1 similar comment
@matthewwalsh0

Copy link
Copy Markdown
MemberAuthor

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
"@metamask-previews/account-tree-controller": "0.1.0-preview-4d46a3e9",
"@metamask-previews/accounts-controller": "30.0.0-preview-4d46a3e9",
"@metamask-previews/address-book-controller": "6.1.0-preview-4d46a3e9",
"@metamask-previews/announcement-controller": "7.0.3-preview-4d46a3e9",
"@metamask-previews/app-metadata-controller": "1.0.0-preview-4d46a3e9",
"@metamask-previews/approval-controller": "7.1.3-preview-4d46a3e9",
"@metamask-previews/assets-controllers": "68.1.0-preview-4d46a3e9",
"@metamask-previews/base-controller": "8.0.1-preview-4d46a3e9",
"@metamask-previews/bridge-controller": "32.1.1-preview-4d46a3e9",
"@metamask-previews/bridge-status-controller": "29.1.0-preview-4d46a3e9",
"@metamask-previews/build-utils": "3.0.3-preview-4d46a3e9",
"@metamask-previews/chain-agnostic-permission": "0.7.0-preview-4d46a3e9",
"@metamask-previews/composable-controller": "11.0.0-preview-4d46a3e9",
"@metamask-previews/controller-utils": "11.10.0-preview-4d46a3e9",
"@metamask-previews/delegation-controller": "0.4.0-preview-4d46a3e9",
"@metamask-previews/earn-controller": "1.1.0-preview-4d46a3e9",
"@metamask-previews/eip1193-permission-middleware": "0.1.0-preview-4d46a3e9",
"@metamask-previews/ens-controller": "16.0.0-preview-4d46a3e9",
"@metamask-previews/error-reporting-service": "1.0.0-preview-4d46a3e9",
"@metamask-previews/eth-json-rpc-provider": "4.1.8-preview-4d46a3e9",
"@metamask-previews/foundryup": "1.0.0-preview-4d46a3e9",
"@metamask-previews/gas-fee-controller": "23.0.0-preview-4d46a3e9",
"@metamask-previews/json-rpc-engine": "10.0.3-preview-4d46a3e9",
"@metamask-previews/json-rpc-middleware-stream": "8.0.7-preview-4d46a3e9",
"@metamask-previews/keyring-controller": "22.0.2-preview-4d46a3e9",
"@metamask-previews/logging-controller": "6.0.4-preview-4d46a3e9",
"@metamask-previews/message-manager": "12.0.1-preview-4d46a3e9",
"@metamask-previews/multichain": "4.1.0-preview-4d46a3e9",
"@metamask-previews/multichain-api-middleware": "0.4.0-preview-4d46a3e9",
"@metamask-previews/multichain-network-controller": "0.8.0-preview-4d46a3e9",
"@metamask-previews/multichain-transactions-controller": "2.0.0-preview-4d46a3e9",
"@metamask-previews/name-controller": "8.0.3-preview-4d46a3e9",
"@metamask-previews/network-controller": "23.6.0-preview-4d46a3e9",
"@metamask-previews/notification-services-controller": "10.0.0-preview-4d46a3e9",
"@metamask-previews/permission-controller": "11.0.6-preview-4d46a3e9",
"@metamask-previews/permission-log-controller": "3.0.3-preview-4d46a3e9",
"@metamask-previews/phishing-controller": "12.5.0-preview-4d46a3e9",
"@metamask-previews/polling-controller": "13.0.0-preview-4d46a3e9",
"@metamask-previews/preferences-controller": "18.1.0-preview-4d46a3e9",
"@metamask-previews/profile-sync-controller": "17.0.0-preview-4d46a3e9",
"@metamask-previews/queued-request-controller": "10.0.0-preview-4d46a3e9",
"@metamask-previews/rate-limit-controller": "6.0.3-preview-4d46a3e9",
"@metamask-previews/remote-feature-flag-controller": "1.6.0-preview-4d46a3e9",
"@metamask-previews/sample-controllers": "0.1.0-preview-4d46a3e9",
"@metamask-previews/seedless-onboarding-controller": "1.0.0-preview-4d46a3e9",
"@metamask-previews/selected-network-controller": "22.1.0-preview-4d46a3e9",
"@metamask-previews/signature-controller": "30.0.0-preview-4d46a3e9",
"@metamask-previews/token-search-discovery-controller": "3.2.0-preview-4d46a3e9",
"@metamask-previews/transaction-controller": "57.2.0-preview-4d46a3e9",
"@metamask-previews/user-operation-controller": "36.0.0-preview-4d46a3e9"
}

OGPoyraz
OGPoyraz previously approved these changes Jun 11, 2025
pedronfigueiredo
pedronfigueiredo previously approved these changes Jun 11, 2025
@matthewwalsh0
matthewwalsh0force-pushed the feat/after-simulate-hook branch from 4d46a3e to 5dcf9a1CompareJune 12, 2025 08:37
@matthewwalsh0
matthewwalsh0 enabled auto-merge (squash) June 12, 2025 08:37
@matthewwalsh0
matthewwalsh0 merged commit 5e153a4 into mainJun 12, 2025
@matthewwalsh0
matthewwalsh0 deleted the feat/after-simulate-hook branch June 12, 2025 08:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@matthewwalsh0@OGPoyraz@pedronfigueiredo