Repository navigation
feat(wallet): initialize NetworkEnablementController by default - #10997
Merged
Merged
Conversation
dawnseeker8
marked this pull request as ready for review
October 22, 2026 11:47
dawnseeker8
commented
Oct 22, 2026
Register NetworkEnablementController in the default wallet initialization, and keep daemon startup and CODEOWNERS generation working with that controller. Co-authored-by: Cursor <cursoragent@cursor.com>
dawnseeker8
force-pushed
the
assets-4169-network-enablement-wallet
branch
from
October 22, 2026 12:00
fbfa77b to
744318f
Compare
dawnseeker8
changed the base branch from
feat/assets-3641-wallet-assets-controller
to
main
October 22, 2026 12:00
…nablement-wallet Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # packages/wallet-cli/package.json # packages/wallet-cli/src/daemon/wallet-factory.ts # packages/wallet-cli/tsconfig.build.json # packages/wallet-cli/tsconfig.json # packages/wallet-cli/tsconfig.lint.json # packages/wallet/CHANGELOG.md # yarn.lock
Contributor
Author
|
@metamaskbot publish-preview |
Contributor
|
Preview builds have been published. Learn how to use preview builds in other projects. Expand for full list of packages and versions. |
…nablement-wallet Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # packages/wallet-cli/CHANGELOG.md # packages/wallet-cli/package.json # packages/wallet-cli/src/daemon/wallet-factory.test.ts # packages/wallet-cli/src/daemon/wallet-factory.ts # packages/wallet-cli/tsconfig.build.json # packages/wallet-cli/tsconfig.json # packages/wallet-cli/tsconfig.lint.json # yarn.lock
Contributor
Author
|
@metamaskbot publish-preview |
Contributor
|
Preview builds have been published. Learn how to use preview builds in other projects. Expand for full list of packages and versions. |
4 of 7 tasks
Co-authored-by: Cursor <cursoragent@cursor.com>
NetworkEnablementController delegates MultichainNetworkController:getState, and Wallet does not construct that controller. The changelog now says hosts must register the action before wallet.init(), and names the delegated controllers Wallet already constructs. Co-authored-by: Xiaoming Wang <dawnseeker8@users.noreply.github.com>
cursor
Bot
dismissed stale reviews from mcmire, Prithpal-Sooriya, and Kriys94
via
October 26, 2026 15:02
8c9c342
…nablement-wallet Co-authored-by: Cursor <cursoragent@cursor.com>
The export existed so hosts could construct NetworkEnablementController before AssetsController. That constructor read moves into AssetsController.init() in a follow-up. Co-authored-by: Cursor <cursoragent@cursor.com>
dawnseeker8
requested review from
FrederikBolding,
Kriys94,
Prithpal-Sooriya and
mcmire
October 27, 2026 08:16
Kriys94
approved these changes
Oct 27, 2026
Contributor
Author
|
@metamaskbot publish-preview |
Contributor
|
Preview builds have been published. Learn how to use preview builds in other projects. Expand for full list of packages and versions. |
FrederikBolding
approved these changes
Oct 27, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 27, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 27, 2026
3 of 4 tasks
This was referenced Oct 29, 2026
Naz-Ovh
pushed a commit
to 0x-fork/metamask-core
that referenced
this pull request
Nov 4, 2026
## Explanation
Release 1377.0.0. This PR only bumps versions, finalizes changelogs,
updates dependency ranges, and refreshes `yarn.lock`. The behavior
shipped here is already on `main`.
Three packages are major releases because their unreleased changelogs
include breaking changes:
- `@metamask/transaction-controller` `72.3.0` → `73.0.0`. Simulation now
goes through `SentinelApiService:simulateTransactions`. Consumers must
construct a `SentinelApiService` and delegate that action.
`getSimulationConfig` now returns `{ newUrl?: string }` only
([MetaMask#9476](MetaMask#9476)).
- `@metamask/core-backend` `12.3.0` → `13.0.0`.
`OHLCV_SERVICE_ALLOWED_ACTIONS` no longer includes
`BackendWebSocketService:getConnectionInfo` or
`BackendWebSocketService:findSubscriptionsByChannelPrefix`
([MetaMask#10884](MetaMask#10884)). This release
also adds `fetchV5MultiAccountTransactions`
([MetaMask#11194](MetaMask#11194)),
`LaunchpadTokenDetailsService`, and `ChannelSubscriptionManager`
([MetaMask#10884](MetaMask#10884)).
- `@metamask/wallet` `20.0.0` → `21.0.0`. Default initialization now
includes `NetworkEnablementController`, and the wallet messenger
delegates `SentinelApiService:simulateTransactions`. Clients must
register `MultichainNetworkController:getState` and
`SentinelApiService:simulateTransactions` on the wallet messenger
([MetaMask#10997](MetaMask#10997),
[MetaMask#9476](MetaMask#9476)).
These packages are included so they can depend on
`transaction-controller` `^73.0.0` and, where they use it,
`core-backend` `^13.0.0`:
| Package | Version |
| --- | --- |
| `@metamask/assets-controller` | `20.1.0` |
| `@metamask/assets-controllers` | `113.0.1` |
| `@metamask/bridge-controller` | `83.1.3` |
| `@metamask/bridge-status-controller` | `78.0.1` |
| `@metamask/client-utils` | `3.1.0` |
| `@metamask/eip-5792-middleware` | `4.1.0` |
| `@metamask/gator-permissions-controller` | `6.1.0` |
| `@metamask/money-account-utils` | `2.2.0` |
| `@metamask/network-enablement-controller` | `7.1.0` |
| `@metamask/phishing-controller` | `18.3.0` |
| `@metamask/profile-metrics-controller` | `5.2.1` |
| `@metamask/shield-controller` | `7.1.1` |
| `@metamask/smart-transactions-controller` | `27.2.1` |
| `@metamask/social-controllers` | `3.14.1` |
| `@metamask/subscription-controller` | `15.1.2` |
| `@metamask/transaction-pay-controller` | `30.3.2` |
| `@metamask/transaction-pay-middleware` | `2.0.1` |
| `@metamask/user-operation-controller` | `42.1.0` |
Notable changes besides the dependency bumps:
- `@metamask/assets-controller`: optional `pricePercentChange5m` and
`pricePercentChange4h` on `FungibleAssetPrice`
([MetaMask#11201](MetaMask#11201)).
- `@metamask/client-utils`: `predictionSettled` on `ActivityKind`
([MetaMask#11169](MetaMask#11169)), plus fee fixes
for contract-interaction fallback and OP Stack L1/operator fees
([MetaMask#11013](MetaMask#11013),
[MetaMask#9630](MetaMask#9630)).
- `@metamask/network-enablement-controller`: preserve enablement when a
config-registry network is auto-enabled
([MetaMask#10763](MetaMask#10763)).
- `@metamask/phishing-controller`: Arc (`0x13b2`) token scanning
([MetaMask#11144](MetaMask#11144)).
- `@metamask/transaction-pay-controller`: shared recipient resolution
and Hyperliquid perps deposit detection
([MetaMask#10887](MetaMask#10887),
[MetaMask#11026](MetaMask#11026)).
`@metamask/earn-controller`, `@metamask/money-account-mfa-whitelist`,
`@metamask/money-account-upgrade-controller`,
`@metamask/network-connection-banner-controller`,
`@metamask/perps-controller`, and `@metamask/signature-controller` only
have dependency ranges updated. They are not version-bumped and are not
published in this release.
## References
* [MetaMask#9476](MetaMask#9476)
* [MetaMask#9630](MetaMask#9630)
* [MetaMask#10763](MetaMask#10763)
* [MetaMask#10884](MetaMask#10884)
* [MetaMask#10887](MetaMask#10887)
* [MetaMask#10997](MetaMask#10997)
* [MetaMask#11013](MetaMask#11013)
* [MetaMask#11026](MetaMask#11026)
* [MetaMask#11144](MetaMask#11144)
* [MetaMask#11169](MetaMask#11169)
* [MetaMask#11194](MetaMask#11194)
* [MetaMask#11201](MetaMask#11201)
## 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
-->
- [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
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Medium Risk**
> The diff is low-risk mechanically, but the published majors force
client upgrades around transaction simulation, backend WebSocket
actions, and wallet messenger registration—areas that affect core wallet
behavior.
>
> **Overview**
> This PR cuts **release 1377.0.0** by bumping the root monorepo
version, publishing new semver tags for many `@metamask/*` packages,
moving unreleased changelog entries into versioned sections, updating
inter-package dependency ranges, and refreshing **`yarn.lock`**. There
is **no new application logic** in the diff—only release bookkeeping for
work already on `main`.
>
> The release centers on three **major** packages whose changelogs
document breaking changes: **`@metamask/transaction-controller`
`73.0.0`** (simulation via `SentinelApiService:simulateTransactions`;
`getSimulationConfig` shape change), **`@metamask/core-backend`
`13.0.0`** (WebSocket allowed-actions cleanup plus new backend
APIs/services), and **`@metamask/wallet` `21.0.0`** (default
`NetworkEnablementController` wiring and Sentinel simulation delegation
on the wallet messenger). Dozens of other packages are **minor/patch
bumped** mainly to depend on **`transaction-controller` `^73.0.0`** and,
where applicable, **`core-backend` `^13.0.0`**.
>
> Several workspaces only have **`package.json` dependency range
updates** (e.g. `earn-controller`, `money-account-upgrade-controller`,
`signature-controller`) without a version bump in this PR. A few
packages also document **feature fixes** in their new changelog sections
(e.g. `assets-controller` price change fields, `client-utils` activity
kinds/fees, `phishing-controller` Arc scanning) as part of the versions
being published here.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
5a253e4. 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: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Elliot Winkler <elliot.winkler@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Explanation
@metamask/walletnow constructsNetworkEnablementControllerduring default initialization. The constructor only needs a messenger and optional persisted state, so there is no newinstanceOptionsfield.Breaking change
Wallet.init()callsNetworkEnablementController.init(). That method readsMultichainNetworkController:getState. The wallet does not constructMultichainNetworkController, so each client must register that action on the wallet messenger beforewallet.init().NetworkEnablementControlleris a default initialization configuration and is not exported. Construction order forAssetsControlleris handled in #10885 by moving theNetworkEnablementController:getStateread intoAssetsController.init().What this pull request changes
NetworkEnablementControllerto the default initialization configurations.NetworkController:getState,MultichainNetworkController:getState, andConfigRegistryController:getState, plus the network and transaction events the controller subscribes to.@metamask/slip44with a JSON import attribute so Node.js 22 and 24 do not throwERR_IMPORT_ATTRIBUTE_MISSINGwhen loadingNetworkEnablementController.codeowners.ts.@metamask/wallet-cliwas removed onmain(#11001), so this pull request no longer changes that package.AssetsControllerinitialization stays in #10885 and will be updated after this merges.References
Checklist
Note
Medium Risk
Breaking wallet init contract: clients must pre-register
MultichainNetworkController:getStateor initialization fails; otherwise changes are localized wiring and a Node ESM import fix.Overview
@metamask/walletnow wiresNetworkEnablementControllerinto default initialization, soWallet.init()constructs it alongside the other default controllers. The newnetworkEnablementControllerconfiguration delegates messenger actions (ConfigRegistryController:getState,NetworkController:getState,MultichainNetworkController:getState) and network/transaction events the controller listens to. Breaking: the wallet does not createMultichainNetworkController, so hosts must registerMultichainNetworkController:getStateon the wallet root messenger beforewallet.init().The package adds
@metamask/network-enablement-controller(^7.0.2), exports the init config from the instances barrel, and updates CODEOWNERS/codeowners.tsfor the new initialization path.@metamask/network-enablement-controllerfixes Node 22/24 ESM loading by importing@metamask/slip44withwith { type: 'json' }inSlip44Service, avoidingERR_IMPORT_ATTRIBUTE_MISSINGwhen the wallet daemon loads the controller.Reviewed by Cursor Bugbot for commit 41650ee. Bugbot is set up for automated code reviews on this repo. Configure here.