Skip to content

Releases: MetaMask/core

824.0.0

19 Feb 19:03
08ce5e5

Choose a tag to compare

@metamask/assets-controller 2.0.1

Changed

  • Refactor data source tests to use shared MockAssetControllerMessenger fixture (#7958)
    • Export STAKING_INTERFACE from the staked balance fetcher for use with the staking contract ABI.
    • StakedBalanceDataSource teardown now uses the messenger's clearEventSubscriptions; custom messenger implementations must support it for correct cleanup.
  • Bump @metamask/network-enablement-controller from ^4.1.0 to ^4.1.1 (#7984)
  • Bump @metamask/core-backend from ^5.1.1 to ^6.0.0 (#7993)
  • Bump @metamask/assets-controllers from ^99.4.0 to ^100.0.0 (#7995)
  • Bump @metamask/controller-utils from ^11.18.0 to ^11.19.0 (#7995)

@metamask/assets-controllers 100.0.0

Added

  • BREAKING: MultichainAssetsControllerMessenger now requires the PhishingController:bulkScanTokens action to be allowed (#7923)
    • Consumers constructing the messenger must include this action in the allowed actions list
  • Add Blockaid token security scanning to MultichainAssetsController to filter out spam, malicious, and warning tokens during automatic asset detection (#7923)
    • Tokens with assetNamespace of "token" (e.g. SPL tokens) are scanned via the PhishingController:bulkScanTokens messenger action
    • Only tokens with a Benign result are kept; native assets (e.g. slip44) are not scanned
    • The filter fails open: if the scan is unreachable or returns an error, all tokens are kept
    • Filtering applies to account-added and asset-list-updated events; addAssets (curated list) is not filtered
    • Token addresses are batched into groups of 100 to stay within the bulkScanTokens per-request limit

Changed

  • Bump @metamask/phishing-controller from ^16.2.0 to ^16.3.0 (#7979)
  • Bump @metamask/network-enablement-controller from ^4.1.0 to ^4.1.1 (#7984)
  • Bump @metamask/core-backend from ^5.0.0 to ^6.0.0 (#7993)
  • Change MegaETH mainnet occurences filtering for getTokensURL (#7994)
  • Bump @metamask/controller-utils from ^11.18.0 to ^11.19.0 (#7995)

@metamask/bridge-controller 67.1.0

Added

  • Added optional input_amount_preset property to the InputChanged event in RequiredEventContextFromClient (#7987)

Changed

  • Bump @metamask/assets-controllers from ^99.4.0 to ^100.0.0 (#7995)
  • Bump @metamask/controller-utils from ^11.18.0 to ^11.19.0 (#7995)

@metamask/controller-utils 11.19.0

Added

  • Add megaeth-mainnet to BUILT_IN_NETWORKS (#7994)

@metamask/transaction-pay-controller 15.1.1

Changed

  • Bump @metamask/assets-controllers from ^99.4.0 to ^100.0.0 (#7995)
  • Bump @metamask/controller-utils from ^11.18.0 to ^11.19.0 (#7995)
  • Bump @metamask/bridge-controller from ^67.0.0 to ^67.1.0 (#7995)

823.0.0

19 Feb 14:39
def7474

Choose a tag to compare

@metamask/core-backend 6.0.0

Added

  • Add ApiPlatformClientService to expose ApiPlatformClient via the messenger without a controller (#7928)
    • Consumers call messenger.call('ApiPlatformClientService:getApiPlatformClient') to obtain the shared client for accounts, prices, token, and tokens APIs
  • Export TanStack Query options for all API endpoints via get*QueryOptions helpers (#7928)
    • Each fetch method (e.g. fetchV5MultiAccountBalances) has a corresponding get*QueryOptions (e.g. getV5MultiAccountBalancesQueryOptions) returning the same options object used internally
    • Enables reuse with useQuery, useInfiniteQuery, useSuspenseQuery, and other TanStack Query APIs
  • Extend FetchOptions to allow TanStack Query options (e.g. select, initialPageParam, retry, initialData) to be passed through to get*QueryOptions and merged into the returned query options
    • Export getQueryOptionsOverrides helper for stripping queryKey/queryFn from options when merging
    • All API clients (accounts, prices, token, tokens) merge user overrides first, then apply staleTime/gcTime defaults so cache timing is consistent and extra options (e.g. select) are preserved

Changed

  • BREAKING: Merge fetchV2BalancesWithOptions into fetchV2Balances (#7928)
    • fetchV2Balances(address, queryOptions?, options?) now accepts the full query options: networks, filterSupportedTokens, includeTokenAddresses, includeStakedAssets
    • getV2BalancesQueryOptions accepts the same full query options for use with TanStack Query
    • fetchV2BalancesWithOptions and getV2BalancesWithOptionsQueryOptions have been removed; use fetchV2Balances and getV2BalancesQueryOptions with the desired options instead
  • BREAKING: Align v4 multi-account transactions with API (#7928)
    • First parameter renamed from accountIds to accountAddresses in fetchV4MultiAccountTransactions and getV4MultiAccountTransactionsQueryOptions
    • Query options now include: startTimestamp, endTimestamp, limit, after, before, maxLogsPerTx, lang in addition to networks, cursor, sortDirection, includeLogs, includeTxMetadata
    • includeValueTransfers has been removed from the options (not in API spec)
  • Accounts, prices, and tokens clients: fetch* and get*QueryOptions now short-circuit on empty required inputs (e.g. empty address, empty account IDs or asset lists) and return empty results without calling the API (#7928)

822.0.0

18 Feb 18:14
3b688f6

Choose a tag to compare

@metamask/network-enablement-controller 4.1.1

Changed

  • Bump @metamask/keyring-api from ^21.0.0 to ^21.5.0 (#7857)
  • Bump @metamask/transaction-controller from ^62.9.2 to ^62.17.0 (#7737, #7760, #7775, #7802, #7832, #7854, #7872), (#7897)
  • Bump @metamask/multichain-network-controller from 3.0.2 to 3.0.3 (#7897)

Fixed

  • Override SLIP-44 for HyperEVM (chain ID 999) to 2457 so native asset identifier is eip155:999/slip44:2457 instead of the incorrect value from chainid.network (chain collision with Wanchain) (#7975)

821.0.0

18 Feb 17:19
c4cf733

Choose a tag to compare

@metamask/ai-controllers 0.1.0

Added

  • Initial release (#7693)
  • Add AiDigestController for fetching and caching AI-generated asset digests (#7746)
  • Add Market Insights support to AiDigestController with fetchMarketInsights action (#7930)
  • Add searchDigest method to AiDigestService for calling the GET endpoint (currently mocked) (#7930)

Changed

  • Validate searchDigest API responses and throw when the payload does not match the expected MarketInsightsReport shape.
  • Normalize searchDigest responses from either direct report payloads or digest envelope payloads.

Removed

  • Remove legacy digest APIs and digest cache from AiDigestController and AiDigestService; only market insights APIs remain.
    • Removes fetchDigest, clearDigest, and clearAllDigests actions from the controller action surface.
    • Removes DigestData/DigestEntry types and the digests state branch.

820.0.0

18 Feb 14:55
0176346

Choose a tag to compare

@metamask/phishing-controller 16.3.0

Added

  • Add support for Solana (solana) as a chain identifier in bulkScanTokens (#7923)
    • Non-EVM chain names (e.g. 'solana') can now be passed as chainId in addition to hex EVM chain IDs
    • Token address casing is preserved for non-EVM chains (EVM addresses continue to be lowercased)
  • Export TokenScanResultType as a runtime value (previously type-only) (#7923)
  • Export BulkTokenScanResponse type (#7923)

Changed

  • Bump @metamask/transaction-controller from 62.16.0 to 62.17.0 (#7897)

819.0.0

18 Feb 13:23
872c1e7

Choose a tag to compare

@metamask/client-controller 1.0.0

Added

  • Initial release of @metamask/client-controller (#7808)
    • ClientController for managing client (UI) open/closed state
    • ClientController:setUiOpen messenger action for platform code to call
    • ClientController:stateChange event for controllers to subscribe to lifecycle changes
    • isUiOpen state property (not persisted - always starts as false)
    • clientControllerSelectors.selectIsUiOpen selector for derived state access
    • Full TypeScript support with exported types

818.0.0

18 Feb 12:41
0ed83bc

Choose a tag to compare

@metamask/ramps-controller 8.1.0

Added

  • Add widgetUrl resource state that automatically fetches and stores the buy widget URL whenever the selected quote changes (#7920)
  • Add TransakService for native Transak deposit flow with OTP auth, KYC, quoting, order lifecycle, and payment widget URL generation (#7922)
  • Add nativeProviders.transak state slice and controller convenience methods for driving the Transak native deposit flow (#7922)

Changed

  • Refactor: Consolidate reset logic with a shared resetResource helper and fix abort handling for dependent resources (#7818)

817.0.0

17 Feb 23:01
fb0c7bc

Choose a tag to compare

@metamask/bridge-controller 67.0.0

Added

  • BREAKING: Retrieve JWT token from the ProfileSyncController and include it in bridge request headers (#7955)

@metamask/bridge-status-controller 67.0.0

Added

  • BREAKING: Retrieve JWT token from the ProfileSyncController and include it in bridge request headers (#7955)
  • Bump @metamask/bridge-controller from ^66.2.0 to ^67.0.0 (#7961)

@metamask/transaction-pay-controller 15.1.0

Changed

  • Bump @metamask/bridge-controller from ^66.1.1 to ^67.0.0 (#7956, #7961)
  • Bump @metamask/bridge-status-controller from ^66.0.2 to ^67.0.0 (#7956, #7961)
  • Bump @metamask/assets-controllers from ^99.3.2 to ^99.4.0 (#7944)

816.0.0

17 Feb 16:28
456ad73

Choose a tag to compare

@metamask/bridge-controller 66.2.0

Added

  • Added TrendingExplore value to MetaMetricsSwapsEventSource enum for attributing swaps to the trending explore flow (#7931)
  • Added location as a required property on all Unified SwapBridge events in RequiredEventContextFromClient (#7931)
  • Added setLocation() method to BridgeController for clients to set the entry point when the flow starts (#7931)
  • Exported MetaMetricsSwapsEventSource from the package index (#7931)

Changed

  • Updated #getEventProperties to fall back to stored #location when location is not provided by the client (#7931)
  • Replaced @deprecated tag on MetaMetricsSwapsEventSource with proper JSDoc description (#7931)
  • Bump @metamask/assets-controllers from ^99.3.2 to ^99.4.0 (#7944)

Fixed

  • Fix usd_amount_source, usd_quoted_gas, and usd_quoted_return metrics fields being empty for non-EVM chains by deriving USD exchange rates from multichain asset rates (#7899)

@metamask/bridge-status-controller 66.1.0

Added

  • Added location property to BridgeHistoryItem to persist the entry point across the transaction lifecycle (#7931)
  • Added location parameter to StartPollingForBridgeTxStatusArgs (#7931)
  • Added optional location parameter to submitTx method (#7931)

Changed

  • All post-submission events (Submitted, Completed, Failed, PollingStatusUpdated, StatusValidationFailed) now include the location property from BridgeHistoryItem (#7931)

Fixed

  • Fix usd_amount_source default value in EVM transaction metrics properties from 100 to 0 (#7899)

815.0.0

17 Feb 13:39
cfd08d4

Choose a tag to compare

@metamask/assets-controller 2.0.0

Added

  • Add StakedBalanceDataSource that polls supported staking contracts on enabled chains and merges staked balances into assetsBalance. Configurable via stakedBalanceDataSourceConfig (enabled, pollInterval); the controller subscribes to it when enabled and cleans up on destroy (#7936)
  • Add optional trackMetaMetricsEvent callback to measure and report first init/fetch historical time (duration in ms) to MetaMetrics when the initial asset fetch completes after unlock or app open (#7871)
  • Add AccountsApiDataSourceConfig and PriceDataSourceConfig types; add accountsApiDataSourceConfig and priceDataSourceConfig options to AssetsControllerOptions for per-data-source configuration (pollInterval, tokenDetectionEnabled, etc.). When tokenDetectionEnabled is false, AccountsApiDataSource only returns balances for tokens already in state and does not add new tokens (#7926)
  • Add useExternalService option to TokenDetector, TokenDetectionOptions, RpcDataSourceConfig, and RpcDataSourceOptions. Token detection runs only when both tokenDetectionEnabled and useExternalService are true and stops when either is false (#7924)
  • Add basic functionality toggle: isBasicFunctionality (getter () => boolean); no value is stored in the controller. When the getter returns true (matches UI "Basic functionality" ON), token and price APIs are used; when false, only RPC is used. Optional subscribeToBasicFunctionalityChange(onChange) lets the consumer register for toggle changes (e.g. extension subscribes to PreferencesController:stateChange, mobile uses its own mechanism); may return an unsubscribe function for controller destroy (#7904)

Changed

  • Refactor AssetsControllerMessenger type safety: remove as unknown as casts, import types instead of locally defining them, and add missing allowed actions/events (#7952)
  • BREAKING: AccountsApiDataSourceConfig.tokenDetectionEnabled is now a getter () => boolean (was boolean) so the Accounts API data source reacts when the user toggles token detection at runtime, consistent with RpcDataSourceConfig.tokenDetectionEnabled. Pass a function, e.g. tokenDetectionEnabled: () => preferenceController.state.useTokenDetection.
  • BREAKING: Rename state and DataResponse property from assetsMetadata to assetsInfo. Update consumers that read state.assetsMetadata or set response.assetsMetadata to use assetsInfo instead (#7902)
  • Bump @metamask/keyring-api from ^21.0.0 to ^21.5.0 (#7857)
  • Bump @metamask/keyring-internal-api from ^9.0.0 to ^10.0.0 (#7857)
  • Bump @metamask/keyring-snap-client from ^8.0.0 to ^8.2.0 (#7857)
  • Bump @metamask/account-tree-controller from 4.1.0 to 4.1.1 (#7897)
  • Bump @metamask/core-backend from 5.1.0 to 5.1.1 (#7897)