refactor: deprecate transaction `history` and `sendFlowHistory` properties
Explanation
This PR deprecates the history and sendFlowHistory properties and all the code related.
Problem
Extension state size has been identified as a major root cause for the app becoming bricked, particularly for power users. Analysis by the platform team revealed that history and sendFlowHistory are among the biggest contributors to excessive state size, leading to frequent disk writes and the infinite spinner issue.
References
fixes https://github.com/MetaMask/MetaMask-planning/issues/2465
Checklist
- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
- [x] I've communicated my changes to consumers by updating changelogs for packages I've changed
- [ ] I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them
[!NOTE] Deprecates and removes internal transaction history and sendFlowHistory support, simplifies controller updates, and prunes related types, exports, and tests.
- TransactionController:
- Deprecate
disableHistoryanddisableSendFlowHistoryoptions; stop generating/updatingtransaction.history.- Remove history utilities and integration (
utils/history.tsand related calls); deleteskipHistorypaths and history notes; keep note only for logging.- Make
updateTransactionSendFlowHistorya no-op (deprecated).- Adjust gas/simulation and state updates to no longer touch history.
- Types:
- Mark
TransactionMeta.history,sendFlowHistory,TransactionHistory, andTransactionHistoryEntryas deprecated.- Public API:
- Remove
DISPLAYED_TRANSACTION_HISTORY_PATHSandMAX_TRANSACTION_HISTORY_LENGTHexports fromindex.ts.- Tests:
- Remove history/sendFlowHistory assertions and dedicated tests; update fixtures accordingly.
- Changelog:
- Note deprecation of
historyandsendFlowHistoryin Unreleased.Written by Cursor Bugbot for commit 1356913f3315897e288aa858313b3bb2d311f0e8. This will update automatically on new commits. Configure here.
@metamaskbot publish-preview
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": "4.0.0-preview-f557eade",
"@metamask-previews/accounts-controller": "35.0.0-preview-f557eade",
"@metamask-previews/address-book-controller": "7.0.1-preview-f557eade",
"@metamask-previews/analytics-controller": "0.0.0-preview-f557eade",
"@metamask-previews/announcement-controller": "8.0.0-preview-f557eade",
"@metamask-previews/app-metadata-controller": "2.0.0-preview-f557eade",
"@metamask-previews/approval-controller": "8.0.0-preview-f557eade",
"@metamask-previews/assets-controllers": "93.1.0-preview-f557eade",
"@metamask-previews/base-controller": "9.0.0-preview-f557eade",
"@metamask-previews/bridge-controller": "64.0.0-preview-f557eade",
"@metamask-previews/bridge-status-controller": "64.0.1-preview-f557eade",
"@metamask-previews/build-utils": "3.0.4-preview-f557eade",
"@metamask-previews/chain-agnostic-permission": "1.3.0-preview-f557eade",
"@metamask-previews/claims-controller": "0.2.0-preview-f557eade",
"@metamask-previews/composable-controller": "12.0.0-preview-f557eade",
"@metamask-previews/controller-utils": "11.16.0-preview-f557eade",
"@metamask-previews/core-backend": "5.0.0-preview-f557eade",
"@metamask-previews/delegation-controller": "2.0.0-preview-f557eade",
"@metamask-previews/earn-controller": "11.0.0-preview-f557eade",
"@metamask-previews/eip-5792-middleware": "2.0.0-preview-f557eade",
"@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-f557eade",
"@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-f557eade",
"@metamask-previews/ens-controller": "19.0.0-preview-f557eade",
"@metamask-previews/error-reporting-service": "3.0.0-preview-f557eade",
"@metamask-previews/eth-block-tracker": "15.0.0-preview-f557eade",
"@metamask-previews/eth-json-rpc-middleware": "22.0.0-preview-f557eade",
"@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-f557eade",
"@metamask-previews/foundryup": "1.0.1-preview-f557eade",
"@metamask-previews/gas-fee-controller": "26.0.0-preview-f557eade",
"@metamask-previews/gator-permissions-controller": "0.7.0-preview-f557eade",
"@metamask-previews/json-rpc-engine": "10.2.0-preview-f557eade",
"@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-f557eade",
"@metamask-previews/keyring-controller": "25.0.0-preview-f557eade",
"@metamask-previews/logging-controller": "7.0.1-preview-f557eade",
"@metamask-previews/message-manager": "14.1.0-preview-f557eade",
"@metamask-previews/messenger": "0.3.0-preview-f557eade",
"@metamask-previews/multichain-account-service": "4.0.0-preview-f557eade",
"@metamask-previews/multichain-api-middleware": "1.2.5-preview-f557eade",
"@metamask-previews/multichain-network-controller": "3.0.0-preview-f557eade",
"@metamask-previews/multichain-transactions-controller": "7.0.0-preview-f557eade",
"@metamask-previews/name-controller": "9.0.0-preview-f557eade",
"@metamask-previews/network-controller": "27.0.0-preview-f557eade",
"@metamask-previews/network-enablement-controller": "4.0.0-preview-f557eade",
"@metamask-previews/notification-services-controller": "21.0.0-preview-f557eade",
"@metamask-previews/permission-controller": "12.1.1-preview-f557eade",
"@metamask-previews/permission-log-controller": "5.0.0-preview-f557eade",
"@metamask-previews/phishing-controller": "16.1.0-preview-f557eade",
"@metamask-previews/polling-controller": "16.0.0-preview-f557eade",
"@metamask-previews/preferences-controller": "22.0.0-preview-f557eade",
"@metamask-previews/profile-metrics-controller": "1.0.0-preview-f557eade",
"@metamask-previews/profile-sync-controller": "27.0.0-preview-f557eade",
"@metamask-previews/rate-limit-controller": "7.0.0-preview-f557eade",
"@metamask-previews/remote-feature-flag-controller": "3.0.0-preview-f557eade",
"@metamask-previews/sample-controllers": "4.0.0-preview-f557eade",
"@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-f557eade",
"@metamask-previews/selected-network-controller": "26.0.0-preview-f557eade",
"@metamask-previews/shield-controller": "3.1.0-preview-f557eade",
"@metamask-previews/signature-controller": "37.0.0-preview-f557eade",
"@metamask-previews/storage-service": "0.0.0-preview-f557eade",
"@metamask-previews/subscription-controller": "5.4.0-preview-f557eade",
"@metamask-previews/token-search-discovery-controller": "4.0.0-preview-f557eade",
"@metamask-previews/transaction-controller": "62.5.0-preview-f557eade",
"@metamask-previews/transaction-pay-controller": "10.4.0-preview-f557eade",
"@metamask-previews/user-operation-controller": "41.0.0-preview-f557eade"
}
@metamaskbot publish-preview
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": "4.0.0-preview-d717276a",
"@metamask-previews/accounts-controller": "35.0.0-preview-d717276a",
"@metamask-previews/address-book-controller": "7.0.1-preview-d717276a",
"@metamask-previews/analytics-controller": "0.0.0-preview-d717276a",
"@metamask-previews/announcement-controller": "8.0.0-preview-d717276a",
"@metamask-previews/app-metadata-controller": "2.0.0-preview-d717276a",
"@metamask-previews/approval-controller": "8.0.0-preview-d717276a",
"@metamask-previews/assets-controllers": "93.1.0-preview-d717276a",
"@metamask-previews/base-controller": "9.0.0-preview-d717276a",
"@metamask-previews/bridge-controller": "64.1.0-preview-d717276a",
"@metamask-previews/bridge-status-controller": "64.1.0-preview-d717276a",
"@metamask-previews/build-utils": "3.0.4-preview-d717276a",
"@metamask-previews/chain-agnostic-permission": "1.3.0-preview-d717276a",
"@metamask-previews/claims-controller": "0.2.0-preview-d717276a",
"@metamask-previews/composable-controller": "12.0.0-preview-d717276a",
"@metamask-previews/controller-utils": "11.16.0-preview-d717276a",
"@metamask-previews/core-backend": "5.0.0-preview-d717276a",
"@metamask-previews/delegation-controller": "2.0.0-preview-d717276a",
"@metamask-previews/earn-controller": "11.0.0-preview-d717276a",
"@metamask-previews/eip-5792-middleware": "2.0.0-preview-d717276a",
"@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-d717276a",
"@metamask-previews/eip1193-permission-middleware": "1.0.3-preview-d717276a",
"@metamask-previews/ens-controller": "19.0.0-preview-d717276a",
"@metamask-previews/error-reporting-service": "3.0.0-preview-d717276a",
"@metamask-previews/eth-block-tracker": "15.0.0-preview-d717276a",
"@metamask-previews/eth-json-rpc-middleware": "22.0.1-preview-d717276a",
"@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-d717276a",
"@metamask-previews/foundryup": "1.0.1-preview-d717276a",
"@metamask-previews/gas-fee-controller": "26.0.0-preview-d717276a",
"@metamask-previews/gator-permissions-controller": "0.8.0-preview-d717276a",
"@metamask-previews/json-rpc-engine": "10.2.0-preview-d717276a",
"@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-d717276a",
"@metamask-previews/keyring-controller": "25.0.0-preview-d717276a",
"@metamask-previews/logging-controller": "7.0.1-preview-d717276a",
"@metamask-previews/message-manager": "14.1.0-preview-d717276a",
"@metamask-previews/messenger": "0.3.0-preview-d717276a",
"@metamask-previews/multichain-account-service": "4.0.1-preview-d717276a",
"@metamask-previews/multichain-api-middleware": "1.2.5-preview-d717276a",
"@metamask-previews/multichain-network-controller": "3.0.0-preview-d717276a",
"@metamask-previews/multichain-transactions-controller": "7.0.0-preview-d717276a",
"@metamask-previews/name-controller": "9.0.0-preview-d717276a",
"@metamask-previews/network-controller": "27.0.0-preview-d717276a",
"@metamask-previews/network-enablement-controller": "4.0.0-preview-d717276a",
"@metamask-previews/notification-services-controller": "21.0.0-preview-d717276a",
"@metamask-previews/permission-controller": "12.1.1-preview-d717276a",
"@metamask-previews/permission-log-controller": "5.0.0-preview-d717276a",
"@metamask-previews/phishing-controller": "16.1.0-preview-d717276a",
"@metamask-previews/polling-controller": "16.0.0-preview-d717276a",
"@metamask-previews/preferences-controller": "22.0.0-preview-d717276a",
"@metamask-previews/profile-metrics-controller": "1.0.0-preview-d717276a",
"@metamask-previews/profile-sync-controller": "27.0.0-preview-d717276a",
"@metamask-previews/rate-limit-controller": "7.0.0-preview-d717276a",
"@metamask-previews/remote-feature-flag-controller": "3.0.0-preview-d717276a",
"@metamask-previews/sample-controllers": "4.0.0-preview-d717276a",
"@metamask-previews/seedless-onboarding-controller": "7.1.0-preview-d717276a",
"@metamask-previews/selected-network-controller": "26.0.0-preview-d717276a",
"@metamask-previews/shield-controller": "4.0.0-preview-d717276a",
"@metamask-previews/signature-controller": "38.0.0-preview-d717276a",
"@metamask-previews/storage-service": "0.0.0-preview-d717276a",
"@metamask-previews/subscription-controller": "5.4.0-preview-d717276a",
"@metamask-previews/token-search-discovery-controller": "4.0.0-preview-d717276a",
"@metamask-previews/transaction-controller": "62.6.0-preview-d717276a",
"@metamask-previews/transaction-pay-controller": "10.5.0-preview-d717276a",
"@metamask-previews/user-operation-controller": "41.0.0-preview-d717276a"
}
Extension draft PR: https://github.com/MetaMask/metamask-extension/pull/38665