Skip to content

Conversation

@vinistevam
Copy link
Contributor

@vinistevam vinistevam commented Dec 5, 2025

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

  • 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 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 history/sendFlowHistory, removes history utilities/exports, makes history updates no-ops, and updates controller, types, and tests accordingly.

  • Transaction Controller:
    • Remove reliance on utils/history (addInitialHistorySnapshot, updateTransactionHistory); stop recording mutation history.
    • Deprecate options disableHistory and disableSendFlowHistory (kept for backward compatibility; no longer used).
    • Make updateTransactionSendFlowHistory a no-op returning the transaction unchanged.
    • Simplify internal updates by dropping history-related parameters (e.g., skipHistory, history notes now just logged).
    • Keep behavior otherwise intact (simulation, gas updates, events, etc.).
  • Types/Exports:
    • Mark TransactionMeta.history, sendFlowHistory, TransactionHistory, and TransactionHistoryEntry as deprecated.
    • Remove exports DISPLAYED_TRANSACTION_HISTORY_PATHS and MAX_TRANSACTION_HISTORY_LENGTH from package index.
  • Tests:
    • Remove history-related expectations and tests; adjust to new no-history behavior.
  • Changelog:
    • Document deprecation of history and sendFlowHistory.

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

@vinistevam
Copy link
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

github-actions bot commented Dec 9, 2025

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

@vinistevam
Copy link
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
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": "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"
}

@vinistevam vinistevam changed the title refactor: remove transaction history and sendFlowHistory refactor: deprecate transaction history and sendFlowHistory properties Dec 11, 2025
@vinistevam vinistevam marked this pull request as ready for review December 11, 2025 13:53
@vinistevam vinistevam requested review from a team as code owners December 11, 2025 13:53
@vinistevam
Copy link
Contributor Author

Extension draft PR: MetaMask/metamask-extension#38665

matthewwalsh0
matthewwalsh0 previously approved these changes Dec 18, 2025
_sendFlowHistoryToAdd: SendFlowHistoryEntry[],
): TransactionMeta {
// Return the transaction unchanged
return this.#getTransaction(transactionID) as TransactionMeta;
Copy link
Member

@matthewwalsh0 matthewwalsh0 Dec 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very minor, could use getTransactionOrThrow to avoid the need to cast.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done 05f7fd8

@vinistevam vinistevam enabled auto-merge December 18, 2025 10:13
@vinistevam vinistevam added this pull request to the merge queue Dec 18, 2025
Merged via the queue into main with commit 3e7286b Dec 18, 2025
561 of 566 checks passed
@vinistevam vinistevam deleted the fix/remove-history-property branch December 18, 2025 10:40
Sign up for free to 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