Skip to content

feat(wallet): initialize AssetsController by default and defer messenger reads to init - #10885

Open
dawnseeker8 wants to merge 40 commits into
mainfrom
feat/assets-3641-wallet-assets-controller
Open

dawnseeker8 wants to merge 40 commits into
mainfrom
feat/assets-3641-wallet-assets-controller

Conversation

@dawnseeker8

@dawnseeker8 dawnseeker8 commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Explanation

@metamask/assets-controller is published as its own package and is not part of @metamask/wallet initialization. ASSETS-3641 asks the wallet package to include it in the shared initialization flow.

This adds an opt-in assetsController initialization configuration and the AssetsControllerInstanceOptions type. It is not registered in the default configurations. AccountTreeController and SnapController are still missing from the defaults, so registering AssetsController by default would fail during construction. NetworkEnablementController is already a default (#10997).

A consumer passes assetsController through initializationConfigurations and supplies instanceOptions.assetsController. That option requires queryApiClient. The child messenger delegates every action and event declared by AssetsControllerMessenger. If queryApiClient is missing, initialization throws. Caller configurations are constructed before the default NetworkEnablementController.

AssetsController used to call NetworkEnablementController:getState in its constructor, so construction failed unless that action was already registered. Construction now subscribes to NetworkEnablementController:stateChange first and only reads getState when the action is registered. The new init() reads enabled chains once every controller exists. Wallet.init() calls that init(). Later enablement changes still arrive on stateChange. init() is not a messenger action.

RpcDataSource and StakedBalanceDataSource also read NetworkController:getState and NetworkEnablementController:getState only at construction. When the wallet constructs AssetsController before those controllers, both reads fail and active chains stay empty until a later stateChange. init() now refreshes both data sources. StakedBalanceDataSource gains refreshActiveChainsFromNetworkEnablementState(), matching the existing RpcDataSource.refreshActiveChainsFromNetworkState().

@metamask/assets-controller is added as a @metamask/wallet dependency at ^20.0.1, matching the current workspace version, plus a TypeScript project reference. Ownership of the new instance directory is @MetaMask/metamask-assets.

Preview builds, publishing, and Extension/Mobile adoption stay out of this PR. Registering AssetsController as a default waits on the remaining controllers.

References

  • ASSETS-3641 — Migrate @metamask/assets-controller into the Core Wallet package
  • Epic: ASSETS-3640 — [Quality] Core Wallet Integration
  • Default NetworkEnablementController: #10997

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

High Risk
Multiple breaking changes affect wallet bootstrap (new required options, default controller, messenger collisions) and assets lifecycle (mandatory init(), new event subscription and account-selection behavior).

Reviewed by Cursor Bugbot for commit e5624fd. Bugbot is set up for automated code reviews on this repo. Configure here.

Explanation

@metamask/assets-controller is now part of @metamask/wallet default initialization. ASSETS-3641 asks the wallet package to include it in the shared initialization flow.

AssetsController is constructed with the other default controllers. instanceOptions.assetsController.queryApiClient is required by AssetsControllerInstanceOptions. The child messenger delegates every action and event declared by AssetsControllerMessenger.

AccountTreeController and SnapController are still not Wallet defaults. Construction does not call them, so Wallet construction succeeds while they are absent:

  • Selected-account reads try AccountTreeController:getAccountsFromSelectedAccountGroup and fall back to AccountsController:getSelectedAccount when that action is not registered. A registered handler that throws still throws.
  • Asset tracking treats a missing AccountTreeController:isInitialized as initialized, so tracking is not blocked on a controller the host has not installed. Other errors still throw.
  • AccountActivityDataSource uses the same selected-account fallback.
  • Snap discovery runs from SnapDataSource.init(). When SnapController is not registered, active snap chains stay empty. Later SnapController:snapInstalled and permission changes rediscover.

AssetsController and its data sources do not call messenger actions in their constructors. Wallet.init() calls AssetsController.init() after every controller has been constructed. init():

  • reads NetworkEnablementController:getState
  • calls RpcDataSource.refreshActiveChainsFromNetworkState() (NetworkController:getState)
  • calls StakedBalanceDataSource.refreshActiveChainsFromNetworkEnablementState() (NetworkEnablementController:getState)
  • calls SnapDataSource.init() (SnapController:getRunnableSnaps and PermissionController:getPermissions)
  • awaits AccountsApiDataSource.init() (supported networks, then RemoteFeatureFlagController:getState)

Subscriptions stay in the constructors. The Multicall3 address lookup is a callback stored for a later balance fetch; MulticallClient does not invoke it during construction.

Hosts that already register AssetsController on the wallet root messenger must remove that registration before upgrading, or messenger registration will collide.

References

  • ASSETS-3641 — Migrate @metamask/assets-controller into the Core Wallet package
  • Epic: ASSETS-3640 — [Quality] Core Wallet Integration
  • Default NetworkEnablementController: #10997

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
Open in Web Open in Cursor 

dawnseeker8 and others added 3 commits October 19, 2026 22:04
Export an AssetsController initialization config so clients can register it
after NetworkEnablementController, which the wallet does not initialize yet.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@dawnseeker8

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@11.1.0-preview-d687d3ab2
@metamask-previews/accounts-controller@40.1.0-preview-d687d3ab2
@metamask-previews/address-book-controller@8.0.0-preview-d687d3ab2
@metamask-previews/advanced-chart-core@1.0.0-preview-d687d3ab2
@metamask-previews/ai-controllers@2.0.0-preview-d687d3ab2
@metamask-previews/analytics-controller@4.0.0-preview-d687d3ab2
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-d687d3ab2
@metamask-previews/announcement-controller@9.0.0-preview-d687d3ab2
@metamask-previews/app-metadata-controller@3.0.0-preview-d687d3ab2
@metamask-previews/approval-controller@10.0.0-preview-d687d3ab2
@metamask-previews/assets-controller@19.1.0-preview-d687d3ab2
@metamask-previews/assets-controllers@112.1.2-preview-d687d3ab2
@metamask-previews/authenticated-user-storage@4.1.0-preview-d687d3ab2
@metamask-previews/base-controller@10.1.0-preview-d687d3ab2
@metamask-previews/base-data-service@2.1.0-preview-d687d3ab2
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-d687d3ab2
@metamask-previews/bridge-controller@82.0.3-preview-d687d3ab2
@metamask-previews/bridge-status-controller@76.4.0-preview-d687d3ab2
@metamask-previews/build-utils@4.0.0-preview-d687d3ab2
@metamask-previews/chain-agnostic-permission@2.0.0-preview-d687d3ab2
@metamask-previews/chomp-api-service@6.0.1-preview-d687d3ab2
@metamask-previews/claims-controller@1.0.3-preview-d687d3ab2
@metamask-previews/client-controller@2.0.0-preview-d687d3ab2
@metamask-previews/client-utils@3.0.4-preview-d687d3ab2
@metamask-previews/compliance-controller@3.0.0-preview-d687d3ab2
@metamask-previews/composable-controller@13.0.0-preview-d687d3ab2
@metamask-previews/config-registry-controller@5.0.0-preview-d687d3ab2
@metamask-previews/connectivity-controller@1.0.0-preview-d687d3ab2
@metamask-previews/controller-utils@13.0.0-preview-d687d3ab2
@metamask-previews/core-backend@12.3.0-preview-d687d3ab2
@metamask-previews/cryptography@1.1.2-preview-d687d3ab2
@metamask-previews/delegation-controller@4.0.0-preview-d687d3ab2
@metamask-previews/earn-controller@13.0.2-preview-d687d3ab2
@metamask-previews/eip-5792-middleware@4.0.1-preview-d687d3ab2
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-d687d3ab2
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-d687d3ab2
@metamask-previews/eth-block-tracker@16.0.0-preview-d687d3ab2
@metamask-previews/eth-json-rpc-middleware@25.0.0-preview-d687d3ab2
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-d687d3ab2
@metamask-previews/foundryup@2.0.0-preview-d687d3ab2
@metamask-previews/gas-fee-controller@27.0.0-preview-d687d3ab2
@metamask-previews/gator-permissions-controller@6.0.1-preview-d687d3ab2
@metamask-previews/geolocation-controller@2.0.0-preview-d687d3ab2
@metamask-previews/java-tron-up@2.0.0-preview-d687d3ab2
@metamask-previews/json-rpc-engine@11.0.0-preview-d687d3ab2
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-d687d3ab2
@metamask-previews/keyring-controller@28.2.0-preview-d687d3ab2
@metamask-previews/kyc-controller@0.10.0-preview-d687d3ab2
@metamask-previews/local-node-utils@2.0.0-preview-d687d3ab2
@metamask-previews/logging-controller@10.0.0-preview-d687d3ab2
@metamask-previews/marketing-consent-controller@1.0.0-preview-d687d3ab2
@metamask-previews/message-manager@15.0.0-preview-d687d3ab2
@metamask-previews/messenger@3.0.0-preview-d687d3ab2
@metamask-previews/messenger-cli@1.0.0-preview-d687d3ab2
@metamask-previews/mfa-recovery-controller@0.0.0-preview-d687d3ab2
@metamask-previews/money-account-api-data-service@2.2.0-preview-d687d3ab2
@metamask-previews/money-account-balance-service@3.1.2-preview-d687d3ab2
@metamask-previews/money-account-controller@2.0.0-preview-d687d3ab2
@metamask-previews/money-account-mfa-whitelist@0.1.0-preview-d687d3ab2
@metamask-previews/money-account-upgrade-controller@5.1.0-preview-d687d3ab2
@metamask-previews/money-account-utils@2.1.0-preview-d687d3ab2
@metamask-previews/multichain-account-service@14.1.0-preview-d687d3ab2
@metamask-previews/multichain-api-middleware@5.0.0-preview-d687d3ab2
@metamask-previews/multichain-network-controller@4.0.0-preview-d687d3ab2
@metamask-previews/multichain-transactions-controller@8.0.0-preview-d687d3ab2
@metamask-previews/name-controller@10.0.0-preview-d687d3ab2
@metamask-previews/network-connection-banner-controller@1.0.0-preview-d687d3ab2
@metamask-previews/network-controller@37.1.0-preview-d687d3ab2
@metamask-previews/network-enablement-controller@7.0.2-preview-d687d3ab2
@metamask-previews/notification-services-controller@30.0.0-preview-d687d3ab2
@metamask-previews/passkey-controller@4.1.0-preview-d687d3ab2
@metamask-previews/permission-controller@14.0.0-preview-d687d3ab2
@metamask-previews/permission-log-controller@6.0.0-preview-d687d3ab2
@metamask-previews/perps-controller@20.1.0-preview-d687d3ab2
@metamask-previews/phishing-controller@18.2.1-preview-d687d3ab2
@metamask-previews/platform-api-docs@0.2.1-preview-d687d3ab2
@metamask-previews/polling-controller@17.0.0-preview-d687d3ab2
@metamask-previews/preferences-controller@24.0.0-preview-d687d3ab2
@metamask-previews/profile-controller@1.1.0-preview-d687d3ab2
@metamask-previews/profile-metrics-controller@5.1.3-preview-d687d3ab2
@metamask-previews/profile-sync-controller@34.0.3-preview-d687d3ab2
@metamask-previews/ramps-controller@27.0.1-preview-d687d3ab2
@metamask-previews/rate-limit-controller@8.0.0-preview-d687d3ab2
@metamask-previews/react-data-query@2.0.0-preview-d687d3ab2
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-d687d3ab2
@metamask-previews/sample-controllers@6.0.0-preview-d687d3ab2
@metamask-previews/seedless-onboarding-controller@12.0.0-preview-d687d3ab2
@metamask-previews/selected-network-controller@27.0.0-preview-d687d3ab2
@metamask-previews/sentinel-api-service@2.1.0-preview-d687d3ab2
@metamask-previews/shield-controller@7.0.4-preview-d687d3ab2
@metamask-previews/signature-controller@40.0.0-preview-d687d3ab2
@metamask-previews/smart-transactions-controller@27.1.0-preview-d687d3ab2
@metamask-previews/snap-account-service@4.0.0-preview-d687d3ab2
@metamask-previews/social-controllers@3.8.0-preview-d687d3ab2
@metamask-previews/solana-test-validator-up@2.0.0-preview-d687d3ab2
@metamask-previews/stellar-quickstart-up@0.0.0-preview-d687d3ab2
@metamask-previews/storage-service@2.0.0-preview-d687d3ab2
@metamask-previews/subscription-controller@14.0.0-preview-d687d3ab2
@metamask-previews/transaction-controller@72.2.1-preview-d687d3ab2
@metamask-previews/transaction-pay-controller@30.1.0-preview-d687d3ab2
@metamask-previews/transaction-pay-middleware@0.0.0-preview-d687d3ab2
@metamask-previews/user-operation-controller@42.0.1-preview-d687d3ab2
@metamask-previews/utils@12.0.0-preview-d687d3ab2
@metamask-previews/wallet@18.0.0-preview-d687d3ab2
@metamask-previews/wallet-cli@0.0.0-preview-d687d3ab2

dawnseeker8 and others added 2 commits October 22, 2026 15:28
…et-assets-controller

Co-authored-by: Cursor <cursoragent@cursor.com>
…ontroller' into feat/assets-3641-wallet-assets-controller
@dawnseeker8

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@11.1.1-preview-55fcf3ef7
@metamask-previews/accounts-controller@40.1.0-preview-55fcf3ef7
@metamask-previews/address-book-controller@8.0.0-preview-55fcf3ef7
@metamask-previews/advanced-chart-core@1.0.0-preview-55fcf3ef7
@metamask-previews/ai-controllers@2.0.0-preview-55fcf3ef7
@metamask-previews/analytics-controller@4.0.0-preview-55fcf3ef7
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-55fcf3ef7
@metamask-previews/announcement-controller@9.0.0-preview-55fcf3ef7
@metamask-previews/app-metadata-controller@3.0.0-preview-55fcf3ef7
@metamask-previews/approval-controller@10.0.0-preview-55fcf3ef7
@metamask-previews/assets-controller@19.1.0-preview-55fcf3ef7
@metamask-previews/assets-controllers@112.1.3-preview-55fcf3ef7
@metamask-previews/authenticated-user-storage@4.1.0-preview-55fcf3ef7
@metamask-previews/base-controller@10.1.0-preview-55fcf3ef7
@metamask-previews/base-data-service@2.1.0-preview-55fcf3ef7
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-55fcf3ef7
@metamask-previews/bridge-controller@83.0.0-preview-55fcf3ef7
@metamask-previews/bridge-status-controller@77.0.0-preview-55fcf3ef7
@metamask-previews/build-utils@4.0.0-preview-55fcf3ef7
@metamask-previews/chain-agnostic-permission@2.1.0-preview-55fcf3ef7
@metamask-previews/chomp-api-service@6.0.1-preview-55fcf3ef7
@metamask-previews/claims-controller@1.0.4-preview-55fcf3ef7
@metamask-previews/client-controller@2.0.0-preview-55fcf3ef7
@metamask-previews/client-utils@3.0.4-preview-55fcf3ef7
@metamask-previews/compliance-controller@3.0.0-preview-55fcf3ef7
@metamask-previews/composable-controller@13.0.0-preview-55fcf3ef7
@metamask-previews/config-registry-controller@5.0.0-preview-55fcf3ef7
@metamask-previews/connectivity-controller@1.0.0-preview-55fcf3ef7
@metamask-previews/controller-utils@13.0.0-preview-55fcf3ef7
@metamask-previews/core-backend@12.3.0-preview-55fcf3ef7
@metamask-previews/cryptography@1.1.2-preview-55fcf3ef7
@metamask-previews/delegation-controller@4.0.0-preview-55fcf3ef7
@metamask-previews/earn-controller@13.0.2-preview-55fcf3ef7
@metamask-previews/eip-5792-middleware@4.0.1-preview-55fcf3ef7
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-55fcf3ef7
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-55fcf3ef7
@metamask-previews/error-utils@0.0.0-preview-55fcf3ef7
@metamask-previews/eth-block-tracker@16.0.0-preview-55fcf3ef7
@metamask-previews/eth-json-rpc-middleware@26.0.0-preview-55fcf3ef7
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-55fcf3ef7
@metamask-previews/foundryup@2.0.0-preview-55fcf3ef7
@metamask-previews/gas-fee-controller@27.0.0-preview-55fcf3ef7
@metamask-previews/gator-permissions-controller@6.0.1-preview-55fcf3ef7
@metamask-previews/geolocation-controller@2.0.0-preview-55fcf3ef7
@metamask-previews/java-tron-up@2.0.0-preview-55fcf3ef7
@metamask-previews/json-rpc-engine@11.0.0-preview-55fcf3ef7
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-55fcf3ef7
@metamask-previews/keyring-controller@28.2.0-preview-55fcf3ef7
@metamask-previews/kyc-controller@0.11.0-preview-55fcf3ef7
@metamask-previews/local-node-utils@2.0.0-preview-55fcf3ef7
@metamask-previews/logging-controller@10.0.0-preview-55fcf3ef7
@metamask-previews/marketing-consent-controller@1.0.2-preview-55fcf3ef7
@metamask-previews/message-manager@15.0.0-preview-55fcf3ef7
@metamask-previews/messenger@3.0.0-preview-55fcf3ef7
@metamask-previews/messenger-cli@1.0.0-preview-55fcf3ef7
@metamask-previews/mfa-recovery-controller@0.0.0-preview-55fcf3ef7
@metamask-previews/money-account-api-data-service@2.2.0-preview-55fcf3ef7
@metamask-previews/money-account-balance-service@3.1.2-preview-55fcf3ef7
@metamask-previews/money-account-controller@2.0.0-preview-55fcf3ef7
@metamask-previews/money-account-mfa-whitelist@0.1.0-preview-55fcf3ef7
@metamask-previews/money-account-upgrade-controller@5.1.0-preview-55fcf3ef7
@metamask-previews/money-account-utils@2.1.0-preview-55fcf3ef7
@metamask-previews/multichain-account-service@14.1.0-preview-55fcf3ef7
@metamask-previews/multichain-api-middleware@5.0.0-preview-55fcf3ef7
@metamask-previews/multichain-network-controller@4.0.0-preview-55fcf3ef7
@metamask-previews/multichain-transactions-controller@8.0.0-preview-55fcf3ef7
@metamask-previews/name-controller@10.0.0-preview-55fcf3ef7
@metamask-previews/network-connection-banner-controller@1.0.0-preview-55fcf3ef7
@metamask-previews/network-controller@37.1.1-preview-55fcf3ef7
@metamask-previews/network-enablement-controller@7.0.2-preview-55fcf3ef7
@metamask-previews/node-utils@0.0.0-preview-55fcf3ef7
@metamask-previews/notification-services-controller@30.0.1-preview-55fcf3ef7
@metamask-previews/passkey-controller@4.1.0-preview-55fcf3ef7
@metamask-previews/permission-controller@14.0.0-preview-55fcf3ef7
@metamask-previews/permission-log-controller@6.0.0-preview-55fcf3ef7
@metamask-previews/perps-controller@21.0.0-preview-55fcf3ef7
@metamask-previews/phishing-controller@18.2.1-preview-55fcf3ef7
@metamask-previews/platform-api-docs@0.2.1-preview-55fcf3ef7
@metamask-previews/polling-controller@17.0.0-preview-55fcf3ef7
@metamask-previews/preferences-controller@24.0.0-preview-55fcf3ef7
@metamask-previews/profile-controller@1.1.1-preview-55fcf3ef7
@metamask-previews/profile-metrics-controller@5.1.4-preview-55fcf3ef7
@metamask-previews/profile-sync-controller@35.0.0-preview-55fcf3ef7
@metamask-previews/ramps-controller@27.1.0-preview-55fcf3ef7
@metamask-previews/rate-limit-controller@8.0.0-preview-55fcf3ef7
@metamask-previews/react-data-query@2.0.0-preview-55fcf3ef7
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-55fcf3ef7
@metamask-previews/sample-controllers@6.0.0-preview-55fcf3ef7
@metamask-previews/seedless-onboarding-controller@12.0.0-preview-55fcf3ef7
@metamask-previews/selected-network-controller@27.0.0-preview-55fcf3ef7
@metamask-previews/sentinel-api-service@2.1.0-preview-55fcf3ef7
@metamask-previews/shield-controller@7.0.5-preview-55fcf3ef7
@metamask-previews/signature-controller@40.0.0-preview-55fcf3ef7
@metamask-previews/smart-transactions-controller@27.1.1-preview-55fcf3ef7
@metamask-previews/snap-account-service@4.0.0-preview-55fcf3ef7
@metamask-previews/social-controllers@3.10.0-preview-55fcf3ef7
@metamask-previews/solana-test-validator-up@2.0.0-preview-55fcf3ef7
@metamask-previews/stellar-quickstart-up@0.0.0-preview-55fcf3ef7
@metamask-previews/storage-service@2.0.0-preview-55fcf3ef7
@metamask-previews/subscription-controller@14.0.2-preview-55fcf3ef7
@metamask-previews/transaction-controller@72.2.1-preview-55fcf3ef7
@metamask-previews/transaction-pay-controller@30.2.0-preview-55fcf3ef7
@metamask-previews/transaction-pay-middleware@1.0.0-preview-55fcf3ef7
@metamask-previews/type-utils@0.0.0-preview-55fcf3ef7
@metamask-previews/user-operation-controller@42.0.1-preview-55fcf3ef7
@metamask-previews/utils@12.0.0-preview-55fcf3ef7
@metamask-previews/wallet@18.0.1-preview-55fcf3ef7
@metamask-previews/wallet-cli@0.0.0-preview-55fcf3ef7
@metamask-previews/watch-only-account-service@0.0.0-preview-55fcf3ef7

gaohan1994 pushed a commit to gaohan1994/core that referenced this pull request Oct 28, 2026
…Mask#10997)

## Explanation

`@metamask/wallet` now constructs `NetworkEnablementController` during
default initialization. The constructor only needs a messenger and
optional persisted state, so there is no new `instanceOptions` field.

### Breaking change

`Wallet.init()` calls `NetworkEnablementController.init()`. That method
reads `MultichainNetworkController:getState`. The wallet does not
construct `MultichainNetworkController`, so each client must register
that action on the wallet messenger before `wallet.init()`.

`NetworkEnablementController` is a default initialization configuration
and is not exported. Construction order for `AssetsController` is
handled in MetaMask#10885 by moving the `NetworkEnablementController:getState`
read into `AssetsController.init()`.

### What this pull request changes

- Add `NetworkEnablementController` to the default initialization
configurations.
- Delegate `NetworkController:getState`,
`MultichainNetworkController:getState`, and
`ConfigRegistryController:getState`, plus the network and transaction
events the controller subscribes to.
- Import `@metamask/slip44` with a JSON import attribute so Node.js 22
and 24 do not throw `ERR_IMPORT_ATTRIBUTE_MISSING` when loading
`NetworkEnablementController`.
- Generate the CODEOWNERS entry from `codeowners.ts`.

`@metamask/wallet-cli` was removed on `main` (MetaMask#11001), so this pull
request no longer changes that package. `AssetsController`
initialization stays in MetaMask#10885 and will be updated after this merges.

## References

*
[ASSETS-4169](https://consensyssoftware.atlassian.net/browse/ASSETS-4169)
* Follow-up: MetaMask#10885

## 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](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them

[ASSETS-4169]:
https://consensyssoftware.atlassian.net/browse/ASSETS-4169?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Breaking wallet init contract: clients must pre-register
`MultichainNetworkController:getState` or initialization fails;
otherwise changes are localized wiring and a Node ESM import fix.
> 
> **Overview**
> **`@metamask/wallet` now wires `NetworkEnablementController` into
default initialization**, so `Wallet.init()` constructs it alongside the
other default controllers. The new `networkEnablementController`
configuration delegates messenger actions
(`ConfigRegistryController:getState`, `NetworkController:getState`,
**`MultichainNetworkController:getState`**) and network/transaction
events the controller listens to. **Breaking:** the wallet does not
create `MultichainNetworkController`, so hosts must register
`MultichainNetworkController:getState` on the wallet root messenger
before `wallet.init()`.
> 
> The package adds `@metamask/network-enablement-controller` (^7.0.2),
exports the init config from the instances barrel, and updates
CODEOWNERS/`codeowners.ts` for the new initialization path.
> 
> **`@metamask/network-enablement-controller`** fixes Node 22/24 ESM
loading by importing `@metamask/slip44` with `with { type: 'json' }` in
`Slip44Service`, avoiding `ERR_IMPORT_ATTRIBUTE_MISSING` when the wallet
daemon loads the controller.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
41650ee. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>
@dawnseeker8
dawnseeker8 marked this pull request as ready for review October 28, 2026 06:26
@dawnseeker8
dawnseeker8 requested a review from a team as a code owner October 28, 2026 06:27
dawnseeker8 and others added 2 commits October 28, 2026 14:36
…et-assets-controller

Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	packages/wallet/CHANGELOG.md
AssetsController can be constructed before NetworkEnablementController exists. init() and the stateChange subscription apply enabled chains once that state is available.

Co-authored-by: Cursor <cursoragent@cursor.com>
@dawnseeker8
dawnseeker8 requested a review from a team as a code owner October 28, 2026 09:27
dawnseeker8 and others added 3 commits October 28, 2026 17:38
The new test used a widened CAIP-19 id and an extra publish argument, which lint:tsc:check treats as unsuppressed errors.

Co-authored-by: Cursor <cursoragent@cursor.com>
The new assertions used a short cast parameter and nullish fallbacks, which oxlint reports as unsuppressed violations.

Co-authored-by: Cursor <cursoragent@cursor.com>
@dawnseeker8

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@11.2.0-preview-5669a8ae0
@metamask-previews/accounts-controller@40.1.0-preview-5669a8ae0
@metamask-previews/address-book-controller@8.0.0-preview-5669a8ae0
@metamask-previews/advanced-chart-core@1.0.0-preview-5669a8ae0
@metamask-previews/ai-controllers@2.0.0-preview-5669a8ae0
@metamask-previews/analytics-controller@4.1.0-preview-5669a8ae0
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-5669a8ae0
@metamask-previews/announcement-controller@9.0.0-preview-5669a8ae0
@metamask-previews/app-metadata-controller@3.0.0-preview-5669a8ae0
@metamask-previews/approval-controller@10.0.0-preview-5669a8ae0
@metamask-previews/assets-controller@20.0.0-preview-5669a8ae0
@metamask-previews/assets-controllers@112.2.0-preview-5669a8ae0
@metamask-previews/authenticated-user-storage@4.1.0-preview-5669a8ae0
@metamask-previews/base-controller@10.1.0-preview-5669a8ae0
@metamask-previews/base-data-service@2.1.0-preview-5669a8ae0
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-5669a8ae0
@metamask-previews/bridge-controller@83.1.1-preview-5669a8ae0
@metamask-previews/bridge-status-controller@78.0.0-preview-5669a8ae0
@metamask-previews/build-utils@4.0.0-preview-5669a8ae0
@metamask-previews/byte-utils@0.1.0-preview-5669a8ae0
@metamask-previews/chain-agnostic-permission@2.1.0-preview-5669a8ae0
@metamask-previews/chomp-api-service@7.0.0-preview-5669a8ae0
@metamask-previews/claims-controller@1.1.0-preview-5669a8ae0
@metamask-previews/client-controller@2.0.0-preview-5669a8ae0
@metamask-previews/client-utils@3.0.4-preview-5669a8ae0
@metamask-previews/compliance-controller@3.0.0-preview-5669a8ae0
@metamask-previews/composable-controller@13.0.0-preview-5669a8ae0
@metamask-previews/config-registry-controller@5.0.0-preview-5669a8ae0
@metamask-previews/connectivity-controller@1.0.0-preview-5669a8ae0
@metamask-previews/controller-utils@13.0.0-preview-5669a8ae0
@metamask-previews/core-backend@12.3.0-preview-5669a8ae0
@metamask-previews/cryptography@1.1.2-preview-5669a8ae0
@metamask-previews/delegation-controller@4.0.0-preview-5669a8ae0
@metamask-previews/earn-controller@13.0.2-preview-5669a8ae0
@metamask-previews/eip-5792-middleware@4.0.1-preview-5669a8ae0
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-5669a8ae0
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-5669a8ae0
@metamask-previews/error-utils@0.1.0-preview-5669a8ae0
@metamask-previews/eth-block-tracker@16.0.0-preview-5669a8ae0
@metamask-previews/eth-json-rpc-middleware@26.0.0-preview-5669a8ae0
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-5669a8ae0
@metamask-previews/foundryup@2.0.0-preview-5669a8ae0
@metamask-previews/gas-fee-controller@27.0.0-preview-5669a8ae0
@metamask-previews/gator-permissions-controller@6.0.1-preview-5669a8ae0
@metamask-previews/geolocation-controller@2.0.0-preview-5669a8ae0
@metamask-previews/java-tron-up@2.0.0-preview-5669a8ae0
@metamask-previews/json-rpc-engine@11.0.0-preview-5669a8ae0
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-5669a8ae0
@metamask-previews/keyring-controller@28.2.0-preview-5669a8ae0
@metamask-previews/kyc-controller@0.13.0-preview-5669a8ae0
@metamask-previews/local-node-utils@2.0.0-preview-5669a8ae0
@metamask-previews/logging-controller@10.0.0-preview-5669a8ae0
@metamask-previews/marketing-consent-controller@1.1.0-preview-5669a8ae0
@metamask-previews/message-manager@15.0.0-preview-5669a8ae0
@metamask-previews/messenger@3.0.0-preview-5669a8ae0
@metamask-previews/messenger-cli@1.0.0-preview-5669a8ae0
@metamask-previews/mfa-recovery-controller@0.0.0-preview-5669a8ae0
@metamask-previews/money-account-api-data-service@2.3.1-preview-5669a8ae0
@metamask-previews/money-account-balance-service@3.1.2-preview-5669a8ae0
@metamask-previews/money-account-controller@3.0.0-preview-5669a8ae0
@metamask-previews/money-account-mfa-whitelist@0.1.0-preview-5669a8ae0
@metamask-previews/money-account-upgrade-controller@6.0.0-preview-5669a8ae0
@metamask-previews/money-account-utils@2.1.0-preview-5669a8ae0
@metamask-previews/multichain-account-service@14.1.0-preview-5669a8ae0
@metamask-previews/multichain-api-middleware@5.0.0-preview-5669a8ae0
@metamask-previews/multichain-network-controller@4.0.0-preview-5669a8ae0
@metamask-previews/multichain-transactions-controller@8.0.0-preview-5669a8ae0
@metamask-previews/name-controller@10.0.0-preview-5669a8ae0
@metamask-previews/network-connection-banner-controller@1.0.0-preview-5669a8ae0
@metamask-previews/network-controller@37.1.1-preview-5669a8ae0
@metamask-previews/network-enablement-controller@7.0.2-preview-5669a8ae0
@metamask-previews/node-utils@0.1.0-preview-5669a8ae0
@metamask-previews/notification-services-controller@30.1.0-preview-5669a8ae0
@metamask-previews/passkey-controller@4.1.0-preview-5669a8ae0
@metamask-previews/permission-controller@14.0.0-preview-5669a8ae0
@metamask-previews/permission-log-controller@6.0.0-preview-5669a8ae0
@metamask-previews/perps-controller@22.0.0-preview-5669a8ae0
@metamask-previews/phishing-controller@18.2.1-preview-5669a8ae0
@metamask-previews/platform-api-docs@0.2.1-preview-5669a8ae0
@metamask-previews/polling-controller@17.0.0-preview-5669a8ae0
@metamask-previews/preferences-controller@24.0.0-preview-5669a8ae0
@metamask-previews/profile-controller@1.2.0-preview-5669a8ae0
@metamask-previews/profile-metrics-controller@5.2.0-preview-5669a8ae0
@metamask-previews/profile-sync-controller@36.0.0-preview-5669a8ae0
@metamask-previews/ramps-controller@28.0.0-preview-5669a8ae0
@metamask-previews/rate-limit-controller@8.0.0-preview-5669a8ae0
@metamask-previews/react-data-query@2.0.0-preview-5669a8ae0
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-5669a8ae0
@metamask-previews/sample-controllers@6.0.0-preview-5669a8ae0
@metamask-previews/seedless-onboarding-controller@12.0.0-preview-5669a8ae0
@metamask-previews/selected-network-controller@27.0.0-preview-5669a8ae0
@metamask-previews/sentinel-api-service@2.1.0-preview-5669a8ae0
@metamask-previews/shield-controller@7.1.0-preview-5669a8ae0
@metamask-previews/signature-controller@40.0.0-preview-5669a8ae0
@metamask-previews/smart-transactions-controller@27.2.0-preview-5669a8ae0
@metamask-previews/snap-account-service@4.0.0-preview-5669a8ae0
@metamask-previews/social-controllers@3.12.1-preview-5669a8ae0
@metamask-previews/solana-test-validator-up@2.0.0-preview-5669a8ae0
@metamask-previews/stellar-quickstart-up@0.0.0-preview-5669a8ae0
@metamask-previews/storage-service@2.0.0-preview-5669a8ae0
@metamask-previews/subscription-controller@15.1.1-preview-5669a8ae0
@metamask-previews/transaction-controller@72.2.1-preview-5669a8ae0
@metamask-previews/transaction-pay-controller@30.3.1-preview-5669a8ae0
@metamask-previews/transaction-pay-middleware@2.0.0-preview-5669a8ae0
@metamask-previews/type-utils@0.1.0-preview-5669a8ae0
@metamask-previews/user-operation-controller@42.0.1-preview-5669a8ae0
@metamask-previews/utils@12.0.1-preview-5669a8ae0
@metamask-previews/wallet@20.0.0-preview-5669a8ae0
@metamask-previews/watch-only-account-service@0.1.0-preview-5669a8ae0

dawnseeker8 and others added 2 commits October 28, 2026 18:19
Changelog checks only accept the open pull request under Unreleased, and oxfmt needs the enabled-chain assertion wrapped.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@dawnseeker8

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@11.2.0-preview-bbbbbb9f2
@metamask-previews/accounts-controller@40.1.0-preview-bbbbbb9f2
@metamask-previews/address-book-controller@8.0.0-preview-bbbbbb9f2
@metamask-previews/advanced-chart-core@1.0.0-preview-bbbbbb9f2
@metamask-previews/ai-controllers@2.0.0-preview-bbbbbb9f2
@metamask-previews/analytics-controller@4.1.0-preview-bbbbbb9f2
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-bbbbbb9f2
@metamask-previews/announcement-controller@9.0.0-preview-bbbbbb9f2
@metamask-previews/app-metadata-controller@3.0.0-preview-bbbbbb9f2
@metamask-previews/approval-controller@10.0.0-preview-bbbbbb9f2
@metamask-previews/assets-controller@20.0.0-preview-bbbbbb9f2
@metamask-previews/assets-controllers@112.2.0-preview-bbbbbb9f2
@metamask-previews/authenticated-user-storage@4.1.0-preview-bbbbbb9f2
@metamask-previews/base-controller@10.1.0-preview-bbbbbb9f2
@metamask-previews/base-data-service@2.1.0-preview-bbbbbb9f2
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-bbbbbb9f2
@metamask-previews/bridge-controller@83.1.1-preview-bbbbbb9f2
@metamask-previews/bridge-status-controller@78.0.0-preview-bbbbbb9f2
@metamask-previews/build-utils@4.0.0-preview-bbbbbb9f2
@metamask-previews/byte-utils@0.1.0-preview-bbbbbb9f2
@metamask-previews/chain-agnostic-permission@2.1.0-preview-bbbbbb9f2
@metamask-previews/chomp-api-service@7.0.0-preview-bbbbbb9f2
@metamask-previews/claims-controller@1.1.0-preview-bbbbbb9f2
@metamask-previews/client-controller@2.0.0-preview-bbbbbb9f2
@metamask-previews/client-utils@3.0.4-preview-bbbbbb9f2
@metamask-previews/compliance-controller@3.0.0-preview-bbbbbb9f2
@metamask-previews/composable-controller@13.0.0-preview-bbbbbb9f2
@metamask-previews/config-registry-controller@5.0.0-preview-bbbbbb9f2
@metamask-previews/connectivity-controller@1.0.0-preview-bbbbbb9f2
@metamask-previews/controller-utils@13.0.0-preview-bbbbbb9f2
@metamask-previews/core-backend@12.3.0-preview-bbbbbb9f2
@metamask-previews/cryptography@1.1.2-preview-bbbbbb9f2
@metamask-previews/delegation-controller@4.0.0-preview-bbbbbb9f2
@metamask-previews/earn-controller@13.0.2-preview-bbbbbb9f2
@metamask-previews/eip-5792-middleware@4.0.1-preview-bbbbbb9f2
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-bbbbbb9f2
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-bbbbbb9f2
@metamask-previews/error-utils@0.1.0-preview-bbbbbb9f2
@metamask-previews/eth-block-tracker@16.0.0-preview-bbbbbb9f2
@metamask-previews/eth-json-rpc-middleware@26.0.0-preview-bbbbbb9f2
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-bbbbbb9f2
@metamask-previews/foundryup@2.0.0-preview-bbbbbb9f2
@metamask-previews/gas-fee-controller@27.0.0-preview-bbbbbb9f2
@metamask-previews/gator-permissions-controller@6.0.1-preview-bbbbbb9f2
@metamask-previews/geolocation-controller@2.0.0-preview-bbbbbb9f2
@metamask-previews/java-tron-up@2.0.0-preview-bbbbbb9f2
@metamask-previews/json-rpc-engine@11.0.0-preview-bbbbbb9f2
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-bbbbbb9f2
@metamask-previews/keyring-controller@28.2.0-preview-bbbbbb9f2
@metamask-previews/kyc-controller@0.13.0-preview-bbbbbb9f2
@metamask-previews/local-node-utils@2.0.0-preview-bbbbbb9f2
@metamask-previews/logging-controller@10.0.0-preview-bbbbbb9f2
@metamask-previews/marketing-consent-controller@1.1.0-preview-bbbbbb9f2
@metamask-previews/message-manager@15.0.0-preview-bbbbbb9f2
@metamask-previews/messenger@3.0.0-preview-bbbbbb9f2
@metamask-previews/messenger-cli@1.0.0-preview-bbbbbb9f2
@metamask-previews/mfa-recovery-controller@0.0.0-preview-bbbbbb9f2
@metamask-previews/money-account-api-data-service@2.3.1-preview-bbbbbb9f2
@metamask-previews/money-account-balance-service@3.1.2-preview-bbbbbb9f2
@metamask-previews/money-account-controller@3.0.0-preview-bbbbbb9f2
@metamask-previews/money-account-mfa-whitelist@0.1.0-preview-bbbbbb9f2
@metamask-previews/money-account-upgrade-controller@6.0.0-preview-bbbbbb9f2
@metamask-previews/money-account-utils@2.1.0-preview-bbbbbb9f2
@metamask-previews/multichain-account-service@14.1.0-preview-bbbbbb9f2
@metamask-previews/multichain-api-middleware@5.0.0-preview-bbbbbb9f2
@metamask-previews/multichain-network-controller@4.0.0-preview-bbbbbb9f2
@metamask-previews/multichain-transactions-controller@8.0.0-preview-bbbbbb9f2
@metamask-previews/name-controller@10.0.0-preview-bbbbbb9f2
@metamask-previews/network-connection-banner-controller@1.0.0-preview-bbbbbb9f2
@metamask-previews/network-controller@37.1.1-preview-bbbbbb9f2
@metamask-previews/network-enablement-controller@7.0.2-preview-bbbbbb9f2
@metamask-previews/node-utils@0.1.0-preview-bbbbbb9f2
@metamask-previews/notification-services-controller@30.1.0-preview-bbbbbb9f2
@metamask-previews/passkey-controller@4.1.0-preview-bbbbbb9f2
@metamask-previews/permission-controller@14.0.0-preview-bbbbbb9f2
@metamask-previews/permission-log-controller@6.0.0-preview-bbbbbb9f2
@metamask-previews/perps-controller@22.0.0-preview-bbbbbb9f2
@metamask-previews/phishing-controller@18.2.1-preview-bbbbbb9f2
@metamask-previews/platform-api-docs@0.2.1-preview-bbbbbb9f2
@metamask-previews/polling-controller@17.0.0-preview-bbbbbb9f2
@metamask-previews/preferences-controller@24.0.0-preview-bbbbbb9f2
@metamask-previews/profile-controller@1.2.0-preview-bbbbbb9f2
@metamask-previews/profile-metrics-controller@5.2.0-preview-bbbbbb9f2
@metamask-previews/profile-sync-controller@36.0.0-preview-bbbbbb9f2
@metamask-previews/ramps-controller@28.0.0-preview-bbbbbb9f2
@metamask-previews/rate-limit-controller@8.0.0-preview-bbbbbb9f2
@metamask-previews/react-data-query@2.0.0-preview-bbbbbb9f2
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-bbbbbb9f2
@metamask-previews/sample-controllers@6.0.0-preview-bbbbbb9f2
@metamask-previews/seedless-onboarding-controller@12.0.0-preview-bbbbbb9f2
@metamask-previews/selected-network-controller@27.0.0-preview-bbbbbb9f2
@metamask-previews/sentinel-api-service@2.1.0-preview-bbbbbb9f2
@metamask-previews/shield-controller@7.1.0-preview-bbbbbb9f2
@metamask-previews/signature-controller@40.0.0-preview-bbbbbb9f2
@metamask-previews/smart-transactions-controller@27.2.0-preview-bbbbbb9f2
@metamask-previews/snap-account-service@4.0.0-preview-bbbbbb9f2
@metamask-previews/social-controllers@3.13.0-preview-bbbbbb9f2
@metamask-previews/solana-test-validator-up@2.0.0-preview-bbbbbb9f2
@metamask-previews/stellar-quickstart-up@0.0.0-preview-bbbbbb9f2
@metamask-previews/storage-service@2.0.0-preview-bbbbbb9f2
@metamask-previews/subscription-controller@15.1.1-preview-bbbbbb9f2
@metamask-previews/transaction-controller@72.3.0-preview-bbbbbb9f2
@metamask-previews/transaction-pay-controller@30.3.1-preview-bbbbbb9f2
@metamask-previews/transaction-pay-middleware@2.0.0-preview-bbbbbb9f2
@metamask-previews/type-utils@0.1.0-preview-bbbbbb9f2
@metamask-previews/user-operation-controller@42.0.1-preview-bbbbbb9f2
@metamask-previews/utils@12.0.1-preview-bbbbbb9f2
@metamask-previews/wallet@20.0.0-preview-bbbbbb9f2
@metamask-previews/watch-only-account-service@0.1.0-preview-bbbbbb9f2

dawnseeker8 and others added 2 commits October 29, 2026 11:16
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@dawnseeker8

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

…ithub.com/MetaMask/core into feat/assets-3641-wallet-assets-controller

Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>

@cursor cursor Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Stale Bugbot comment from a previous run.

cursoragent and others added 4 commits November 2, 2026 14:25
Allow the second event payload on test publishes, and let staked messenger
fixtures omit mockProvider so the constructor test can override only the
enabled network map.

Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>
Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>
…et-assets-controller

Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>

# Conflicts:
#	yarn.lock
…et-assets-controller

Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	packages/assets-controller/CHANGELOG.md
cursoragent and others added 3 commits November 3, 2026 10:33
Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>
…rce.ts

Co-authored-by: Christian Tran <christian.trn@gmail.com>
Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>
@dawnseeker8
dawnseeker8 requested a review from Kriys94 November 3, 2026 10:36
dawnseeker8 and others added 2 commits November 3, 2026 18:38
…et-assets-controller

Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	packages/assets-controller/CHANGELOG.md
Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 3862d52. Configure here.

cursoragent and others added 2 commits November 3, 2026 10:44
…ontroller' into feat/assets-3641-wallet-assets-controller

Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Comment on lines +1191 to 1207
let enabledNetworkMap: NetworkEnablementControllerState['enabledNetworkMap'];
try {
({ enabledNetworkMap } = this.messenger.call(
'NetworkEnablementController:getState',
));
} catch (error) {
if (!isUnregisteredActionError(error)) {
throw error;
}
log(
'NetworkEnablementController:getState is not registered yet. Enabled chains are applied from NetworkEnablementController:stateChange.',
{ error },
);
return;
}

this.#enabledChains = this.#extractEnabledChains(enabledNetworkMap);

@Kriys94 Kriys94 Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please feel free to remove some init. For example

this.#enabledChains = this.#extractEnabledChains(enabledNetworkMap);

Might not be needed. we can just call enabled chains when needed. Instead of caching it in the AssetsController

} catch (error) {
if (!isUnregisteredActionError(error)) {
throw error;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not sure that is necessary

AssetsControllerInstanceOptions already requires queryApiClient, and WalletOptions requires instanceOptions.assetsController, so omitting the client is a type error. Remove the runtime throw and the test that asserted it.

Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>
@dawnseeker8

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@11.2.0-preview-fbb37663c
@metamask-previews/accounts-controller@40.1.0-preview-fbb37663c
@metamask-previews/address-book-controller@8.0.0-preview-fbb37663c
@metamask-previews/advanced-chart-core@1.0.0-preview-fbb37663c
@metamask-previews/ai-controllers@2.0.0-preview-fbb37663c
@metamask-previews/analytics-controller@4.1.0-preview-fbb37663c
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-fbb37663c
@metamask-previews/announcement-controller@9.0.0-preview-fbb37663c
@metamask-previews/app-metadata-controller@3.0.0-preview-fbb37663c
@metamask-previews/approval-controller@10.0.0-preview-fbb37663c
@metamask-previews/assets-controller@20.2.0-preview-fbb37663c
@metamask-previews/assets-controllers@113.1.0-preview-fbb37663c
@metamask-previews/authenticated-user-storage@4.1.0-preview-fbb37663c
@metamask-previews/base-controller@10.1.0-preview-fbb37663c
@metamask-previews/base-data-service@2.1.0-preview-fbb37663c
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-fbb37663c
@metamask-previews/bridge-controller@83.1.3-preview-fbb37663c
@metamask-previews/bridge-status-controller@78.0.1-preview-fbb37663c
@metamask-previews/build-utils@4.0.0-preview-fbb37663c
@metamask-previews/byte-utils@0.1.0-preview-fbb37663c
@metamask-previews/chain-agnostic-permission@2.1.0-preview-fbb37663c
@metamask-previews/chomp-api-service@7.0.0-preview-fbb37663c
@metamask-previews/claims-controller@1.1.0-preview-fbb37663c
@metamask-previews/client-controller@2.0.0-preview-fbb37663c
@metamask-previews/client-utils@3.1.0-preview-fbb37663c
@metamask-previews/compliance-controller@3.0.0-preview-fbb37663c
@metamask-previews/composable-controller@13.0.0-preview-fbb37663c
@metamask-previews/config-registry-controller@5.0.0-preview-fbb37663c
@metamask-previews/connectivity-controller@1.0.0-preview-fbb37663c
@metamask-previews/controller-utils@13.0.0-preview-fbb37663c
@metamask-previews/core-backend@13.0.0-preview-fbb37663c
@metamask-previews/cryptography@1.1.2-preview-fbb37663c
@metamask-previews/delegation-controller@4.0.0-preview-fbb37663c
@metamask-previews/earn-controller@13.0.2-preview-fbb37663c
@metamask-previews/eip-5792-middleware@4.1.0-preview-fbb37663c
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-fbb37663c
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-fbb37663c
@metamask-previews/error-utils@0.1.0-preview-fbb37663c
@metamask-previews/eth-block-tracker@16.0.0-preview-fbb37663c
@metamask-previews/eth-json-rpc-middleware@26.0.0-preview-fbb37663c
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-fbb37663c
@metamask-previews/foundryup@2.0.0-preview-fbb37663c
@metamask-previews/gas-fee-controller@27.0.0-preview-fbb37663c
@metamask-previews/gator-permissions-controller@6.1.0-preview-fbb37663c
@metamask-previews/geolocation-controller@2.0.0-preview-fbb37663c
@metamask-previews/java-tron-up@2.0.0-preview-fbb37663c
@metamask-previews/json-rpc-engine@11.0.0-preview-fbb37663c
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-fbb37663c
@metamask-previews/keyring-controller@28.2.0-preview-fbb37663c
@metamask-previews/kyc-controller@0.14.0-preview-fbb37663c
@metamask-previews/local-node-utils@2.0.0-preview-fbb37663c
@metamask-previews/logging-controller@10.0.0-preview-fbb37663c
@metamask-previews/marketing-consent-controller@1.1.0-preview-fbb37663c
@metamask-previews/message-manager@15.0.0-preview-fbb37663c
@metamask-previews/messenger@3.0.0-preview-fbb37663c
@metamask-previews/messenger-cli@1.0.0-preview-fbb37663c
@metamask-previews/mfa-recovery-controller@0.0.0-preview-fbb37663c
@metamask-previews/money-account-api-data-service@2.3.1-preview-fbb37663c
@metamask-previews/money-account-balance-service@3.1.2-preview-fbb37663c
@metamask-previews/money-account-controller@3.0.0-preview-fbb37663c
@metamask-previews/money-account-lifecycle-controller@0.0.0-preview-fbb37663c
@metamask-previews/money-account-mfa-whitelist@0.1.0-preview-fbb37663c
@metamask-previews/money-account-upgrade-controller@6.0.0-preview-fbb37663c
@metamask-previews/money-account-utils@2.2.0-preview-fbb37663c
@metamask-previews/multichain-account-service@14.1.0-preview-fbb37663c
@metamask-previews/multichain-api-middleware@5.0.0-preview-fbb37663c
@metamask-previews/multichain-network-controller@4.0.0-preview-fbb37663c
@metamask-previews/multichain-transactions-controller@8.0.0-preview-fbb37663c
@metamask-previews/name-controller@10.0.0-preview-fbb37663c
@metamask-previews/network-connection-banner-controller@1.0.0-preview-fbb37663c
@metamask-previews/network-controller@37.1.1-preview-fbb37663c
@metamask-previews/network-enablement-controller@7.1.0-preview-fbb37663c
@metamask-previews/node-utils@0.1.0-preview-fbb37663c
@metamask-previews/notification-services-controller@30.1.0-preview-fbb37663c
@metamask-previews/passkey-controller@4.1.0-preview-fbb37663c
@metamask-previews/permission-controller@14.1.0-preview-fbb37663c
@metamask-previews/permission-log-controller@6.0.0-preview-fbb37663c
@metamask-previews/perps-controller@22.1.0-preview-fbb37663c
@metamask-previews/phishing-controller@18.3.0-preview-fbb37663c
@metamask-previews/platform-api-docs@0.2.1-preview-fbb37663c
@metamask-previews/polling-controller@17.0.0-preview-fbb37663c
@metamask-previews/preferences-controller@24.0.0-preview-fbb37663c
@metamask-previews/profile-controller@1.2.1-preview-fbb37663c
@metamask-previews/profile-metrics-controller@5.2.1-preview-fbb37663c
@metamask-previews/profile-sync-controller@36.0.0-preview-fbb37663c
@metamask-previews/ramps-controller@29.0.0-preview-fbb37663c
@metamask-previews/rate-limit-controller@8.0.0-preview-fbb37663c
@metamask-previews/react-data-query@2.0.0-preview-fbb37663c
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-fbb37663c
@metamask-previews/sample-controllers@6.0.0-preview-fbb37663c
@metamask-previews/seedless-onboarding-controller@12.0.0-preview-fbb37663c
@metamask-previews/selected-network-controller@27.0.0-preview-fbb37663c
@metamask-previews/sentinel-api-service@2.1.0-preview-fbb37663c
@metamask-previews/shield-controller@7.1.1-preview-fbb37663c
@metamask-previews/signature-controller@40.0.0-preview-fbb37663c
@metamask-previews/smart-transactions-controller@27.2.1-preview-fbb37663c
@metamask-previews/snap-account-service@4.0.0-preview-fbb37663c
@metamask-previews/social-controllers@3.15.0-preview-fbb37663c
@metamask-previews/solana-test-validator-up@2.0.0-preview-fbb37663c
@metamask-previews/stellar-quickstart-up@0.0.0-preview-fbb37663c
@metamask-previews/storage-service@2.0.0-preview-fbb37663c
@metamask-previews/subscription-controller@15.1.2-preview-fbb37663c
@metamask-previews/transaction-controller@73.0.0-preview-fbb37663c
@metamask-previews/transaction-pay-controller@30.3.3-preview-fbb37663c
@metamask-previews/transaction-pay-middleware@2.0.1-preview-fbb37663c
@metamask-previews/type-utils@0.1.0-preview-fbb37663c
@metamask-previews/user-operation-controller@42.1.0-preview-fbb37663c
@metamask-previews/utils@12.0.1-preview-fbb37663c
@metamask-previews/wallet@21.0.0-preview-fbb37663c
@metamask-previews/watch-only-account-service@0.1.0-preview-fbb37663c

…et-assets-controller

Keep both Unreleased assets-controller changelog entries. Call AssetsController.init() in the launchpad filtering integration test so supported-network discovery still runs after messenger reads moved out of the constructor.

Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>

This branch was previously deployed

1 inactive (outdated) deployment
default-branch — 55fcf3ef Deployed Oct 28, 2026 by dawnseeker8 via Determine whether this PR is a release PR #6164
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants