core icon indicating copy to clipboard operation
core copied to clipboard

fix(account-tree-controller)!: automatically removes "outdated" accounts from multichain account groups

Open ccharly opened this issue 3 months ago • 8 comments

Explanation

Multichain account groups can "disable" accounts using AccountProviderWrappers. This is mostly used in combination with remote feature flags or with the "Basic Functionality" flags.

Though, since the account tree is not "consuming" multichain account groups directly, the account list from those groups was not properly updated (since not :account{Added,Removed} are used in this case), resulting in a de-sync between the groups from the tree and the groups from the service.

[!NOTE] This PR aims to fix this de-sync in a simple way without involving too many architecture changes (so it's less risky to release this first), but the real fix for this is there:

  • https://github.com/MetaMask/core/pull/6646

References

N/A

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, highlighting breaking changes as necessary
  • [ ] I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

[!NOTE] AccountTreeController now skips and removes “outdated” BIP‑44 accounts using MultichainAccountService actions/events, MultichainAccountService simplifies provider creation/error handling, and repo scripts/configs are cleaned up (drop build:all, adjust ts-bridge, prettier/yarn).

  • Account Tree Controller:
    • Skip disabled BIP‑44 accounts on init by cross-checking MultichainAccountService:getMultichainAccountWallets.
    • React to MultichainAccountService:multichainAccountGroup{Created,Updated} to remove accounts no longer in a group.
    • Refactor account removal with batched helper and proper events; update types/messenger to require new actions/events.
  • Multichain Account Service:
    • Update createMultichainAccountGroup to either await all providers or just EVM, running others in background with logging; aggregate errors when awaiting all.
    • Remove Snap provider concurrency throttling; adjust provider configs/imports; delete unused utils.
    • Test updates accordingly.
  • Tooling/Configs:
    • Remove build:all across packages and relax Yarn constraints; reorder build:docs where needed.
    • Pin @ts-bridge/cli to ^0.6.1; update yarn.lock.
    • Drop Prettier package.json plugin; trim Yarn preapproved list.
  • Subscription Controller:
    • Remove sponsorship intents export/type from public API and changelog entry.

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

ccharly avatar Nov 03 '25 12:11 ccharly

@metamaskbot publish-previews

ccharly avatar Nov 03 '25 12:11 ccharly

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": "2.0.0-preview-c222de5",
  "@metamask-previews/accounts-controller": "34.0.0-preview-c222de5",
  "@metamask-previews/address-book-controller": "7.0.0-preview-c222de5",
  "@metamask-previews/announcement-controller": "8.0.0-preview-c222de5",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-c222de5",
  "@metamask-previews/approval-controller": "8.0.0-preview-c222de5",
  "@metamask-previews/assets-controllers": "86.0.0-preview-c222de5",
  "@metamask-previews/base-controller": "9.0.0-preview-c222de5",
  "@metamask-previews/bridge-controller": "58.0.0-preview-c222de5",
  "@metamask-previews/bridge-status-controller": "58.0.0-preview-c222de5",
  "@metamask-previews/build-utils": "3.0.4-preview-c222de5",
  "@metamask-previews/chain-agnostic-permission": "1.2.2-preview-c222de5",
  "@metamask-previews/composable-controller": "12.0.0-preview-c222de5",
  "@metamask-previews/controller-utils": "11.15.0-preview-c222de5",
  "@metamask-previews/core-backend": "4.0.0-preview-c222de5",
  "@metamask-previews/delegation-controller": "1.0.0-preview-c222de5",
  "@metamask-previews/earn-controller": "9.0.0-preview-c222de5",
  "@metamask-previews/eip-5792-middleware": "2.0.0-preview-c222de5",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-c222de5",
  "@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-c222de5",
  "@metamask-previews/ens-controller": "18.0.0-preview-c222de5",
  "@metamask-previews/error-reporting-service": "3.0.0-preview-c222de5",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-c222de5",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-c222de5",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-c222de5",
  "@metamask-previews/foundryup": "1.0.1-preview-c222de5",
  "@metamask-previews/gas-fee-controller": "25.0.0-preview-c222de5",
  "@metamask-previews/gator-permissions-controller": "0.3.0-preview-c222de5",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-c222de5",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-c222de5",
  "@metamask-previews/keyring-controller": "24.0.0-preview-c222de5",
  "@metamask-previews/logging-controller": "7.0.0-preview-c222de5",
  "@metamask-previews/message-manager": "14.0.0-preview-c222de5",
  "@metamask-previews/messenger": "0.3.0-preview-c222de5",
  "@metamask-previews/multichain-account-service": "2.0.1-preview-c222de5",
  "@metamask-previews/multichain-api-middleware": "1.2.4-preview-c222de5",
  "@metamask-previews/multichain-network-controller": "2.0.0-preview-c222de5",
  "@metamask-previews/multichain-transactions-controller": "6.0.0-preview-c222de5",
  "@metamask-previews/name-controller": "9.0.0-preview-c222de5",
  "@metamask-previews/network-controller": "25.0.0-preview-c222de5",
  "@metamask-previews/network-enablement-controller": "3.1.0-preview-c222de5",
  "@metamask-previews/notification-services-controller": "19.0.0-preview-c222de5",
  "@metamask-previews/permission-controller": "12.1.0-preview-c222de5",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-c222de5",
  "@metamask-previews/phishing-controller": "15.0.0-preview-c222de5",
  "@metamask-previews/polling-controller": "15.0.0-preview-c222de5",
  "@metamask-previews/preferences-controller": "21.0.0-preview-c222de5",
  "@metamask-previews/profile-sync-controller": "26.0.0-preview-c222de5",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-c222de5",
  "@metamask-previews/remote-feature-flag-controller": "2.0.0-preview-c222de5",
  "@metamask-previews/sample-controllers": "3.0.0-preview-c222de5",
  "@metamask-previews/seedless-onboarding-controller": "6.0.0-preview-c222de5",
  "@metamask-previews/selected-network-controller": "25.0.0-preview-c222de5",
  "@metamask-previews/shield-controller": "1.1.0-preview-c222de5",
  "@metamask-previews/signature-controller": "35.0.0-preview-c222de5",
  "@metamask-previews/subscription-controller": "3.1.0-preview-c222de5",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-c222de5",
  "@metamask-previews/transaction-controller": "61.1.0-preview-c222de5",
  "@metamask-previews/transaction-pay-controller": "2.0.2-preview-c222de5",
  "@metamask-previews/user-operation-controller": "40.0.0-preview-c222de5"
}

github-actions[bot] avatar Nov 03 '25 12:11 github-actions[bot]

@metamaskbot publish-previews

ccharly avatar Nov 03 '25 14:11 ccharly

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": "2.0.0-preview-60778d92",
  "@metamask-previews/accounts-controller": "34.0.0-preview-60778d92",
  "@metamask-previews/address-book-controller": "7.0.0-preview-60778d92",
  "@metamask-previews/announcement-controller": "8.0.0-preview-60778d92",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-60778d92",
  "@metamask-previews/approval-controller": "8.0.0-preview-60778d92",
  "@metamask-previews/assets-controllers": "86.0.0-preview-60778d92",
  "@metamask-previews/base-controller": "9.0.0-preview-60778d92",
  "@metamask-previews/bridge-controller": "58.0.0-preview-60778d92",
  "@metamask-previews/bridge-status-controller": "58.0.0-preview-60778d92",
  "@metamask-previews/build-utils": "3.0.4-preview-60778d92",
  "@metamask-previews/chain-agnostic-permission": "1.2.2-preview-60778d92",
  "@metamask-previews/composable-controller": "12.0.0-preview-60778d92",
  "@metamask-previews/controller-utils": "11.15.0-preview-60778d92",
  "@metamask-previews/core-backend": "4.0.0-preview-60778d92",
  "@metamask-previews/delegation-controller": "1.0.0-preview-60778d92",
  "@metamask-previews/earn-controller": "9.0.0-preview-60778d92",
  "@metamask-previews/eip-5792-middleware": "2.0.0-preview-60778d92",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-60778d92",
  "@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-60778d92",
  "@metamask-previews/ens-controller": "18.0.0-preview-60778d92",
  "@metamask-previews/error-reporting-service": "3.0.0-preview-60778d92",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-60778d92",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-60778d92",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-60778d92",
  "@metamask-previews/foundryup": "1.0.1-preview-60778d92",
  "@metamask-previews/gas-fee-controller": "25.0.0-preview-60778d92",
  "@metamask-previews/gator-permissions-controller": "0.3.0-preview-60778d92",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-60778d92",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-60778d92",
  "@metamask-previews/keyring-controller": "24.0.0-preview-60778d92",
  "@metamask-previews/logging-controller": "7.0.0-preview-60778d92",
  "@metamask-previews/message-manager": "14.0.0-preview-60778d92",
  "@metamask-previews/messenger": "0.3.0-preview-60778d92",
  "@metamask-previews/multichain-account-service": "2.0.1-preview-60778d92",
  "@metamask-previews/multichain-api-middleware": "1.2.4-preview-60778d92",
  "@metamask-previews/multichain-network-controller": "2.0.0-preview-60778d92",
  "@metamask-previews/multichain-transactions-controller": "6.0.0-preview-60778d92",
  "@metamask-previews/name-controller": "9.0.0-preview-60778d92",
  "@metamask-previews/network-controller": "25.0.0-preview-60778d92",
  "@metamask-previews/network-enablement-controller": "3.1.0-preview-60778d92",
  "@metamask-previews/notification-services-controller": "19.0.0-preview-60778d92",
  "@metamask-previews/permission-controller": "12.1.0-preview-60778d92",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-60778d92",
  "@metamask-previews/phishing-controller": "15.0.0-preview-60778d92",
  "@metamask-previews/polling-controller": "15.0.0-preview-60778d92",
  "@metamask-previews/preferences-controller": "21.0.0-preview-60778d92",
  "@metamask-previews/profile-sync-controller": "26.0.0-preview-60778d92",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-60778d92",
  "@metamask-previews/remote-feature-flag-controller": "2.0.0-preview-60778d92",
  "@metamask-previews/sample-controllers": "3.0.0-preview-60778d92",
  "@metamask-previews/seedless-onboarding-controller": "6.0.0-preview-60778d92",
  "@metamask-previews/selected-network-controller": "25.0.0-preview-60778d92",
  "@metamask-previews/shield-controller": "1.1.0-preview-60778d92",
  "@metamask-previews/signature-controller": "35.0.0-preview-60778d92",
  "@metamask-previews/subscription-controller": "3.1.0-preview-60778d92",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-60778d92",
  "@metamask-previews/transaction-controller": "61.1.0-preview-60778d92",
  "@metamask-previews/transaction-pay-controller": "2.0.2-preview-60778d92",
  "@metamask-previews/user-operation-controller": "40.0.0-preview-60778d92"
}

github-actions[bot] avatar Nov 03 '25 15:11 github-actions[bot]

@metamaskbot publish-previews

ccharly avatar Nov 04 '25 13:11 ccharly

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": "2.0.0-preview-f86a6bc4",
  "@metamask-previews/accounts-controller": "34.0.0-preview-f86a6bc4",
  "@metamask-previews/address-book-controller": "7.0.0-preview-f86a6bc4",
  "@metamask-previews/announcement-controller": "8.0.0-preview-f86a6bc4",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-f86a6bc4",
  "@metamask-previews/approval-controller": "8.0.0-preview-f86a6bc4",
  "@metamask-previews/assets-controllers": "86.0.0-preview-f86a6bc4",
  "@metamask-previews/base-controller": "9.0.0-preview-f86a6bc4",
  "@metamask-previews/bridge-controller": "58.0.0-preview-f86a6bc4",
  "@metamask-previews/bridge-status-controller": "58.0.0-preview-f86a6bc4",
  "@metamask-previews/build-utils": "3.0.4-preview-f86a6bc4",
  "@metamask-previews/chain-agnostic-permission": "1.2.2-preview-f86a6bc4",
  "@metamask-previews/composable-controller": "12.0.0-preview-f86a6bc4",
  "@metamask-previews/controller-utils": "11.15.0-preview-f86a6bc4",
  "@metamask-previews/core-backend": "4.0.0-preview-f86a6bc4",
  "@metamask-previews/delegation-controller": "1.0.0-preview-f86a6bc4",
  "@metamask-previews/earn-controller": "9.0.0-preview-f86a6bc4",
  "@metamask-previews/eip-5792-middleware": "2.0.0-preview-f86a6bc4",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-f86a6bc4",
  "@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-f86a6bc4",
  "@metamask-previews/ens-controller": "18.0.0-preview-f86a6bc4",
  "@metamask-previews/error-reporting-service": "3.0.0-preview-f86a6bc4",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-f86a6bc4",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-f86a6bc4",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-f86a6bc4",
  "@metamask-previews/foundryup": "1.0.1-preview-f86a6bc4",
  "@metamask-previews/gas-fee-controller": "25.0.0-preview-f86a6bc4",
  "@metamask-previews/gator-permissions-controller": "0.3.0-preview-f86a6bc4",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-f86a6bc4",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-f86a6bc4",
  "@metamask-previews/keyring-controller": "24.0.0-preview-f86a6bc4",
  "@metamask-previews/logging-controller": "7.0.0-preview-f86a6bc4",
  "@metamask-previews/message-manager": "14.0.0-preview-f86a6bc4",
  "@metamask-previews/messenger": "0.3.0-preview-f86a6bc4",
  "@metamask-previews/multichain-account-service": "2.0.1-preview-f86a6bc4",
  "@metamask-previews/multichain-api-middleware": "1.2.4-preview-f86a6bc4",
  "@metamask-previews/multichain-network-controller": "2.0.0-preview-f86a6bc4",
  "@metamask-previews/multichain-transactions-controller": "6.0.0-preview-f86a6bc4",
  "@metamask-previews/name-controller": "9.0.0-preview-f86a6bc4",
  "@metamask-previews/network-controller": "25.0.0-preview-f86a6bc4",
  "@metamask-previews/network-enablement-controller": "3.1.0-preview-f86a6bc4",
  "@metamask-previews/notification-services-controller": "19.0.0-preview-f86a6bc4",
  "@metamask-previews/permission-controller": "12.1.0-preview-f86a6bc4",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-f86a6bc4",
  "@metamask-previews/phishing-controller": "15.0.0-preview-f86a6bc4",
  "@metamask-previews/polling-controller": "15.0.0-preview-f86a6bc4",
  "@metamask-previews/preferences-controller": "21.0.0-preview-f86a6bc4",
  "@metamask-previews/profile-sync-controller": "26.0.0-preview-f86a6bc4",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-f86a6bc4",
  "@metamask-previews/remote-feature-flag-controller": "2.0.0-preview-f86a6bc4",
  "@metamask-previews/sample-controllers": "3.0.0-preview-f86a6bc4",
  "@metamask-previews/seedless-onboarding-controller": "6.0.0-preview-f86a6bc4",
  "@metamask-previews/selected-network-controller": "25.0.0-preview-f86a6bc4",
  "@metamask-previews/shield-controller": "1.1.0-preview-f86a6bc4",
  "@metamask-previews/signature-controller": "35.0.0-preview-f86a6bc4",
  "@metamask-previews/subscription-controller": "3.1.0-preview-f86a6bc4",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-f86a6bc4",
  "@metamask-previews/transaction-controller": "61.1.0-preview-f86a6bc4",
  "@metamask-previews/transaction-pay-controller": "2.0.2-preview-f86a6bc4",
  "@metamask-previews/user-operation-controller": "40.0.0-preview-f86a6bc4"
}

github-actions[bot] avatar Nov 04 '25 13:11 github-actions[bot]

@metamaskbot publish-previews

ccharly avatar Nov 04 '25 16:11 ccharly

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": "2.0.0-preview-359767df",
  "@metamask-previews/accounts-controller": "34.0.0-preview-359767df",
  "@metamask-previews/address-book-controller": "7.0.0-preview-359767df",
  "@metamask-previews/announcement-controller": "8.0.0-preview-359767df",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-359767df",
  "@metamask-previews/approval-controller": "8.0.0-preview-359767df",
  "@metamask-previews/assets-controllers": "87.0.0-preview-359767df",
  "@metamask-previews/base-controller": "9.0.0-preview-359767df",
  "@metamask-previews/bridge-controller": "59.0.0-preview-359767df",
  "@metamask-previews/bridge-status-controller": "59.0.0-preview-359767df",
  "@metamask-previews/build-utils": "3.0.4-preview-359767df",
  "@metamask-previews/chain-agnostic-permission": "1.2.2-preview-359767df",
  "@metamask-previews/composable-controller": "12.0.0-preview-359767df",
  "@metamask-previews/controller-utils": "11.15.0-preview-359767df",
  "@metamask-previews/core-backend": "4.0.0-preview-359767df",
  "@metamask-previews/delegation-controller": "1.0.0-preview-359767df",
  "@metamask-previews/earn-controller": "9.0.0-preview-359767df",
  "@metamask-previews/eip-5792-middleware": "2.0.0-preview-359767df",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-359767df",
  "@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-359767df",
  "@metamask-previews/ens-controller": "18.0.0-preview-359767df",
  "@metamask-previews/error-reporting-service": "3.0.0-preview-359767df",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-359767df",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-359767df",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-359767df",
  "@metamask-previews/foundryup": "1.0.1-preview-359767df",
  "@metamask-previews/gas-fee-controller": "25.0.0-preview-359767df",
  "@metamask-previews/gator-permissions-controller": "0.3.0-preview-359767df",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-359767df",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-359767df",
  "@metamask-previews/keyring-controller": "24.0.0-preview-359767df",
  "@metamask-previews/logging-controller": "7.0.0-preview-359767df",
  "@metamask-previews/message-manager": "14.0.0-preview-359767df",
  "@metamask-previews/messenger": "0.3.0-preview-359767df",
  "@metamask-previews/multichain-account-service": "2.1.0-preview-359767df",
  "@metamask-previews/multichain-api-middleware": "1.2.4-preview-359767df",
  "@metamask-previews/multichain-network-controller": "2.0.0-preview-359767df",
  "@metamask-previews/multichain-transactions-controller": "6.0.0-preview-359767df",
  "@metamask-previews/name-controller": "9.0.0-preview-359767df",
  "@metamask-previews/network-controller": "25.0.0-preview-359767df",
  "@metamask-previews/network-enablement-controller": "3.1.0-preview-359767df",
  "@metamask-previews/notification-services-controller": "19.0.0-preview-359767df",
  "@metamask-previews/permission-controller": "12.1.0-preview-359767df",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-359767df",
  "@metamask-previews/phishing-controller": "15.0.0-preview-359767df",
  "@metamask-previews/polling-controller": "15.0.0-preview-359767df",
  "@metamask-previews/preferences-controller": "21.0.0-preview-359767df",
  "@metamask-previews/profile-sync-controller": "26.0.0-preview-359767df",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-359767df",
  "@metamask-previews/remote-feature-flag-controller": "2.0.0-preview-359767df",
  "@metamask-previews/sample-controllers": "3.0.0-preview-359767df",
  "@metamask-previews/seedless-onboarding-controller": "6.1.0-preview-359767df",
  "@metamask-previews/selected-network-controller": "25.0.0-preview-359767df",
  "@metamask-previews/shield-controller": "1.2.0-preview-359767df",
  "@metamask-previews/signature-controller": "35.0.0-preview-359767df",
  "@metamask-previews/subscription-controller": "3.2.0-preview-359767df",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-359767df",
  "@metamask-previews/transaction-controller": "61.1.0-preview-359767df",
  "@metamask-previews/transaction-pay-controller": "3.0.0-preview-359767df",
  "@metamask-previews/user-operation-controller": "40.0.0-preview-359767df"
}

github-actions[bot] avatar Nov 04 '25 16:11 github-actions[bot]