Skip to content

feat(assets-controller): gate non-EVM account-activity websocket behind a namespace feature flag#9430

Draft
salimtb wants to merge 3 commits into
mainfrom
feat/solana-account-activity-websocket-feature-flag
Draft

feat(assets-controller): gate non-EVM account-activity websocket behind a namespace feature flag#9430
salimtb wants to merge 3 commits into
mainfrom
feat/solana-account-activity-websocket-feature-flag

Conversation

@salimtb

@salimtb salimtb commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Add a generic webSocketEnabledNamespaces constructor option so non-EVM account-activity balances (starting with Solana, extensible to e.g. Tron) are served over WebSocket only when their CAIP namespace is enabled. EVM (eip155) is always served over WebSocket.

  • BackendWebsocketDataSource claims an enabled namespace's chains (from a namespace -> chains map, since the supported-networks API is EVM-only) while the WebSocket is connected, and subscribes their account-activity channels. Disabled namespaces are left unclaimed and unsubscribed so the SnapDataSource serves them.
  • When a chain (or a whole non-EVM namespace) is reported down via system-notifications, it is excluded from the claimable set and automatically falls back to the SnapDataSource until it recovers.
  • AccountsApiDataSource is documented as EVM-only (removing the stale "restore solana" TODO); non-EVM is served by WebSocket or Snap, keeping Snap as the sole non-EVM fallback.

Explanation

References

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

salimtb added 2 commits July 8, 2026 18:56
…nd a namespace feature flag

Add a generic `webSocketEnabledNamespaces` constructor option so non-EVM
account-activity balances (starting with Solana, extensible to e.g. Tron)
are served over WebSocket only when their CAIP namespace is enabled. EVM
(`eip155`) is always served over WebSocket.

- BackendWebsocketDataSource claims an enabled namespace's chains (from a
  namespace -> chains map, since the supported-networks API is EVM-only)
  while the WebSocket is connected, and subscribes their account-activity
  channels. Disabled namespaces are left unclaimed and unsubscribed so the
  SnapDataSource serves them.
- When a chain (or a whole non-EVM namespace) is reported down via
  `system-notifications`, it is excluded from the claimable set and
  automatically falls back to the SnapDataSource until it recovers.
- AccountsApiDataSource is documented as EVM-only (removing the stale
  "restore solana" TODO); non-EVM is served by WebSocket or Snap, keeping
  Snap as the sole non-EVM fallback.
@salimtb salimtb force-pushed the feat/solana-account-activity-websocket-feature-flag branch from 978e821 to ce89685 Compare July 8, 2026 17:12
@salimtb salimtb changed the title feat(assets-controller): gate non-EVM account-activity websocket behi… feat(assets-controller): gate non-EVM account-activity websocket behind a namespace feature flag Jul 8, 2026
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@salimtb

salimtb commented Jul 8, 2026

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

github-actions Bot commented Jul 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.3-preview-186382c0a
@metamask-previews/accounts-controller@39.0.4-preview-186382c0a
@metamask-previews/address-book-controller@7.1.2-preview-186382c0a
@metamask-previews/ai-controllers@0.8.0-preview-186382c0a
@metamask-previews/analytics-controller@1.2.1-preview-186382c0a
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-186382c0a
@metamask-previews/announcement-controller@8.1.0-preview-186382c0a
@metamask-previews/app-metadata-controller@2.0.1-preview-186382c0a
@metamask-previews/approval-controller@9.0.2-preview-186382c0a
@metamask-previews/assets-controller@10.1.0-preview-186382c0a
@metamask-previews/assets-controllers@109.3.0-preview-186382c0a
@metamask-previews/authenticated-user-storage@3.0.0-preview-186382c0a
@metamask-previews/base-controller@9.1.0-preview-186382c0a
@metamask-previews/base-data-service@0.1.3-preview-186382c0a
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-186382c0a
@metamask-previews/bridge-controller@77.3.2-preview-186382c0a
@metamask-previews/bridge-status-controller@74.1.0-preview-186382c0a
@metamask-previews/build-utils@3.0.4-preview-186382c0a
@metamask-previews/chain-agnostic-permission@1.7.0-preview-186382c0a
@metamask-previews/chomp-api-service@3.1.0-preview-186382c0a
@metamask-previews/claims-controller@0.5.3-preview-186382c0a
@metamask-previews/client-controller@1.0.1-preview-186382c0a
@metamask-previews/client-utils@0.0.0-preview-186382c0a
@metamask-previews/compliance-controller@2.1.0-preview-186382c0a
@metamask-previews/composable-controller@12.0.1-preview-186382c0a
@metamask-previews/config-registry-controller@0.4.1-preview-186382c0a
@metamask-previews/connectivity-controller@0.2.0-preview-186382c0a
@metamask-previews/controller-utils@12.3.0-preview-186382c0a
@metamask-previews/core-backend@6.5.0-preview-186382c0a
@metamask-previews/delegation-controller@3.0.2-preview-186382c0a
@metamask-previews/earn-controller@12.2.2-preview-186382c0a
@metamask-previews/eip-5792-middleware@3.0.4-preview-186382c0a
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-186382c0a
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-186382c0a
@metamask-previews/ens-controller@19.1.5-preview-186382c0a
@metamask-previews/eth-block-tracker@15.0.1-preview-186382c0a
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-186382c0a
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-186382c0a
@metamask-previews/foundryup@1.0.1-preview-186382c0a
@metamask-previews/gas-fee-controller@26.2.4-preview-186382c0a
@metamask-previews/gator-permissions-controller@4.2.2-preview-186382c0a
@metamask-previews/geolocation-controller@0.1.3-preview-186382c0a
@metamask-previews/java-tron-up@1.0.0-preview-186382c0a
@metamask-previews/json-rpc-engine@10.5.0-preview-186382c0a
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-186382c0a
@metamask-previews/keyring-controller@27.1.0-preview-186382c0a
@metamask-previews/local-node-utils@1.0.0-preview-186382c0a
@metamask-previews/logging-controller@8.0.2-preview-186382c0a
@metamask-previews/message-manager@14.1.2-preview-186382c0a
@metamask-previews/messenger@2.0.0-preview-186382c0a
@metamask-previews/messenger-cli@0.2.0-preview-186382c0a
@metamask-previews/money-account-api-data-service@0.1.0-preview-186382c0a
@metamask-previews/money-account-balance-service@2.1.2-preview-186382c0a
@metamask-previews/money-account-controller@0.3.3-preview-186382c0a
@metamask-previews/money-account-upgrade-controller@2.2.1-preview-186382c0a
@metamask-previews/multichain-account-service@11.1.0-preview-186382c0a
@metamask-previews/multichain-api-middleware@4.0.1-preview-186382c0a
@metamask-previews/multichain-network-controller@3.2.1-preview-186382c0a
@metamask-previews/multichain-transactions-controller@7.1.1-preview-186382c0a
@metamask-previews/name-controller@9.1.2-preview-186382c0a
@metamask-previews/network-controller@34.0.0-preview-186382c0a
@metamask-previews/network-enablement-controller@5.4.1-preview-186382c0a
@metamask-previews/notification-services-controller@25.0.0-preview-186382c0a
@metamask-previews/passkey-controller@2.0.1-preview-186382c0a
@metamask-previews/permission-controller@13.1.1-preview-186382c0a
@metamask-previews/permission-log-controller@5.1.0-preview-186382c0a
@metamask-previews/perps-controller@9.2.1-preview-186382c0a
@metamask-previews/phishing-controller@17.2.0-preview-186382c0a
@metamask-previews/platform-api-docs@0.0.0-preview-186382c0a
@metamask-previews/polling-controller@16.0.8-preview-186382c0a
@metamask-previews/preferences-controller@23.1.0-preview-186382c0a
@metamask-previews/profile-metrics-controller@4.0.1-preview-186382c0a
@metamask-previews/profile-sync-controller@28.2.0-preview-186382c0a
@metamask-previews/ramps-controller@15.1.0-preview-186382c0a
@metamask-previews/rate-limit-controller@7.0.1-preview-186382c0a
@metamask-previews/react-data-query@0.2.1-preview-186382c0a
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-186382c0a
@metamask-previews/sample-controllers@5.0.3-preview-186382c0a
@metamask-previews/seedless-onboarding-controller@10.0.3-preview-186382c0a
@metamask-previews/selected-network-controller@26.1.5-preview-186382c0a
@metamask-previews/shield-controller@5.1.2-preview-186382c0a
@metamask-previews/signature-controller@39.2.7-preview-186382c0a
@metamask-previews/smart-transactions-controller@25.0.0-preview-186382c0a
@metamask-previews/snap-account-service@1.0.0-preview-186382c0a
@metamask-previews/social-controllers@2.4.0-preview-186382c0a
@metamask-previews/solana-test-validator-up@1.0.0-preview-186382c0a
@metamask-previews/stellar-quickstart-up@0.0.0-preview-186382c0a
@metamask-previews/storage-service@1.0.2-preview-186382c0a
@metamask-previews/subscription-controller@6.2.0-preview-186382c0a
@metamask-previews/transaction-controller@68.3.0-preview-186382c0a
@metamask-previews/transaction-pay-controller@23.17.4-preview-186382c0a
@metamask-previews/user-operation-controller@41.2.6-preview-186382c0a
@metamask-previews/wallet@7.0.0-preview-186382c0a
@metamask-previews/wallet-cli@0.0.0-preview-186382c0a

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.

1 participant