Skip to content

feat(wallet)!: Add NetworkController initialization#9001

Merged
FrederikBolding merged 11 commits into
mainfrom
fb/network-controller-wallet-lib
Jun 24, 2026
Merged

feat(wallet)!: Add NetworkController initialization#9001
FrederikBolding merged 11 commits into
mainfrom
fb/network-controller-wallet-lib

Conversation

@FrederikBolding

@FrederikBolding FrederikBolding commented Jun 4, 2026

Copy link
Copy Markdown
Member

Explanation

This PR adds NetworkController initialization to @metamask/wallet alongside an init function on Wallet than can be used to initialize controller and services after instantiation (e.g. if the controller/service needs to use the messenger to seed its initial state).

instanceOptions.networkController.infuraProjectId is now required.

References

https://consensyssoftware.atlassian.net/browse/WPC-1023

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
Breaking API change for all wallet consumers plus core network/RPC configuration (Infura project ID), which affects how chains and providers are initialized.

Overview
Breaking: @metamask/wallet now boots a default NetworkController and requires instanceOptions.networkController.infuraProjectId (optional failoverUrls). The new initialization module wires the controller messenger to ConnectivityController and RemoteFeatureFlagController state/actions.

Adds Wallet.init(), which runs init() on every registered instance that exposes it (via Promise.allSettled) so controllers can finish setup after construction—for example seeding state through the messenger.

Tests and docs/changelog/README dependency graph are updated for the new required options and dependency on @metamask/network-controller.

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

@FrederikBolding FrederikBolding force-pushed the fb/network-controller-wallet-lib branch 2 times, most recently from 9ea9017 to 63e8c0e Compare June 8, 2026 11:09
@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@github-actions

github-actions Bot commented Jun 8, 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@7.5.1-preview-63e8c0e
@metamask-previews/accounts-controller@39.0.0-preview-63e8c0e
@metamask-previews/address-book-controller@7.1.2-preview-63e8c0e
@metamask-previews/ai-controllers@0.7.0-preview-63e8c0e
@metamask-previews/analytics-controller@1.1.1-preview-63e8c0e
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-63e8c0e
@metamask-previews/announcement-controller@8.1.0-preview-63e8c0e
@metamask-previews/app-metadata-controller@2.0.1-preview-63e8c0e
@metamask-previews/approval-controller@9.0.1-preview-63e8c0e
@metamask-previews/assets-controller@8.3.2-preview-63e8c0e
@metamask-previews/assets-controllers@108.5.0-preview-63e8c0e
@metamask-previews/authenticated-user-storage@2.0.0-preview-63e8c0e
@metamask-previews/base-controller@9.1.0-preview-63e8c0e
@metamask-previews/base-data-service@0.1.3-preview-63e8c0e
@metamask-previews/bridge-controller@73.2.1-preview-63e8c0e
@metamask-previews/bridge-status-controller@72.0.2-preview-63e8c0e
@metamask-previews/build-utils@3.0.4-preview-63e8c0e
@metamask-previews/chain-agnostic-permission@1.6.1-preview-63e8c0e
@metamask-previews/chomp-api-service@3.1.0-preview-63e8c0e
@metamask-previews/claims-controller@0.5.2-preview-63e8c0e
@metamask-previews/client-controller@1.0.1-preview-63e8c0e
@metamask-previews/compliance-controller@2.1.0-preview-63e8c0e
@metamask-previews/composable-controller@12.0.1-preview-63e8c0e
@metamask-previews/config-registry-controller@0.4.0-preview-63e8c0e
@metamask-previews/connectivity-controller@0.2.0-preview-63e8c0e
@metamask-previews/controller-utils@12.1.0-preview-63e8c0e
@metamask-previews/core-backend@6.3.2-preview-63e8c0e
@metamask-previews/delegation-controller@3.0.1-preview-63e8c0e
@metamask-previews/earn-controller@12.2.0-preview-63e8c0e
@metamask-previews/eip-5792-middleware@3.0.4-preview-63e8c0e
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-63e8c0e
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-63e8c0e
@metamask-previews/ens-controller@19.1.3-preview-63e8c0e
@metamask-previews/eth-block-tracker@15.0.1-preview-63e8c0e
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-63e8c0e
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-63e8c0e
@metamask-previews/foundryup@1.0.1-preview-63e8c0e
@metamask-previews/gas-fee-controller@26.2.2-preview-63e8c0e
@metamask-previews/gator-permissions-controller@4.2.0-preview-63e8c0e
@metamask-previews/geolocation-controller@0.1.3-preview-63e8c0e
@metamask-previews/json-rpc-engine@10.5.0-preview-63e8c0e
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-63e8c0e
@metamask-previews/keyring-controller@26.0.0-preview-63e8c0e
@metamask-previews/logging-controller@8.0.2-preview-63e8c0e
@metamask-previews/message-manager@14.1.2-preview-63e8c0e
@metamask-previews/messenger@1.2.0-preview-63e8c0e
@metamask-previews/messenger-cli@0.2.0-preview-63e8c0e
@metamask-previews/money-account-balance-service@1.0.2-preview-63e8c0e
@metamask-previews/money-account-controller@0.3.2-preview-63e8c0e
@metamask-previews/money-account-upgrade-controller@2.0.3-preview-63e8c0e
@metamask-previews/multichain-account-service@10.0.2-preview-63e8c0e
@metamask-previews/multichain-api-middleware@3.1.3-preview-63e8c0e
@metamask-previews/multichain-network-controller@3.1.3-preview-63e8c0e
@metamask-previews/multichain-transactions-controller@7.1.1-preview-63e8c0e
@metamask-previews/name-controller@9.1.2-preview-63e8c0e
@metamask-previews/network-controller@32.0.0-preview-63e8c0e
@metamask-previews/network-enablement-controller@5.3.0-preview-63e8c0e
@metamask-previews/notification-services-controller@24.1.2-preview-63e8c0e
@metamask-previews/passkey-controller@2.0.1-preview-63e8c0e
@metamask-previews/permission-controller@13.1.1-preview-63e8c0e
@metamask-previews/permission-log-controller@5.1.0-preview-63e8c0e
@metamask-previews/perps-controller@7.0.0-preview-63e8c0e
@metamask-previews/phishing-controller@17.2.0-preview-63e8c0e
@metamask-previews/polling-controller@16.0.6-preview-63e8c0e
@metamask-previews/preferences-controller@23.1.0-preview-63e8c0e
@metamask-previews/profile-metrics-controller@3.1.6-preview-63e8c0e
@metamask-previews/profile-sync-controller@28.1.1-preview-63e8c0e
@metamask-previews/ramps-controller@14.1.1-preview-63e8c0e
@metamask-previews/rate-limit-controller@7.0.1-preview-63e8c0e
@metamask-previews/react-data-query@0.2.1-preview-63e8c0e
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-63e8c0e
@metamask-previews/sample-controllers@5.0.1-preview-63e8c0e
@metamask-previews/seedless-onboarding-controller@10.0.0-preview-63e8c0e
@metamask-previews/selected-network-controller@26.1.3-preview-63e8c0e
@metamask-previews/shield-controller@5.1.2-preview-63e8c0e
@metamask-previews/signature-controller@39.2.4-preview-63e8c0e
@metamask-previews/snap-account-service@0.3.0-preview-63e8c0e
@metamask-previews/social-controllers@2.2.1-preview-63e8c0e
@metamask-previews/storage-service@1.0.1-preview-63e8c0e
@metamask-previews/subscription-controller@6.1.3-preview-63e8c0e
@metamask-previews/transaction-controller@67.0.0-preview-63e8c0e
@metamask-previews/transaction-pay-controller@23.2.0-preview-63e8c0e
@metamask-previews/user-operation-controller@41.2.3-preview-63e8c0e
@metamask-previews/wallet@2.0.0-preview-63e8c0e

@FrederikBolding FrederikBolding force-pushed the fb/network-controller-wallet-lib branch from 63e8c0e to 3bb0a08 Compare June 12, 2026 08:50
@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@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@7.5.2-preview-3bb0a08f0
@metamask-previews/accounts-controller@39.0.1-preview-3bb0a08f0
@metamask-previews/address-book-controller@7.1.2-preview-3bb0a08f0
@metamask-previews/ai-controllers@0.7.0-preview-3bb0a08f0
@metamask-previews/analytics-controller@1.1.1-preview-3bb0a08f0
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-3bb0a08f0
@metamask-previews/announcement-controller@8.1.0-preview-3bb0a08f0
@metamask-previews/app-metadata-controller@2.0.1-preview-3bb0a08f0
@metamask-previews/approval-controller@9.0.2-preview-3bb0a08f0
@metamask-previews/assets-controller@9.0.1-preview-3bb0a08f0
@metamask-previews/assets-controllers@109.0.0-preview-3bb0a08f0
@metamask-previews/authenticated-user-storage@2.0.0-preview-3bb0a08f0
@metamask-previews/base-controller@9.1.0-preview-3bb0a08f0
@metamask-previews/base-data-service@0.1.3-preview-3bb0a08f0
@metamask-previews/bridge-controller@75.1.1-preview-3bb0a08f0
@metamask-previews/bridge-status-controller@72.1.0-preview-3bb0a08f0
@metamask-previews/build-utils@3.0.4-preview-3bb0a08f0
@metamask-previews/chain-agnostic-permission@1.6.2-preview-3bb0a08f0
@metamask-previews/chomp-api-service@3.1.0-preview-3bb0a08f0
@metamask-previews/claims-controller@0.5.3-preview-3bb0a08f0
@metamask-previews/client-controller@1.0.1-preview-3bb0a08f0
@metamask-previews/compliance-controller@2.1.0-preview-3bb0a08f0
@metamask-previews/composable-controller@12.0.1-preview-3bb0a08f0
@metamask-previews/config-registry-controller@0.4.1-preview-3bb0a08f0
@metamask-previews/connectivity-controller@0.2.0-preview-3bb0a08f0
@metamask-previews/controller-utils@12.2.0-preview-3bb0a08f0
@metamask-previews/core-backend@6.3.3-preview-3bb0a08f0
@metamask-previews/delegation-controller@3.0.2-preview-3bb0a08f0
@metamask-previews/earn-controller@12.2.0-preview-3bb0a08f0
@metamask-previews/eip-5792-middleware@3.0.4-preview-3bb0a08f0
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-3bb0a08f0
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-3bb0a08f0
@metamask-previews/ens-controller@19.1.3-preview-3bb0a08f0
@metamask-previews/eth-block-tracker@15.0.1-preview-3bb0a08f0
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-3bb0a08f0
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-3bb0a08f0
@metamask-previews/foundryup@1.0.1-preview-3bb0a08f0
@metamask-previews/gas-fee-controller@26.2.2-preview-3bb0a08f0
@metamask-previews/gator-permissions-controller@4.2.0-preview-3bb0a08f0
@metamask-previews/geolocation-controller@0.1.3-preview-3bb0a08f0
@metamask-previews/json-rpc-engine@10.5.0-preview-3bb0a08f0
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-3bb0a08f0
@metamask-previews/keyring-controller@27.0.0-preview-3bb0a08f0
@metamask-previews/logging-controller@8.0.2-preview-3bb0a08f0
@metamask-previews/message-manager@14.1.2-preview-3bb0a08f0
@metamask-previews/messenger@1.2.0-preview-3bb0a08f0
@metamask-previews/messenger-cli@0.2.0-preview-3bb0a08f0
@metamask-previews/money-account-balance-service@1.0.2-preview-3bb0a08f0
@metamask-previews/money-account-controller@0.3.3-preview-3bb0a08f0
@metamask-previews/money-account-upgrade-controller@2.0.5-preview-3bb0a08f0
@metamask-previews/multichain-account-service@10.0.3-preview-3bb0a08f0
@metamask-previews/multichain-api-middleware@3.1.4-preview-3bb0a08f0
@metamask-previews/multichain-network-controller@3.1.3-preview-3bb0a08f0
@metamask-previews/multichain-transactions-controller@7.1.1-preview-3bb0a08f0
@metamask-previews/name-controller@9.1.2-preview-3bb0a08f0
@metamask-previews/network-controller@32.0.0-preview-3bb0a08f0
@metamask-previews/network-enablement-controller@5.3.0-preview-3bb0a08f0
@metamask-previews/notification-services-controller@24.1.3-preview-3bb0a08f0
@metamask-previews/passkey-controller@2.0.1-preview-3bb0a08f0
@metamask-previews/permission-controller@13.1.1-preview-3bb0a08f0
@metamask-previews/permission-log-controller@5.1.0-preview-3bb0a08f0
@metamask-previews/perps-controller@8.1.0-preview-3bb0a08f0
@metamask-previews/phishing-controller@17.2.0-preview-3bb0a08f0
@metamask-previews/polling-controller@16.0.6-preview-3bb0a08f0
@metamask-previews/preferences-controller@23.1.0-preview-3bb0a08f0
@metamask-previews/profile-metrics-controller@3.2.0-preview-3bb0a08f0
@metamask-previews/profile-sync-controller@28.1.1-preview-3bb0a08f0
@metamask-previews/ramps-controller@14.1.1-preview-3bb0a08f0
@metamask-previews/rate-limit-controller@7.0.1-preview-3bb0a08f0
@metamask-previews/react-data-query@0.2.1-preview-3bb0a08f0
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-3bb0a08f0
@metamask-previews/sample-controllers@5.0.1-preview-3bb0a08f0
@metamask-previews/seedless-onboarding-controller@10.0.2-preview-3bb0a08f0
@metamask-previews/selected-network-controller@26.1.3-preview-3bb0a08f0
@metamask-previews/shield-controller@5.1.2-preview-3bb0a08f0
@metamask-previews/signature-controller@39.2.5-preview-3bb0a08f0
@metamask-previews/snap-account-service@0.3.1-preview-3bb0a08f0
@metamask-previews/social-controllers@2.2.1-preview-3bb0a08f0
@metamask-previews/storage-service@1.0.2-preview-3bb0a08f0
@metamask-previews/subscription-controller@6.2.0-preview-3bb0a08f0
@metamask-previews/transaction-controller@68.0.0-preview-3bb0a08f0
@metamask-previews/transaction-pay-controller@23.5.1-preview-3bb0a08f0
@metamask-previews/user-operation-controller@41.2.4-preview-3bb0a08f0
@metamask-previews/wallet@3.0.0-preview-3bb0a08f0
@metamask-previews/wallet-cli@0.0.0-preview-3bb0a08f0

@FrederikBolding FrederikBolding force-pushed the fb/network-controller-wallet-lib branch from 3bb0a08 to 45710f4 Compare June 16, 2026 13:37
@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@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@7.5.2-preview-45710f449
@metamask-previews/accounts-controller@39.0.1-preview-45710f449
@metamask-previews/address-book-controller@7.1.2-preview-45710f449
@metamask-previews/ai-controllers@0.7.0-preview-45710f449
@metamask-previews/analytics-controller@1.1.1-preview-45710f449
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-45710f449
@metamask-previews/announcement-controller@8.1.0-preview-45710f449
@metamask-previews/app-metadata-controller@2.0.1-preview-45710f449
@metamask-previews/approval-controller@9.0.2-preview-45710f449
@metamask-previews/assets-controller@9.0.1-preview-45710f449
@metamask-previews/assets-controllers@109.1.0-preview-45710f449
@metamask-previews/authenticated-user-storage@2.0.0-preview-45710f449
@metamask-previews/base-controller@9.1.0-preview-45710f449
@metamask-previews/base-data-service@0.1.3-preview-45710f449
@metamask-previews/bridge-controller@75.1.1-preview-45710f449
@metamask-previews/bridge-status-controller@72.1.0-preview-45710f449
@metamask-previews/build-utils@3.0.4-preview-45710f449
@metamask-previews/chain-agnostic-permission@1.6.2-preview-45710f449
@metamask-previews/chomp-api-service@3.1.0-preview-45710f449
@metamask-previews/claims-controller@0.5.3-preview-45710f449
@metamask-previews/client-controller@1.0.1-preview-45710f449
@metamask-previews/compliance-controller@2.1.0-preview-45710f449
@metamask-previews/composable-controller@12.0.1-preview-45710f449
@metamask-previews/config-registry-controller@0.4.1-preview-45710f449
@metamask-previews/connectivity-controller@0.2.0-preview-45710f449
@metamask-previews/controller-utils@12.2.0-preview-45710f449
@metamask-previews/core-backend@6.3.3-preview-45710f449
@metamask-previews/delegation-controller@3.0.2-preview-45710f449
@metamask-previews/earn-controller@12.2.0-preview-45710f449
@metamask-previews/eip-5792-middleware@3.0.4-preview-45710f449
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-45710f449
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-45710f449
@metamask-previews/ens-controller@19.1.3-preview-45710f449
@metamask-previews/eth-block-tracker@15.0.1-preview-45710f449
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-45710f449
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-45710f449
@metamask-previews/foundryup@1.0.1-preview-45710f449
@metamask-previews/gas-fee-controller@26.2.2-preview-45710f449
@metamask-previews/gator-permissions-controller@4.2.0-preview-45710f449
@metamask-previews/geolocation-controller@0.1.3-preview-45710f449
@metamask-previews/json-rpc-engine@10.5.0-preview-45710f449
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-45710f449
@metamask-previews/keyring-controller@27.1.0-preview-45710f449
@metamask-previews/logging-controller@8.0.2-preview-45710f449
@metamask-previews/message-manager@14.1.2-preview-45710f449
@metamask-previews/messenger@1.2.0-preview-45710f449
@metamask-previews/messenger-cli@0.2.0-preview-45710f449
@metamask-previews/money-account-balance-service@2.0.0-preview-45710f449
@metamask-previews/money-account-controller@0.3.3-preview-45710f449
@metamask-previews/money-account-upgrade-controller@2.0.5-preview-45710f449
@metamask-previews/multichain-account-service@10.0.3-preview-45710f449
@metamask-previews/multichain-api-middleware@3.1.4-preview-45710f449
@metamask-previews/multichain-network-controller@3.1.3-preview-45710f449
@metamask-previews/multichain-transactions-controller@7.1.1-preview-45710f449
@metamask-previews/name-controller@9.1.2-preview-45710f449
@metamask-previews/network-controller@32.0.0-preview-45710f449
@metamask-previews/network-enablement-controller@5.3.0-preview-45710f449
@metamask-previews/notification-services-controller@24.1.3-preview-45710f449
@metamask-previews/passkey-controller@2.0.1-preview-45710f449
@metamask-previews/permission-controller@13.1.1-preview-45710f449
@metamask-previews/permission-log-controller@5.1.0-preview-45710f449
@metamask-previews/perps-controller@8.1.0-preview-45710f449
@metamask-previews/phishing-controller@17.2.0-preview-45710f449
@metamask-previews/polling-controller@16.0.6-preview-45710f449
@metamask-previews/preferences-controller@23.1.0-preview-45710f449
@metamask-previews/profile-metrics-controller@3.2.0-preview-45710f449
@metamask-previews/profile-sync-controller@28.2.0-preview-45710f449
@metamask-previews/ramps-controller@14.2.0-preview-45710f449
@metamask-previews/rate-limit-controller@7.0.1-preview-45710f449
@metamask-previews/react-data-query@0.2.1-preview-45710f449
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-45710f449
@metamask-previews/sample-controllers@5.0.1-preview-45710f449
@metamask-previews/seedless-onboarding-controller@10.0.2-preview-45710f449
@metamask-previews/selected-network-controller@26.1.3-preview-45710f449
@metamask-previews/shield-controller@5.1.2-preview-45710f449
@metamask-previews/signature-controller@39.2.5-preview-45710f449
@metamask-previews/snap-account-service@0.3.1-preview-45710f449
@metamask-previews/social-controllers@2.3.0-preview-45710f449
@metamask-previews/storage-service@1.0.2-preview-45710f449
@metamask-previews/subscription-controller@6.2.0-preview-45710f449
@metamask-previews/transaction-controller@68.0.0-preview-45710f449
@metamask-previews/transaction-pay-controller@23.7.0-preview-45710f449
@metamask-previews/user-operation-controller@41.2.4-preview-45710f449
@metamask-previews/wallet@3.0.0-preview-45710f449
@metamask-previews/wallet-cli@0.0.0-preview-45710f449

@FrederikBolding FrederikBolding force-pushed the fb/network-controller-wallet-lib branch from 45710f4 to 771074f Compare June 18, 2026 09:34
@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@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@7.5.2-preview-771074f
@metamask-previews/accounts-controller@39.0.1-preview-771074f
@metamask-previews/address-book-controller@7.1.2-preview-771074f
@metamask-previews/ai-controllers@0.7.0-preview-771074f
@metamask-previews/analytics-controller@1.1.1-preview-771074f
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-771074f
@metamask-previews/announcement-controller@8.1.0-preview-771074f
@metamask-previews/app-metadata-controller@2.0.1-preview-771074f
@metamask-previews/approval-controller@9.0.2-preview-771074f
@metamask-previews/assets-controller@9.0.1-preview-771074f
@metamask-previews/assets-controllers@109.1.0-preview-771074f
@metamask-previews/authenticated-user-storage@2.0.0-preview-771074f
@metamask-previews/base-controller@9.1.0-preview-771074f
@metamask-previews/base-data-service@0.1.3-preview-771074f
@metamask-previews/bridge-controller@75.1.1-preview-771074f
@metamask-previews/bridge-status-controller@72.1.0-preview-771074f
@metamask-previews/build-utils@3.0.4-preview-771074f
@metamask-previews/chain-agnostic-permission@1.6.2-preview-771074f
@metamask-previews/chomp-api-service@3.1.0-preview-771074f
@metamask-previews/claims-controller@0.5.3-preview-771074f
@metamask-previews/client-controller@1.0.1-preview-771074f
@metamask-previews/compliance-controller@2.1.0-preview-771074f
@metamask-previews/composable-controller@12.0.1-preview-771074f
@metamask-previews/config-registry-controller@0.4.1-preview-771074f
@metamask-previews/connectivity-controller@0.2.0-preview-771074f
@metamask-previews/controller-utils@12.2.0-preview-771074f
@metamask-previews/core-backend@6.3.3-preview-771074f
@metamask-previews/delegation-controller@3.0.2-preview-771074f
@metamask-previews/earn-controller@12.2.0-preview-771074f
@metamask-previews/eip-5792-middleware@3.0.4-preview-771074f
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-771074f
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-771074f
@metamask-previews/ens-controller@19.1.3-preview-771074f
@metamask-previews/eth-block-tracker@15.0.1-preview-771074f
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-771074f
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-771074f
@metamask-previews/foundryup@1.0.1-preview-771074f
@metamask-previews/gas-fee-controller@26.2.2-preview-771074f
@metamask-previews/gator-permissions-controller@4.2.0-preview-771074f
@metamask-previews/geolocation-controller@0.1.3-preview-771074f
@metamask-previews/json-rpc-engine@10.5.0-preview-771074f
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-771074f
@metamask-previews/keyring-controller@27.1.0-preview-771074f
@metamask-previews/logging-controller@8.0.2-preview-771074f
@metamask-previews/message-manager@14.1.2-preview-771074f
@metamask-previews/messenger@1.2.0-preview-771074f
@metamask-previews/messenger-cli@0.2.0-preview-771074f
@metamask-previews/money-account-balance-service@2.1.0-preview-771074f
@metamask-previews/money-account-controller@0.3.3-preview-771074f
@metamask-previews/money-account-upgrade-controller@2.0.5-preview-771074f
@metamask-previews/multichain-account-service@10.0.3-preview-771074f
@metamask-previews/multichain-api-middleware@3.1.4-preview-771074f
@metamask-previews/multichain-network-controller@3.1.3-preview-771074f
@metamask-previews/multichain-transactions-controller@7.1.1-preview-771074f
@metamask-previews/name-controller@9.1.2-preview-771074f
@metamask-previews/network-controller@32.0.0-preview-771074f
@metamask-previews/network-enablement-controller@5.3.0-preview-771074f
@metamask-previews/notification-services-controller@24.1.3-preview-771074f
@metamask-previews/passkey-controller@2.0.1-preview-771074f
@metamask-previews/permission-controller@13.1.1-preview-771074f
@metamask-previews/permission-log-controller@5.1.0-preview-771074f
@metamask-previews/perps-controller@8.1.0-preview-771074f
@metamask-previews/phishing-controller@17.2.0-preview-771074f
@metamask-previews/polling-controller@16.0.6-preview-771074f
@metamask-previews/preferences-controller@23.1.0-preview-771074f
@metamask-previews/profile-metrics-controller@3.2.0-preview-771074f
@metamask-previews/profile-sync-controller@28.2.0-preview-771074f
@metamask-previews/ramps-controller@14.2.0-preview-771074f
@metamask-previews/rate-limit-controller@7.0.1-preview-771074f
@metamask-previews/react-data-query@0.2.1-preview-771074f
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-771074f
@metamask-previews/sample-controllers@5.0.1-preview-771074f
@metamask-previews/seedless-onboarding-controller@10.0.2-preview-771074f
@metamask-previews/selected-network-controller@26.1.3-preview-771074f
@metamask-previews/shield-controller@5.1.2-preview-771074f
@metamask-previews/signature-controller@39.2.5-preview-771074f
@metamask-previews/smart-transactions-controller@24.2.2-preview-771074f
@metamask-previews/snap-account-service@0.3.1-preview-771074f
@metamask-previews/social-controllers@2.3.1-preview-771074f
@metamask-previews/storage-service@1.0.2-preview-771074f
@metamask-previews/subscription-controller@6.2.0-preview-771074f
@metamask-previews/transaction-controller@68.0.1-preview-771074f
@metamask-previews/transaction-pay-controller@23.10.0-preview-771074f
@metamask-previews/user-operation-controller@41.2.4-preview-771074f
@metamask-previews/wallet@3.0.0-preview-771074f
@metamask-previews/wallet-cli@0.0.0-preview-771074f

@FrederikBolding FrederikBolding force-pushed the fb/network-controller-wallet-lib branch from 771074f to 07a7eec Compare June 23, 2026 08:57
sirtimid added a commit that referenced this pull request Jun 23, 2026
Add `createWallet`, which constructs a `@metamask/wallet` `Wallet` backed by
the SQLite `KeyValueStore`, hydrates it from persisted state, imports the
secret recovery phrase on first run, and returns a resilient `dispose`
teardown handle (unsubscribe → wallet.destroy → store.close). Add the daemon
process entry point (`daemon-entry.ts`) that wires `createWallet` into the
JSON-RPC socket server with PID-slot claiming and graceful shutdown.

Adapted from Erik Marks's #8446 modules with these deviations:
- Use the current `@metamask/wallet` `instanceOptions` API, populating the
  now-required `storageService` (in-memory adapter), `connectivityController`
  (`AlwaysOnlineAdapter`), and `remoteFeatureFlagController` slots. Drop the
  old flat `Wallet({...})` options.
- Drop `infuraProjectId` from the `Wallet` call (NetworkController is not yet
  wired on `main`); keep the env guard with a TODO(#9001).
- Return `{ wallet, dispose }` instead of `{ wallet, store }`.
- Construct a short-lived metadata probe so `loadState` can filter persisted
  rows against the live controller metadata.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
sirtimid added a commit that referenced this pull request Jun 23, 2026
Add `createWallet`, which constructs a `@metamask/wallet` `Wallet` backed by
the SQLite `KeyValueStore`, hydrates it from persisted state, imports the
secret recovery phrase on first run, and returns a resilient `dispose`
teardown handle (unsubscribe → wallet.destroy → store.close). Add the daemon
process entry point (`daemon-entry.ts`) that wires `createWallet` into the
JSON-RPC socket server with PID-slot claiming and graceful shutdown.

Adapted from Erik Marks's #8446 modules with these deviations:
- Use the current `@metamask/wallet` `instanceOptions` API, populating the
  now-required `storageService` (in-memory adapter), `connectivityController`
  (`AlwaysOnlineAdapter`), and `remoteFeatureFlagController` slots. Drop the
  old flat `Wallet({...})` options.
- Drop `infuraProjectId` from the `Wallet` call (NetworkController is not yet
  wired on `main`); keep the env guard with a TODO(#9001).
- Return `{ wallet, dispose }` instead of `{ wallet, store }`.
- Construct a short-lived metadata probe so `loadState` can filter persisted
  rows against the live controller metadata.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
sirtimid added a commit that referenced this pull request Jun 23, 2026
Add `createWallet`, which constructs a `@metamask/wallet` `Wallet` backed by
the SQLite `KeyValueStore`, hydrates it from persisted state, imports the
secret recovery phrase on first run, and returns a resilient `dispose`
teardown handle (unsubscribe → wallet.destroy → store.close). Add the daemon
process entry point (`daemon-entry.ts`) that wires `createWallet` into the
JSON-RPC socket server with PID-slot claiming and graceful shutdown.

Adapted from Erik Marks's #8446 modules with these deviations:
- Use the current `@metamask/wallet` `instanceOptions` API, populating the
  now-required `storageService` (in-memory adapter), `connectivityController`
  (`AlwaysOnlineAdapter`), and `remoteFeatureFlagController` slots. Drop the
  old flat `Wallet({...})` options.
- Drop `infuraProjectId` from the `Wallet` call (NetworkController is not yet
  wired on `main`); keep the env guard with a TODO(#9001).
- Return `{ wallet, dispose }` instead of `{ wallet, store }`.
- Construct a short-lived metadata probe so `loadState` can filter persisted
  rows against the live controller metadata.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@FrederikBolding FrederikBolding changed the title feat(wallet): Add NetworkController initialization feat(wallet)!: Add NetworkController initialization Jun 23, 2026
@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@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@7.5.2-preview-ed0047684
@metamask-previews/accounts-controller@39.0.2-preview-ed0047684
@metamask-previews/address-book-controller@7.1.2-preview-ed0047684
@metamask-previews/ai-controllers@0.7.0-preview-ed0047684
@metamask-previews/analytics-controller@1.1.1-preview-ed0047684
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-ed0047684
@metamask-previews/announcement-controller@8.1.0-preview-ed0047684
@metamask-previews/app-metadata-controller@2.0.1-preview-ed0047684
@metamask-previews/approval-controller@9.0.2-preview-ed0047684
@metamask-previews/assets-controller@9.0.2-preview-ed0047684
@metamask-previews/assets-controllers@109.2.1-preview-ed0047684
@metamask-previews/authenticated-user-storage@2.1.0-preview-ed0047684
@metamask-previews/base-controller@9.1.0-preview-ed0047684
@metamask-previews/base-data-service@0.1.3-preview-ed0047684
@metamask-previews/bitcoin-regtest-up@0.0.0-preview-ed0047684
@metamask-previews/bridge-controller@76.0.0-preview-ed0047684
@metamask-previews/bridge-status-controller@72.2.0-preview-ed0047684
@metamask-previews/build-utils@3.0.4-preview-ed0047684
@metamask-previews/chain-agnostic-permission@1.6.2-preview-ed0047684
@metamask-previews/chomp-api-service@3.1.0-preview-ed0047684
@metamask-previews/claims-controller@0.5.3-preview-ed0047684
@metamask-previews/client-controller@1.0.1-preview-ed0047684
@metamask-previews/compliance-controller@2.1.0-preview-ed0047684
@metamask-previews/composable-controller@12.0.1-preview-ed0047684
@metamask-previews/config-registry-controller@0.4.1-preview-ed0047684
@metamask-previews/connectivity-controller@0.2.0-preview-ed0047684
@metamask-previews/controller-utils@12.3.0-preview-ed0047684
@metamask-previews/core-backend@6.3.3-preview-ed0047684
@metamask-previews/delegation-controller@3.0.2-preview-ed0047684
@metamask-previews/earn-controller@12.2.1-preview-ed0047684
@metamask-previews/eip-5792-middleware@3.0.4-preview-ed0047684
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-ed0047684
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-ed0047684
@metamask-previews/ens-controller@19.1.4-preview-ed0047684
@metamask-previews/eth-block-tracker@15.0.1-preview-ed0047684
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-ed0047684
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-ed0047684
@metamask-previews/foundryup@1.0.1-preview-ed0047684
@metamask-previews/gas-fee-controller@26.2.3-preview-ed0047684
@metamask-previews/gator-permissions-controller@4.2.1-preview-ed0047684
@metamask-previews/geolocation-controller@0.1.3-preview-ed0047684
@metamask-previews/java-tron-up@0.0.0-preview-ed0047684
@metamask-previews/json-rpc-engine@10.5.0-preview-ed0047684
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-ed0047684
@metamask-previews/keyring-controller@27.1.0-preview-ed0047684
@metamask-previews/logging-controller@8.0.2-preview-ed0047684
@metamask-previews/message-manager@14.1.2-preview-ed0047684
@metamask-previews/messenger@1.2.0-preview-ed0047684
@metamask-previews/messenger-cli@0.2.0-preview-ed0047684
@metamask-previews/money-account-balance-service@2.1.1-preview-ed0047684
@metamask-previews/money-account-controller@0.3.3-preview-ed0047684
@metamask-previews/money-account-upgrade-controller@2.1.0-preview-ed0047684
@metamask-previews/multichain-account-service@10.0.3-preview-ed0047684
@metamask-previews/multichain-api-middleware@3.1.5-preview-ed0047684
@metamask-previews/multichain-network-controller@3.1.4-preview-ed0047684
@metamask-previews/multichain-transactions-controller@7.1.1-preview-ed0047684
@metamask-previews/name-controller@9.1.2-preview-ed0047684
@metamask-previews/network-controller@33.0.0-preview-ed0047684
@metamask-previews/network-enablement-controller@5.4.0-preview-ed0047684
@metamask-previews/notification-services-controller@24.2.0-preview-ed0047684
@metamask-previews/passkey-controller@2.0.1-preview-ed0047684
@metamask-previews/permission-controller@13.1.1-preview-ed0047684
@metamask-previews/permission-log-controller@5.1.0-preview-ed0047684
@metamask-previews/perps-controller@8.2.0-preview-ed0047684
@metamask-previews/phishing-controller@17.2.0-preview-ed0047684
@metamask-previews/polling-controller@16.0.7-preview-ed0047684
@metamask-previews/preferences-controller@23.1.0-preview-ed0047684
@metamask-previews/profile-metrics-controller@4.0.0-preview-ed0047684
@metamask-previews/profile-sync-controller@28.2.0-preview-ed0047684
@metamask-previews/ramps-controller@14.3.0-preview-ed0047684
@metamask-previews/rate-limit-controller@7.0.1-preview-ed0047684
@metamask-previews/react-data-query@0.2.1-preview-ed0047684
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-ed0047684
@metamask-previews/sample-controllers@5.0.2-preview-ed0047684
@metamask-previews/seedless-onboarding-controller@10.0.2-preview-ed0047684
@metamask-previews/selected-network-controller@26.1.4-preview-ed0047684
@metamask-previews/shield-controller@5.1.2-preview-ed0047684
@metamask-previews/signature-controller@39.2.6-preview-ed0047684
@metamask-previews/smart-transactions-controller@24.2.3-preview-ed0047684
@metamask-previews/snap-account-service@0.3.1-preview-ed0047684
@metamask-previews/social-controllers@2.3.1-preview-ed0047684
@metamask-previews/solana-test-validator-up@0.0.0-preview-ed0047684
@metamask-previews/storage-service@1.0.2-preview-ed0047684
@metamask-previews/subscription-controller@6.2.0-preview-ed0047684
@metamask-previews/transaction-controller@68.1.1-preview-ed0047684
@metamask-previews/transaction-pay-controller@23.14.0-preview-ed0047684
@metamask-previews/user-operation-controller@41.2.5-preview-ed0047684
@metamask-previews/wallet@4.0.0-preview-ed0047684
@metamask-previews/wallet-cli@0.0.0-preview-ed0047684

@FrederikBolding FrederikBolding force-pushed the fb/network-controller-wallet-lib branch from ed00476 to d608d40 Compare June 23, 2026 13:58
@FrederikBolding FrederikBolding marked this pull request as ready for review June 24, 2026 10:20
@FrederikBolding FrederikBolding requested a review from a team as a code owner June 24, 2026 10:20
@FrederikBolding FrederikBolding force-pushed the fb/network-controller-wallet-lib branch from d608d40 to 9b4a53b Compare June 24, 2026 10:48
Comment thread packages/wallet/src/Wallet.ts Outdated
(instance): instance is Extract<typeof instance, { init: unknown }> =>
// We do actually want to check the prototype here.
// eslint-disable-next-line no-restricted-syntax
'init' in instance,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Should we check that init is a function just in case?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Sure, we can 👍

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@FrederikBolding FrederikBolding requested a review from Mrtenz June 24, 2026 11:43
@FrederikBolding FrederikBolding added this pull request to the merge queue Jun 24, 2026
Merged via the queue into main with commit cfe59a1 Jun 24, 2026
396 checks passed
@FrederikBolding FrederikBolding deleted the fb/network-controller-wallet-lib branch June 24, 2026 11:55
sirtimid added a commit that referenced this pull request Jun 25, 2026
Add `createWallet`, which constructs a `@metamask/wallet` `Wallet` backed by
the SQLite `KeyValueStore`, hydrates it from persisted state, imports the
secret recovery phrase on first run, and returns a resilient `dispose`
teardown handle (unsubscribe → wallet.destroy → store.close). Add the daemon
process entry point (`daemon-entry.ts`) that wires `createWallet` into the
JSON-RPC socket server with PID-slot claiming and graceful shutdown.

Adapted from Erik Marks's #8446 modules with these deviations:
- Use the current `@metamask/wallet` `instanceOptions` API, populating the
  now-required `storageService` (in-memory adapter), `connectivityController`
  (`AlwaysOnlineAdapter`), and `remoteFeatureFlagController` slots. Drop the
  old flat `Wallet({...})` options.
- Drop `infuraProjectId` from the `Wallet` call (NetworkController is not yet
  wired on `main`); keep the env guard with a TODO(#9001).
- Return `{ wallet, dispose }` instead of `{ wallet, store }`.
- Construct a short-lived metadata probe so `loadState` can filter persisted
  rows against the live controller metadata.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
sirtimid added a commit that referenced this pull request Jun 25, 2026
…let factory

`@metamask/wallet` 5.0.0 (#9001) makes
`instanceOptions.networkController.infuraProjectId` a required option.
Thread the daemon's already-validated `INFURA_PROJECT_ID` through
`createWallet` and `buildInstanceOptions` (and the metadata probe) into the
new `networkController` slot.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
sirtimid added a commit that referenced this pull request Jun 25, 2026
`@metamask/wallet` 5.0.0 (#9001) added `Wallet.init()`, which runs each
instance's `init()` — notably `NetworkController.init()`, which applies the
selected network so a provider proxy is available. Without it the daemon
would serve RPC against a wallet that has no usable provider.

Call `wallet.init()` after subscribing persistence (so init-driven state
changes are written through) and before first-run SRP import. `init()`
settles every step independently, so surface any rejected step via the
logger rather than letting it pass silently.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
sirtimid added a commit that referenced this pull request Jun 25, 2026
#9001 (NetworkController) landed and wired on main, making
`infuraProjectId` a required field of `CreateWalletConfig` and adding
`wallet.init()` to the factory's startup path. Pass a dummy project ID so
the e2e type-checks against the merged factory, and note in the comment
that `init()` (NetworkController) is offline-safe too — it is synchronous
and never calls `lookupNetwork`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
sirtimid added a commit that referenced this pull request Jun 29, 2026
#9001 (NetworkController) landed and wired on main, making
`infuraProjectId` a required field of `CreateWalletConfig` and adding
`wallet.init()` to the factory's startup path. Pass a dummy project ID so
the e2e type-checks against the merged factory, and note in the comment
that `init()` (NetworkController) is offline-safe too — it is synchronous
and never calls `lookupNetwork`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

2 participants