Skip to content

fix non-evm token type detection#8811

Merged
bergarces merged 4 commits into
mainfrom
fix-non-evm-token-type-detection
May 14, 2026
Merged

fix non-evm token type detection#8811
bergarces merged 4 commits into
mainfrom
fix-non-evm-token-type-detection

Conversation

@bergarces
Copy link
Copy Markdown
Contributor

@bergarces bergarces commented May 14, 2026

Explanation

Currently, all non-evm tokens are being stored as 'erc20', which is wrong. It is not causing any issues in the client, but needs to be corrected.

This fixes it.

image

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
Adjusts asset-type classification logic used to populate assetsInfo, which could affect downstream rendering/formatting for non-EVM assets if CAIP-19 parsing assumptions are wrong, but scope is limited and covered by updated unit tests.

Overview
Fixes incorrect assetsInfo.type classification for non-EVM assets by treating any CAIP-19 */slip44:* identifier as native (not erc20), and by recognizing Solana SPL tokens as spl when the chain namespace is Solana and the asset namespace is token.

Updates both the token-metadata transform (TokenDataSource) and the addCustomAsset pending-metadata path (AssetsController) to use the same namespace-aware rules, exports the shared CaipAssetNamespace enum, and refreshes docs/tests (including switching examples/fixtures from solana:.../spl: to solana:.../token:).

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

@bergarces bergarces marked this pull request as ready for review May 14, 2026 11:03
@bergarces bergarces requested review from a team as code owners May 14, 2026 11:03
@bergarces
Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@bergarces bergarces temporarily deployed to default-branch May 14, 2026 11:04 — with GitHub Actions Inactive
@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.4.0-preview-fe92f4bb3
@metamask-previews/accounts-controller@38.1.1-preview-fe92f4bb3
@metamask-previews/address-book-controller@7.1.2-preview-fe92f4bb3
@metamask-previews/ai-controllers@0.6.3-preview-fe92f4bb3
@metamask-previews/analytics-controller@1.0.1-preview-fe92f4bb3
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-fe92f4bb3
@metamask-previews/announcement-controller@8.1.0-preview-fe92f4bb3
@metamask-previews/app-metadata-controller@2.0.1-preview-fe92f4bb3
@metamask-previews/approval-controller@9.0.1-preview-fe92f4bb3
@metamask-previews/assets-controller@7.1.2-preview-fe92f4bb3
@metamask-previews/assets-controllers@108.1.0-preview-fe92f4bb3
@metamask-previews/authenticated-user-storage@2.0.0-preview-fe92f4bb3
@metamask-previews/base-controller@9.1.0-preview-fe92f4bb3
@metamask-previews/base-data-service@0.1.3-preview-fe92f4bb3
@metamask-previews/bridge-controller@72.0.4-preview-fe92f4bb3
@metamask-previews/bridge-status-controller@71.1.4-preview-fe92f4bb3
@metamask-previews/build-utils@3.0.4-preview-fe92f4bb3
@metamask-previews/chain-agnostic-permission@1.6.1-preview-fe92f4bb3
@metamask-previews/chomp-api-service@3.1.0-preview-fe92f4bb3
@metamask-previews/claims-controller@0.5.1-preview-fe92f4bb3
@metamask-previews/client-controller@1.0.1-preview-fe92f4bb3
@metamask-previews/compliance-controller@2.0.1-preview-fe92f4bb3
@metamask-previews/composable-controller@12.0.1-preview-fe92f4bb3
@metamask-previews/config-registry-controller@0.3.1-preview-fe92f4bb3
@metamask-previews/connectivity-controller@0.2.0-preview-fe92f4bb3
@metamask-previews/controller-utils@12.1.0-preview-fe92f4bb3
@metamask-previews/core-backend@6.2.2-preview-fe92f4bb3
@metamask-previews/delegation-controller@3.0.0-preview-fe92f4bb3
@metamask-previews/earn-controller@12.1.2-preview-fe92f4bb3
@metamask-previews/eip-5792-middleware@3.0.4-preview-fe92f4bb3
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-fe92f4bb3
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-fe92f4bb3
@metamask-previews/ens-controller@19.1.3-preview-fe92f4bb3
@metamask-previews/eth-block-tracker@15.0.1-preview-fe92f4bb3
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-fe92f4bb3
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-fe92f4bb3
@metamask-previews/foundryup@1.0.1-preview-fe92f4bb3
@metamask-previews/gas-fee-controller@26.2.1-preview-fe92f4bb3
@metamask-previews/gator-permissions-controller@4.1.2-preview-fe92f4bb3
@metamask-previews/geolocation-controller@0.1.3-preview-fe92f4bb3
@metamask-previews/json-rpc-engine@10.5.0-preview-fe92f4bb3
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-fe92f4bb3
@metamask-previews/keyring-controller@25.5.0-preview-fe92f4bb3
@metamask-previews/logging-controller@8.0.2-preview-fe92f4bb3
@metamask-previews/message-manager@14.1.2-preview-fe92f4bb3
@metamask-previews/messenger@1.2.0-preview-fe92f4bb3
@metamask-previews/messenger-cli@0.2.0-preview-fe92f4bb3
@metamask-previews/money-account-balance-service@1.0.2-preview-fe92f4bb3
@metamask-previews/money-account-controller@0.3.0-preview-fe92f4bb3
@metamask-previews/money-account-upgrade-controller@2.0.2-preview-fe92f4bb3
@metamask-previews/multichain-account-service@10.0.0-preview-fe92f4bb3
@metamask-previews/multichain-api-middleware@3.1.2-preview-fe92f4bb3
@metamask-previews/multichain-network-controller@3.1.1-preview-fe92f4bb3
@metamask-previews/multichain-transactions-controller@7.1.0-preview-fe92f4bb3
@metamask-previews/name-controller@9.1.2-preview-fe92f4bb3
@metamask-previews/network-controller@32.0.0-preview-fe92f4bb3
@metamask-previews/network-enablement-controller@5.1.1-preview-fe92f4bb3
@metamask-previews/notification-services-controller@24.0.0-preview-fe92f4bb3
@metamask-previews/passkey-controller@2.0.1-preview-fe92f4bb3
@metamask-previews/permission-controller@13.1.1-preview-fe92f4bb3
@metamask-previews/permission-log-controller@5.1.0-preview-fe92f4bb3
@metamask-previews/perps-controller@6.1.0-preview-fe92f4bb3
@metamask-previews/phishing-controller@17.1.2-preview-fe92f4bb3
@metamask-previews/polling-controller@16.0.5-preview-fe92f4bb3
@metamask-previews/preferences-controller@23.1.0-preview-fe92f4bb3
@metamask-previews/profile-metrics-controller@3.1.4-preview-fe92f4bb3
@metamask-previews/profile-sync-controller@28.1.0-preview-fe92f4bb3
@metamask-previews/ramps-controller@13.3.1-preview-fe92f4bb3
@metamask-previews/rate-limit-controller@7.0.1-preview-fe92f4bb3
@metamask-previews/react-data-query@0.2.1-preview-fe92f4bb3
@metamask-previews/remote-feature-flag-controller@4.2.1-preview-fe92f4bb3
@metamask-previews/sample-controllers@5.0.1-preview-fe92f4bb3
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-fe92f4bb3
@metamask-previews/selected-network-controller@26.1.3-preview-fe92f4bb3
@metamask-previews/shield-controller@5.1.2-preview-fe92f4bb3
@metamask-previews/signature-controller@39.2.2-preview-fe92f4bb3
@metamask-previews/snap-account-service@0.1.0-preview-fe92f4bb3
@metamask-previews/social-controllers@2.2.1-preview-fe92f4bb3
@metamask-previews/storage-service@1.0.1-preview-fe92f4bb3
@metamask-previews/subscription-controller@6.1.3-preview-fe92f4bb3
@metamask-previews/transaction-controller@65.4.0-preview-fe92f4bb3
@metamask-previews/transaction-pay-controller@22.4.0-preview-fe92f4bb3
@metamask-previews/user-operation-controller@41.2.2-preview-fe92f4bb3
@metamask-previews/wallet@0.0.0-preview-fe92f4bb3

const MOCK_TRX_ASSET = 'tron:728126428/slip44:195' as Caip19AssetId;
const MOCK_SPL_ASSET =
'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/spl:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' as Caip19AssetId;
'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' as Caip19AssetId;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

intentional?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Just making sure. There was an ADR around the naming standardisation for solana
https://github.com/MetaMask/decisions/pull/170/changes

Copy link
Copy Markdown
Contributor Author

@bergarces bergarces May 14, 2026

Choose a reason for hiding this comment

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

@bergarces bergarces enabled auto-merge May 14, 2026 13:26
@bergarces bergarces added this pull request to the merge queue May 14, 2026
Merged via the queue into main with commit 848b570 May 14, 2026
374 checks passed
@bergarces bergarces deleted the fix-non-evm-token-type-detection branch May 14, 2026 13:35
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