core icon indicating copy to clipboard operation
core copied to clipboard

refactor: deprecate transaction `history` and `sendFlowHistory` properties

Open vinistevam opened this issue 2 months ago • 5 comments

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 disableHistory and disableSendFlowHistory options; stop generating/updating transaction.history.
    • Remove history utilities and integration (utils/history.ts and related calls); delete skipHistory paths and history notes; keep note only for logging.
    • Make updateTransactionSendFlowHistory a no-op (deprecated).
    • Adjust gas/simulation and state updates to no longer touch history.
  • Types:
    • Mark TransactionMeta.history, sendFlowHistory, TransactionHistory, and TransactionHistoryEntry as deprecated.
  • Public API:
    • Remove DISPLAYED_TRANSACTION_HISTORY_PATHS and MAX_TRANSACTION_HISTORY_LENGTH exports from index.ts.
  • Tests:
    • Remove history/sendFlowHistory assertions and dedicated tests; update fixtures accordingly.
  • Changelog:
    • Note deprecation of history and sendFlowHistory in Unreleased.

Written by Cursor Bugbot for commit 1356913f3315897e288aa858313b3bb2d311f0e8. This will update automatically on new commits. Configure here.

vinistevam avatar Dec 05 '25 14:12 vinistevam

@metamaskbot publish-preview

vinistevam avatar Dec 09 '25 06:12 vinistevam

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"
}

github-actions[bot] avatar Dec 09 '25 06:12 github-actions[bot]

@metamaskbot publish-preview

vinistevam avatar Dec 11 '25 06:12 vinistevam

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"
}

github-actions[bot] avatar Dec 11 '25 06:12 github-actions[bot]

Extension draft PR: https://github.com/MetaMask/metamask-extension/pull/38665

vinistevam avatar Dec 11 '25 13:12 vinistevam