Skip to content

fix(assets-controller): seed native balances after account refresh#9388

Open
salimtb wants to merge 3 commits into
mainfrom
fix/seed-native-metadata-new-account
Open

fix(assets-controller): seed native balances after account refresh#9388
salimtb wants to merge 3 commits into
mainfrom
fix/seed-native-metadata-new-account

Conversation

@salimtb

@salimtb salimtb commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Zero-balancing for new accounts ran before getAssets on account-tree changes, so assetsBalance was often never populated for the new account. Seed native zero balances using the refreshed account list after the fetch.

  • Fetch balances via RpcDataSource when a user switches EVM accounts, enables RPC-only networks, switches account groups, or adds a new account to the account tree
  • Fixes missing assetsBalance for newly added accounts on custom/RPC networks (e.g. DXC / eip155:50) where assetsInfo was present but balances were not fetched

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

Note

Medium Risk
Changes several hot paths for balance refresh and adds a new messenger subscription that requires host wiring; impact is localized to assets state merging but affects RPC-only and custom networks where API paths may not populate balances.

Overview
Adds a dedicated #fetchAccountBalancesViaRpc path that runs RpcDataSource balance middleware after the normal getAssets refresh and merges results into state, limited to chains RPC currently owns. This is wired into account group changes, new accounts on the account tree, newly enabled networks, EVM network picker switches, and a new AccountsController:selectedEvmAccountChange handler for switching EVM addresses within the same group.

The changelog notes that integrators must delegate AccountsController:selectedEvmAccountChange to the AssetsController messenger so in-group EVM switches refresh balances. Messenger allowed event types are aligned with *StateChangeEvent naming from related controllers.

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

salimtb added 2 commits July 4, 2026 12:57
Zero-balancing for new accounts ran before getAssets on account-tree
changes, so assetsBalance was often never populated for the new account.
Seed native zero balances using the refreshed account list after the fetch.
@salimtb salimtb marked this pull request as ready for review July 4, 2026 11:10
@salimtb salimtb requested review from a team as code owners July 4, 2026 11:10
@salimtb salimtb deployed to default-branch July 4, 2026 11:10 — with GitHub Actions Active
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