Skip to content

feat: add Sentry traces for Assets Health dashboard#8310

Merged
salimtb merged 7 commits intomainfrom
feat/assets-health-dashboard-traces
Mar 26, 2026
Merged

feat: add Sentry traces for Assets Health dashboard#8310
salimtb merged 7 commits intomainfrom
feat/assets-health-dashboard-traces

Conversation

@salimtb
Copy link
Copy Markdown
Contributor

@salimtb salimtb commented Mar 26, 2026

Add comprehensive tracing across AssetsController and balance selector to power an Assets Health dashboard in Sentry. Traces cover data source timing, errors, full fetch pipeline, update pipeline, subscription failures, state size (once on app start), and aggregated balance selector performance.

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

Low Risk
Primarily adds non-blocking telemetry (new Sentry trace emissions and timing measurements) with an optional selector parameter; low functional impact beyond minor timing/overhead changes.

Overview
Adds comprehensive Sentry tracing across AssetsController to power an Assets Health dashboard, including per-middleware timings and failures, end-to-end fetch timing, subscription failure reporting, update/enrichment pipeline timing, and a once-per-session state size snapshot.

Updates timing measurement to use performance.now(), centralizes trace emission via a safe #emitTrace helper, and adjusts tests for the renamed AssetsControllerFirstInitFetch span. Also adds an optional trace callback parameter to getAggregatedBalanceForAccount to measure selector compute time and include asset/network/account counts.

Written by Cursor Bugbot for commit 8427f87. This will update automatically on new commits. Configure here.

salimtb added 2 commits March 26, 2026 11:37
Add comprehensive tracing across AssetsController and balance selector
to power an Assets Health dashboard in Sentry. Traces cover data source
timing, errors, full fetch pipeline, update pipeline, subscription
failures, state size (once on app start), and aggregated balance
selector performance.
@salimtb
Copy link
Copy Markdown
Contributor Author

salimtb commented Mar 26, 2026

@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@5.0.1-preview-dbd93752f
@metamask-previews/accounts-controller@37.0.0-preview-dbd93752f
@metamask-previews/address-book-controller@7.1.0-preview-dbd93752f
@metamask-previews/ai-controllers@0.6.0-preview-dbd93752f
@metamask-previews/analytics-controller@1.0.0-preview-dbd93752f
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-dbd93752f
@metamask-previews/announcement-controller@8.0.0-preview-dbd93752f
@metamask-previews/app-metadata-controller@2.0.0-preview-dbd93752f
@metamask-previews/approval-controller@9.0.0-preview-dbd93752f
@metamask-previews/assets-controller@3.1.1-preview-dbd93752f
@metamask-previews/assets-controllers@101.0.1-preview-dbd93752f
@metamask-previews/base-controller@9.0.0-preview-dbd93752f
@metamask-previews/base-data-service@0.1.0-preview-dbd93752f
@metamask-previews/bridge-controller@69.2.1-preview-dbd93752f
@metamask-previews/bridge-status-controller@70.0.1-preview-dbd93752f
@metamask-previews/build-utils@3.0.4-preview-dbd93752f
@metamask-previews/chain-agnostic-permission@1.5.0-preview-dbd93752f
@metamask-previews/claims-controller@0.4.3-preview-dbd93752f
@metamask-previews/client-controller@1.0.0-preview-dbd93752f
@metamask-previews/compliance-controller@1.0.1-preview-dbd93752f
@metamask-previews/composable-controller@12.0.0-preview-dbd93752f
@metamask-previews/config-registry-controller@0.1.1-preview-dbd93752f
@metamask-previews/connectivity-controller@0.1.0-preview-dbd93752f
@metamask-previews/controller-utils@11.19.0-preview-dbd93752f
@metamask-previews/core-backend@6.2.0-preview-dbd93752f
@metamask-previews/delegation-controller@2.0.2-preview-dbd93752f
@metamask-previews/earn-controller@11.1.2-preview-dbd93752f
@metamask-previews/eip-5792-middleware@3.0.1-preview-dbd93752f
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-dbd93752f
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-dbd93752f
@metamask-previews/ens-controller@19.1.0-preview-dbd93752f
@metamask-previews/error-reporting-service@3.0.1-preview-dbd93752f
@metamask-previews/eth-block-tracker@15.0.1-preview-dbd93752f
@metamask-previews/eth-json-rpc-middleware@23.1.0-preview-dbd93752f
@metamask-previews/eth-json-rpc-provider@6.0.0-preview-dbd93752f
@metamask-previews/foundryup@1.0.1-preview-dbd93752f
@metamask-previews/gas-fee-controller@26.1.0-preview-dbd93752f
@metamask-previews/gator-permissions-controller@2.1.1-preview-dbd93752f
@metamask-previews/geolocation-controller@0.1.1-preview-dbd93752f
@metamask-previews/json-rpc-engine@10.2.3-preview-dbd93752f
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-dbd93752f
@metamask-previews/keyring-controller@25.1.0-preview-dbd93752f
@metamask-previews/logging-controller@8.0.0-preview-dbd93752f
@metamask-previews/message-manager@14.1.0-preview-dbd93752f
@metamask-previews/messenger@0.3.0-preview-dbd93752f
@metamask-previews/multichain-account-service@7.1.0-preview-dbd93752f
@metamask-previews/multichain-api-middleware@2.0.0-preview-dbd93752f
@metamask-previews/multichain-network-controller@3.0.5-preview-dbd93752f
@metamask-previews/multichain-transactions-controller@7.0.2-preview-dbd93752f
@metamask-previews/name-controller@9.1.0-preview-dbd93752f
@metamask-previews/network-controller@30.0.0-preview-dbd93752f
@metamask-previews/network-enablement-controller@5.0.0-preview-dbd93752f
@metamask-previews/notification-services-controller@23.0.0-preview-dbd93752f
@metamask-previews/permission-controller@12.2.1-preview-dbd93752f
@metamask-previews/permission-log-controller@5.0.0-preview-dbd93752f
@metamask-previews/perps-controller@1.3.0-preview-dbd93752f
@metamask-previews/phishing-controller@17.0.0-preview-dbd93752f
@metamask-previews/polling-controller@16.0.3-preview-dbd93752f
@metamask-previews/preferences-controller@23.0.0-preview-dbd93752f
@metamask-previews/profile-metrics-controller@3.1.1-preview-dbd93752f
@metamask-previews/profile-sync-controller@28.0.0-preview-dbd93752f
@metamask-previews/ramps-controller@12.0.1-preview-dbd93752f
@metamask-previews/rate-limit-controller@7.0.0-preview-dbd93752f
@metamask-previews/react-data-query@0.1.0-preview-dbd93752f
@metamask-previews/remote-feature-flag-controller@4.1.0-preview-dbd93752f
@metamask-previews/sample-controllers@4.0.3-preview-dbd93752f
@metamask-previews/seedless-onboarding-controller@9.0.0-preview-dbd93752f
@metamask-previews/selected-network-controller@26.0.3-preview-dbd93752f
@metamask-previews/shield-controller@5.0.2-preview-dbd93752f
@metamask-previews/signature-controller@39.1.0-preview-dbd93752f
@metamask-previews/storage-service@1.0.0-preview-dbd93752f
@metamask-previews/subscription-controller@6.1.0-preview-dbd93752f
@metamask-previews/transaction-controller@63.2.0-preview-dbd93752f
@metamask-previews/transaction-pay-controller@18.1.0-preview-dbd93752f
@metamask-previews/user-operation-controller@41.1.0-preview-dbd93752f

Replace hardcoded trace name strings with named constants
(TRACE_FIRST_INIT_FETCH, TRACE_FULL_FETCH, TRACE_DATA_SOURCE_TIMING,
etc.) so they are easy to find and refactor.
@salimtb
Copy link
Copy Markdown
Contributor Author

salimtb commented Mar 26, 2026

@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@5.0.1-preview-55f19615e
@metamask-previews/accounts-controller@37.0.0-preview-55f19615e
@metamask-previews/address-book-controller@7.1.0-preview-55f19615e
@metamask-previews/ai-controllers@0.6.0-preview-55f19615e
@metamask-previews/analytics-controller@1.0.0-preview-55f19615e
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-55f19615e
@metamask-previews/announcement-controller@8.0.0-preview-55f19615e
@metamask-previews/app-metadata-controller@2.0.0-preview-55f19615e
@metamask-previews/approval-controller@9.0.0-preview-55f19615e
@metamask-previews/assets-controller@3.1.1-preview-55f19615e
@metamask-previews/assets-controllers@101.0.1-preview-55f19615e
@metamask-previews/base-controller@9.0.0-preview-55f19615e
@metamask-previews/base-data-service@0.1.0-preview-55f19615e
@metamask-previews/bridge-controller@69.2.1-preview-55f19615e
@metamask-previews/bridge-status-controller@70.0.1-preview-55f19615e
@metamask-previews/build-utils@3.0.4-preview-55f19615e
@metamask-previews/chain-agnostic-permission@1.5.0-preview-55f19615e
@metamask-previews/claims-controller@0.4.3-preview-55f19615e
@metamask-previews/client-controller@1.0.0-preview-55f19615e
@metamask-previews/compliance-controller@1.0.1-preview-55f19615e
@metamask-previews/composable-controller@12.0.0-preview-55f19615e
@metamask-previews/config-registry-controller@0.1.1-preview-55f19615e
@metamask-previews/connectivity-controller@0.1.0-preview-55f19615e
@metamask-previews/controller-utils@11.19.0-preview-55f19615e
@metamask-previews/core-backend@6.2.0-preview-55f19615e
@metamask-previews/delegation-controller@2.0.2-preview-55f19615e
@metamask-previews/earn-controller@11.1.2-preview-55f19615e
@metamask-previews/eip-5792-middleware@3.0.1-preview-55f19615e
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-55f19615e
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-55f19615e
@metamask-previews/ens-controller@19.1.0-preview-55f19615e
@metamask-previews/error-reporting-service@3.0.1-preview-55f19615e
@metamask-previews/eth-block-tracker@15.0.1-preview-55f19615e
@metamask-previews/eth-json-rpc-middleware@23.1.0-preview-55f19615e
@metamask-previews/eth-json-rpc-provider@6.0.0-preview-55f19615e
@metamask-previews/foundryup@1.0.1-preview-55f19615e
@metamask-previews/gas-fee-controller@26.1.0-preview-55f19615e
@metamask-previews/gator-permissions-controller@2.1.1-preview-55f19615e
@metamask-previews/geolocation-controller@0.1.1-preview-55f19615e
@metamask-previews/json-rpc-engine@10.2.3-preview-55f19615e
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-55f19615e
@metamask-previews/keyring-controller@25.1.0-preview-55f19615e
@metamask-previews/logging-controller@8.0.0-preview-55f19615e
@metamask-previews/message-manager@14.1.0-preview-55f19615e
@metamask-previews/messenger@0.3.0-preview-55f19615e
@metamask-previews/multichain-account-service@7.1.0-preview-55f19615e
@metamask-previews/multichain-api-middleware@2.0.0-preview-55f19615e
@metamask-previews/multichain-network-controller@3.0.5-preview-55f19615e
@metamask-previews/multichain-transactions-controller@7.0.2-preview-55f19615e
@metamask-previews/name-controller@9.1.0-preview-55f19615e
@metamask-previews/network-controller@30.0.0-preview-55f19615e
@metamask-previews/network-enablement-controller@5.0.0-preview-55f19615e
@metamask-previews/notification-services-controller@23.0.0-preview-55f19615e
@metamask-previews/permission-controller@12.2.1-preview-55f19615e
@metamask-previews/permission-log-controller@5.0.0-preview-55f19615e
@metamask-previews/perps-controller@1.3.0-preview-55f19615e
@metamask-previews/phishing-controller@17.0.0-preview-55f19615e
@metamask-previews/polling-controller@16.0.3-preview-55f19615e
@metamask-previews/preferences-controller@23.0.0-preview-55f19615e
@metamask-previews/profile-metrics-controller@3.1.1-preview-55f19615e
@metamask-previews/profile-sync-controller@28.0.0-preview-55f19615e
@metamask-previews/ramps-controller@12.0.1-preview-55f19615e
@metamask-previews/rate-limit-controller@7.0.0-preview-55f19615e
@metamask-previews/react-data-query@0.1.0-preview-55f19615e
@metamask-previews/remote-feature-flag-controller@4.1.0-preview-55f19615e
@metamask-previews/sample-controllers@4.0.3-preview-55f19615e
@metamask-previews/seedless-onboarding-controller@9.0.0-preview-55f19615e
@metamask-previews/selected-network-controller@26.0.3-preview-55f19615e
@metamask-previews/shield-controller@5.0.2-preview-55f19615e
@metamask-previews/signature-controller@39.1.0-preview-55f19615e
@metamask-previews/storage-service@1.0.0-preview-55f19615e
@metamask-previews/subscription-controller@6.1.0-preview-55f19615e
@metamask-previews/transaction-controller@63.2.0-preview-55f19615e
@metamask-previews/transaction-pay-controller@18.1.0-preview-55f19615e
@metamask-previews/user-operation-controller@41.1.0-preview-55f19615e

@salimtb salimtb marked this pull request as ready for review March 26, 2026 11:47
@salimtb salimtb requested review from a team as code owners March 26, 2026 11:47
@salimtb
Copy link
Copy Markdown
Contributor Author

salimtb commented Mar 26, 2026

@metamaskbot publish-preview

Comment thread packages/assets-controller/src/AssetsController.ts
Comment thread packages/assets-controller/src/selectors/balance.ts
Comment thread packages/assets-controller/src/AssetsController.ts Outdated
@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@5.0.1-preview-55f73f6ce
@metamask-previews/accounts-controller@37.0.0-preview-55f73f6ce
@metamask-previews/address-book-controller@7.1.0-preview-55f73f6ce
@metamask-previews/ai-controllers@0.6.0-preview-55f73f6ce
@metamask-previews/analytics-controller@1.0.0-preview-55f73f6ce
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-55f73f6ce
@metamask-previews/announcement-controller@8.0.0-preview-55f73f6ce
@metamask-previews/app-metadata-controller@2.0.0-preview-55f73f6ce
@metamask-previews/approval-controller@9.0.0-preview-55f73f6ce
@metamask-previews/assets-controller@3.1.1-preview-55f73f6ce
@metamask-previews/assets-controllers@101.0.1-preview-55f73f6ce
@metamask-previews/base-controller@9.0.0-preview-55f73f6ce
@metamask-previews/base-data-service@0.1.0-preview-55f73f6ce
@metamask-previews/bridge-controller@69.2.1-preview-55f73f6ce
@metamask-previews/bridge-status-controller@70.0.1-preview-55f73f6ce
@metamask-previews/build-utils@3.0.4-preview-55f73f6ce
@metamask-previews/chain-agnostic-permission@1.5.0-preview-55f73f6ce
@metamask-previews/claims-controller@0.4.3-preview-55f73f6ce
@metamask-previews/client-controller@1.0.0-preview-55f73f6ce
@metamask-previews/compliance-controller@1.0.1-preview-55f73f6ce
@metamask-previews/composable-controller@12.0.0-preview-55f73f6ce
@metamask-previews/config-registry-controller@0.1.1-preview-55f73f6ce
@metamask-previews/connectivity-controller@0.1.0-preview-55f73f6ce
@metamask-previews/controller-utils@11.19.0-preview-55f73f6ce
@metamask-previews/core-backend@6.2.0-preview-55f73f6ce
@metamask-previews/delegation-controller@2.0.2-preview-55f73f6ce
@metamask-previews/earn-controller@11.1.2-preview-55f73f6ce
@metamask-previews/eip-5792-middleware@3.0.1-preview-55f73f6ce
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-55f73f6ce
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-55f73f6ce
@metamask-previews/ens-controller@19.1.0-preview-55f73f6ce
@metamask-previews/error-reporting-service@3.0.1-preview-55f73f6ce
@metamask-previews/eth-block-tracker@15.0.1-preview-55f73f6ce
@metamask-previews/eth-json-rpc-middleware@23.1.0-preview-55f73f6ce
@metamask-previews/eth-json-rpc-provider@6.0.0-preview-55f73f6ce
@metamask-previews/foundryup@1.0.1-preview-55f73f6ce
@metamask-previews/gas-fee-controller@26.1.0-preview-55f73f6ce
@metamask-previews/gator-permissions-controller@2.1.1-preview-55f73f6ce
@metamask-previews/geolocation-controller@0.1.1-preview-55f73f6ce
@metamask-previews/json-rpc-engine@10.2.3-preview-55f73f6ce
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-55f73f6ce
@metamask-previews/keyring-controller@25.1.0-preview-55f73f6ce
@metamask-previews/logging-controller@8.0.0-preview-55f73f6ce
@metamask-previews/message-manager@14.1.0-preview-55f73f6ce
@metamask-previews/messenger@0.3.0-preview-55f73f6ce
@metamask-previews/multichain-account-service@7.1.0-preview-55f73f6ce
@metamask-previews/multichain-api-middleware@2.0.0-preview-55f73f6ce
@metamask-previews/multichain-network-controller@3.0.5-preview-55f73f6ce
@metamask-previews/multichain-transactions-controller@7.0.2-preview-55f73f6ce
@metamask-previews/name-controller@9.1.0-preview-55f73f6ce
@metamask-previews/network-controller@30.0.0-preview-55f73f6ce
@metamask-previews/network-enablement-controller@5.0.0-preview-55f73f6ce
@metamask-previews/notification-services-controller@23.0.0-preview-55f73f6ce
@metamask-previews/permission-controller@12.2.1-preview-55f73f6ce
@metamask-previews/permission-log-controller@5.0.0-preview-55f73f6ce
@metamask-previews/perps-controller@1.3.0-preview-55f73f6ce
@metamask-previews/phishing-controller@17.0.0-preview-55f73f6ce
@metamask-previews/polling-controller@16.0.3-preview-55f73f6ce
@metamask-previews/preferences-controller@23.0.0-preview-55f73f6ce
@metamask-previews/profile-metrics-controller@3.1.1-preview-55f73f6ce
@metamask-previews/profile-sync-controller@28.0.0-preview-55f73f6ce
@metamask-previews/ramps-controller@12.0.1-preview-55f73f6ce
@metamask-previews/rate-limit-controller@7.0.0-preview-55f73f6ce
@metamask-previews/react-data-query@0.1.0-preview-55f73f6ce
@metamask-previews/remote-feature-flag-controller@4.1.0-preview-55f73f6ce
@metamask-previews/sample-controllers@4.0.3-preview-55f73f6ce
@metamask-previews/seedless-onboarding-controller@9.0.0-preview-55f73f6ce
@metamask-previews/selected-network-controller@26.0.3-preview-55f73f6ce
@metamask-previews/shield-controller@5.0.2-preview-55f73f6ce
@metamask-previews/signature-controller@39.1.0-preview-55f73f6ce
@metamask-previews/storage-service@1.0.0-preview-55f73f6ce
@metamask-previews/subscription-controller@6.1.0-preview-55f73f6ce
@metamask-previews/transaction-controller@63.2.0-preview-55f73f6ce
@metamask-previews/transaction-pay-controller@18.1.0-preview-55f73f6ce
@metamask-previews/user-operation-controller@41.1.0-preview-55f73f6ce

@salimtb salimtb added this pull request to the merge queue Mar 26, 2026
Merged via the queue into main with commit 9f69185 Mar 26, 2026
326 checks passed
@salimtb salimtb deleted the feat/assets-health-dashboard-traces branch March 26, 2026 15:29
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.

3 participants