core icon indicating copy to clipboard operation
core copied to clipboard

Chore: fetch price api supported chain ids

Open sahar-fehri opened this issue 4 months ago • 6 comments

Explanation

Price api already exposes its supported chainIds here https://price.api.cx.metamask.io/v1/supportedNetworks. Instead of relying on the old static array; this array pulls the supported chainIds from the API directly.

This would make it possible in future to add support for new tokens without making a core relase.

References

  • Related to Extension: https://github.com/MetaMask/metamask-extension/pull/37416

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, highlighting breaking changes as necessary
  • [ ] I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

[!NOTE] Replaces the static supported-chain list with a dynamic fetch from the Price API, adds a cached supportedChainIds state to TokenRatesController, and updates APIs/types to use it.

  • Token Prices Service (codefi-v2):
    • Add fetchSupportedChainIds() (uses GET /v1/supportedNetworks), return hex chain IDs.
    • Remove exported SUPPORTED_CHAIN_IDS and validateChainIdSupported.
    • Generalize types to Hex chain IDs; keep getNativeTokenAddress.
  • TokenRatesController:
    • Add supportedChainIds cache in state with timestamp and DEFAULT_CACHE_REFRESH_THRESHOLD (24h).
    • Validate chains against cached supportedChainIds; auto-refresh cache when stale.
    • Update default state/metadata and polling/update flows accordingly.
  • Utils (assetsUtil):
    • fetchTokenContractExchangeRates now requires supportedChainIds arg and uses it for chain validation.
  • Exports:
    • Remove SUPPORTED_CHAIN_IDS from public exports.
  • Tests/Docs:
    • Update tests across packages and changelog to reflect new API and behavior.

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

sahar-fehri avatar Oct 30 '25 09:10 sahar-fehri

@metamaskbot publish-preview

sahar-fehri avatar Oct 30 '25 12:10 sahar-fehri

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "2.0.0-preview-1ae9d4fd",
  "@metamask-previews/accounts-controller": "34.0.0-preview-1ae9d4fd",
  "@metamask-previews/address-book-controller": "7.0.0-preview-1ae9d4fd",
  "@metamask-previews/announcement-controller": "8.0.0-preview-1ae9d4fd",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-1ae9d4fd",
  "@metamask-previews/approval-controller": "8.0.0-preview-1ae9d4fd",
  "@metamask-previews/assets-controllers": "85.0.0-preview-1ae9d4fd",
  "@metamask-previews/base-controller": "9.0.0-preview-1ae9d4fd",
  "@metamask-previews/bridge-controller": "57.0.0-preview-1ae9d4fd",
  "@metamask-previews/bridge-status-controller": "57.0.0-preview-1ae9d4fd",
  "@metamask-previews/build-utils": "3.0.4-preview-1ae9d4fd",
  "@metamask-previews/chain-agnostic-permission": "1.2.2-preview-1ae9d4fd",
  "@metamask-previews/composable-controller": "12.0.0-preview-1ae9d4fd",
  "@metamask-previews/controller-utils": "11.15.0-preview-1ae9d4fd",
  "@metamask-previews/core-backend": "4.0.0-preview-1ae9d4fd",
  "@metamask-previews/delegation-controller": "1.0.0-preview-1ae9d4fd",
  "@metamask-previews/earn-controller": "9.0.0-preview-1ae9d4fd",
  "@metamask-previews/eip-5792-middleware": "2.0.0-preview-1ae9d4fd",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-1ae9d4fd",
  "@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-1ae9d4fd",
  "@metamask-previews/ens-controller": "18.0.0-preview-1ae9d4fd",
  "@metamask-previews/error-reporting-service": "3.0.0-preview-1ae9d4fd",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-1ae9d4fd",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-1ae9d4fd",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-1ae9d4fd",
  "@metamask-previews/foundryup": "1.0.1-preview-1ae9d4fd",
  "@metamask-previews/gas-fee-controller": "25.0.0-preview-1ae9d4fd",
  "@metamask-previews/gator-permissions-controller": "0.3.0-preview-1ae9d4fd",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-1ae9d4fd",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-1ae9d4fd",
  "@metamask-previews/keyring-controller": "24.0.0-preview-1ae9d4fd",
  "@metamask-previews/logging-controller": "7.0.0-preview-1ae9d4fd",
  "@metamask-previews/message-manager": "14.0.0-preview-1ae9d4fd",
  "@metamask-previews/messenger": "0.3.0-preview-1ae9d4fd",
  "@metamask-previews/multichain-account-service": "2.0.0-preview-1ae9d4fd",
  "@metamask-previews/multichain-api-middleware": "1.2.4-preview-1ae9d4fd",
  "@metamask-previews/multichain-network-controller": "2.0.0-preview-1ae9d4fd",
  "@metamask-previews/multichain-transactions-controller": "6.0.0-preview-1ae9d4fd",
  "@metamask-previews/name-controller": "9.0.0-preview-1ae9d4fd",
  "@metamask-previews/network-controller": "25.0.0-preview-1ae9d4fd",
  "@metamask-previews/network-enablement-controller": "3.1.0-preview-1ae9d4fd",
  "@metamask-previews/notification-services-controller": "19.0.0-preview-1ae9d4fd",
  "@metamask-previews/permission-controller": "12.1.0-preview-1ae9d4fd",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-1ae9d4fd",
  "@metamask-previews/phishing-controller": "15.0.0-preview-1ae9d4fd",
  "@metamask-previews/polling-controller": "15.0.0-preview-1ae9d4fd",
  "@metamask-previews/preferences-controller": "21.0.0-preview-1ae9d4fd",
  "@metamask-previews/profile-sync-controller": "26.0.0-preview-1ae9d4fd",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-1ae9d4fd",
  "@metamask-previews/remote-feature-flag-controller": "2.0.0-preview-1ae9d4fd",
  "@metamask-previews/sample-controllers": "3.0.0-preview-1ae9d4fd",
  "@metamask-previews/seedless-onboarding-controller": "5.0.0-preview-1ae9d4fd",
  "@metamask-previews/selected-network-controller": "25.0.0-preview-1ae9d4fd",
  "@metamask-previews/shield-controller": "1.1.0-preview-1ae9d4fd",
  "@metamask-previews/signature-controller": "35.0.0-preview-1ae9d4fd",
  "@metamask-previews/subscription-controller": "3.1.0-preview-1ae9d4fd",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-1ae9d4fd",
  "@metamask-previews/transaction-controller": "61.1.0-preview-1ae9d4fd",
  "@metamask-previews/transaction-pay-controller": "1.0.0-preview-1ae9d4fd",
  "@metamask-previews/user-operation-controller": "40.0.0-preview-1ae9d4fd"
}

github-actions[bot] avatar Oct 30 '25 13:10 github-actions[bot]

@metamaskbot publish-preview

sahar-fehri avatar Oct 31 '25 09:10 sahar-fehri

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "2.0.0-preview-eee46d4b",
  "@metamask-previews/accounts-controller": "34.0.0-preview-eee46d4b",
  "@metamask-previews/address-book-controller": "7.0.0-preview-eee46d4b",
  "@metamask-previews/announcement-controller": "8.0.0-preview-eee46d4b",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-eee46d4b",
  "@metamask-previews/approval-controller": "8.0.0-preview-eee46d4b",
  "@metamask-previews/assets-controllers": "86.0.0-preview-eee46d4b",
  "@metamask-previews/base-controller": "9.0.0-preview-eee46d4b",
  "@metamask-previews/bridge-controller": "58.0.0-preview-eee46d4b",
  "@metamask-previews/bridge-status-controller": "58.0.0-preview-eee46d4b",
  "@metamask-previews/build-utils": "3.0.4-preview-eee46d4b",
  "@metamask-previews/chain-agnostic-permission": "1.2.2-preview-eee46d4b",
  "@metamask-previews/composable-controller": "12.0.0-preview-eee46d4b",
  "@metamask-previews/controller-utils": "11.15.0-preview-eee46d4b",
  "@metamask-previews/core-backend": "4.0.0-preview-eee46d4b",
  "@metamask-previews/delegation-controller": "1.0.0-preview-eee46d4b",
  "@metamask-previews/earn-controller": "9.0.0-preview-eee46d4b",
  "@metamask-previews/eip-5792-middleware": "2.0.0-preview-eee46d4b",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-eee46d4b",
  "@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-eee46d4b",
  "@metamask-previews/ens-controller": "18.0.0-preview-eee46d4b",
  "@metamask-previews/error-reporting-service": "3.0.0-preview-eee46d4b",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-eee46d4b",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-eee46d4b",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-eee46d4b",
  "@metamask-previews/foundryup": "1.0.1-preview-eee46d4b",
  "@metamask-previews/gas-fee-controller": "25.0.0-preview-eee46d4b",
  "@metamask-previews/gator-permissions-controller": "0.3.0-preview-eee46d4b",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-eee46d4b",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-eee46d4b",
  "@metamask-previews/keyring-controller": "24.0.0-preview-eee46d4b",
  "@metamask-previews/logging-controller": "7.0.0-preview-eee46d4b",
  "@metamask-previews/message-manager": "14.0.0-preview-eee46d4b",
  "@metamask-previews/messenger": "0.3.0-preview-eee46d4b",
  "@metamask-previews/multichain-account-service": "2.0.0-preview-eee46d4b",
  "@metamask-previews/multichain-api-middleware": "1.2.4-preview-eee46d4b",
  "@metamask-previews/multichain-network-controller": "2.0.0-preview-eee46d4b",
  "@metamask-previews/multichain-transactions-controller": "6.0.0-preview-eee46d4b",
  "@metamask-previews/name-controller": "9.0.0-preview-eee46d4b",
  "@metamask-previews/network-controller": "25.0.0-preview-eee46d4b",
  "@metamask-previews/network-enablement-controller": "3.1.0-preview-eee46d4b",
  "@metamask-previews/notification-services-controller": "19.0.0-preview-eee46d4b",
  "@metamask-previews/permission-controller": "12.1.0-preview-eee46d4b",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-eee46d4b",
  "@metamask-previews/phishing-controller": "15.0.0-preview-eee46d4b",
  "@metamask-previews/polling-controller": "15.0.0-preview-eee46d4b",
  "@metamask-previews/preferences-controller": "21.0.0-preview-eee46d4b",
  "@metamask-previews/profile-sync-controller": "26.0.0-preview-eee46d4b",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-eee46d4b",
  "@metamask-previews/remote-feature-flag-controller": "2.0.0-preview-eee46d4b",
  "@metamask-previews/sample-controllers": "3.0.0-preview-eee46d4b",
  "@metamask-previews/seedless-onboarding-controller": "6.0.0-preview-eee46d4b",
  "@metamask-previews/selected-network-controller": "25.0.0-preview-eee46d4b",
  "@metamask-previews/shield-controller": "1.1.0-preview-eee46d4b",
  "@metamask-previews/signature-controller": "35.0.0-preview-eee46d4b",
  "@metamask-previews/subscription-controller": "3.1.0-preview-eee46d4b",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-eee46d4b",
  "@metamask-previews/transaction-controller": "61.1.0-preview-eee46d4b",
  "@metamask-previews/transaction-pay-controller": "2.0.0-preview-eee46d4b",
  "@metamask-previews/user-operation-controller": "40.0.0-preview-eee46d4b"
}

github-actions[bot] avatar Oct 31 '25 09:10 github-actions[bot]

@metamaskbot publish-preview

sahar-fehri avatar Nov 04 '25 13:11 sahar-fehri

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "2.0.0-preview-8315c2ec",
  "@metamask-previews/accounts-controller": "34.0.0-preview-8315c2ec",
  "@metamask-previews/address-book-controller": "7.0.0-preview-8315c2ec",
  "@metamask-previews/announcement-controller": "8.0.0-preview-8315c2ec",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-8315c2ec",
  "@metamask-previews/approval-controller": "8.0.0-preview-8315c2ec",
  "@metamask-previews/assets-controllers": "87.0.0-preview-8315c2ec",
  "@metamask-previews/base-controller": "9.0.0-preview-8315c2ec",
  "@metamask-previews/bridge-controller": "59.0.0-preview-8315c2ec",
  "@metamask-previews/bridge-status-controller": "59.0.0-preview-8315c2ec",
  "@metamask-previews/build-utils": "3.0.4-preview-8315c2ec",
  "@metamask-previews/chain-agnostic-permission": "1.2.2-preview-8315c2ec",
  "@metamask-previews/composable-controller": "12.0.0-preview-8315c2ec",
  "@metamask-previews/controller-utils": "11.15.0-preview-8315c2ec",
  "@metamask-previews/core-backend": "4.0.0-preview-8315c2ec",
  "@metamask-previews/delegation-controller": "1.0.0-preview-8315c2ec",
  "@metamask-previews/earn-controller": "9.0.0-preview-8315c2ec",
  "@metamask-previews/eip-5792-middleware": "2.0.0-preview-8315c2ec",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-8315c2ec",
  "@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-8315c2ec",
  "@metamask-previews/ens-controller": "18.0.0-preview-8315c2ec",
  "@metamask-previews/error-reporting-service": "3.0.0-preview-8315c2ec",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-8315c2ec",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-8315c2ec",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-8315c2ec",
  "@metamask-previews/foundryup": "1.0.1-preview-8315c2ec",
  "@metamask-previews/gas-fee-controller": "25.0.0-preview-8315c2ec",
  "@metamask-previews/gator-permissions-controller": "0.3.0-preview-8315c2ec",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-8315c2ec",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-8315c2ec",
  "@metamask-previews/keyring-controller": "24.0.0-preview-8315c2ec",
  "@metamask-previews/logging-controller": "7.0.0-preview-8315c2ec",
  "@metamask-previews/message-manager": "14.0.0-preview-8315c2ec",
  "@metamask-previews/messenger": "0.3.0-preview-8315c2ec",
  "@metamask-previews/multichain-account-service": "2.1.0-preview-8315c2ec",
  "@metamask-previews/multichain-api-middleware": "1.2.4-preview-8315c2ec",
  "@metamask-previews/multichain-network-controller": "2.0.0-preview-8315c2ec",
  "@metamask-previews/multichain-transactions-controller": "6.0.0-preview-8315c2ec",
  "@metamask-previews/name-controller": "9.0.0-preview-8315c2ec",
  "@metamask-previews/network-controller": "25.0.0-preview-8315c2ec",
  "@metamask-previews/network-enablement-controller": "3.1.0-preview-8315c2ec",
  "@metamask-previews/notification-services-controller": "19.0.0-preview-8315c2ec",
  "@metamask-previews/permission-controller": "12.1.0-preview-8315c2ec",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-8315c2ec",
  "@metamask-previews/phishing-controller": "15.0.0-preview-8315c2ec",
  "@metamask-previews/polling-controller": "15.0.0-preview-8315c2ec",
  "@metamask-previews/preferences-controller": "21.0.0-preview-8315c2ec",
  "@metamask-previews/profile-sync-controller": "26.0.0-preview-8315c2ec",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-8315c2ec",
  "@metamask-previews/remote-feature-flag-controller": "2.0.0-preview-8315c2ec",
  "@metamask-previews/sample-controllers": "3.0.0-preview-8315c2ec",
  "@metamask-previews/seedless-onboarding-controller": "6.1.0-preview-8315c2ec",
  "@metamask-previews/selected-network-controller": "25.0.0-preview-8315c2ec",
  "@metamask-previews/shield-controller": "1.2.0-preview-8315c2ec",
  "@metamask-previews/signature-controller": "35.0.0-preview-8315c2ec",
  "@metamask-previews/subscription-controller": "3.2.0-preview-8315c2ec",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-8315c2ec",
  "@metamask-previews/transaction-controller": "61.1.0-preview-8315c2ec",
  "@metamask-previews/transaction-pay-controller": "3.0.0-preview-8315c2ec",
  "@metamask-previews/user-operation-controller": "40.0.0-preview-8315c2ec"
}

github-actions[bot] avatar Nov 04 '25 13:11 github-actions[bot]