Skip to content

Releases: MetaMask/core

934.0.0

23 Apr 16:10
dd2cba3

Choose a tag to compare

@metamask/bridge-controller 70.2.0

Added

  • Add AccountHardwareType type and getAccountHardwareType function to the package exports (#8503)
    • AccountHardwareType is a union of 'Ledger' | 'Trezor' | 'QR Hardware' | 'Lattice' | null
    • getAccountHardwareType maps a keyring type string to the corresponding AccountHardwareType value
  • Read 'maxPendingHistoryItemAgeMs' feature flag from LaunchDarkly, which indicates when a history item can be treated as a failure (#8479)
  • Add the invalid_transaction_hash polling reason to indicate that a history item was removed from state do to having an invalid hash (#8479)

Changed

  • Add account_hardware_type field to RequestMetadata and all cross-chain swap analytics events (#8503)
    • account_hardware_type carries the specific hardware wallet brand (e.g. 'Ledger') or null for software wallets
    • is_hardware_wallet is now derived from account_hardware_type !== null, keeping both fields in sync
    • EventPropertiesFromControllerState[PageViewed] now includes account_hardware_type, is_hardware_wallet, custom_slippage, slippage_limit, and swap_type (previously only RequestParams fields were included)
  • Bump @metamask/assets-controller from ^6.0.0 to ^6.1.0 (#8559)
  • Bump @metamask/assets-controllers from ^104.0.0 to ^104.3.0 (#8509, #8544, #8559)
  • Bump @metamask/transaction-controller from ^64.2.0 to ^64.3.0 (#8482)
  • Bump @metamask/keyring-api from ^21.6.0 to ^23.0.1 (#8464)

@metamask/bridge-status-controller 71.0.0

Added

  • Remove stale bridge transactions from txHistory to prevent excessive polling. Once a history item exceeds the configured maximum age, the status is fetched once, then the src tx hash's receipt is retrieved. If there is no receipt, the history item's hash is presumed to be invalid and the entry is deleted from state. (#8479)
  • Add missing action types for public BridgeStatusController methods (#8367)
    • The following types are now available:
      • BridgeStatusControllerSubmitTxAction
      • BridgeStatusControllerSubmitIntentAction
      • BridgeStatusControllerGetBridgeHistoryItemByTxMetaIdAction

Changed

  • BREAKING: Replace transactionFailed and transactionConfirmed event subscriptions with TransactionController:transactionStatusUpdated (#8479)
  • BREAKING: Add RemoteFeatureFlags:getState to allowed actions to retrieve max history item age config (#8479)
  • Add account_hardware_type field to all cross-chain swap analytics events (#8503)
    • account_hardware_type carries the specific hardware wallet brand (e.g. 'Ledger', 'QR Hardware') or null for software wallets
    • is_hardware_wallet is now derived from account_hardware_type !== null, keeping both fields in sync
  • getEVMTxPropertiesFromTransactionMeta now accepts an optional account parameter to populate account_hardware_type for TransactionController:transactionFailed events (#8503)
  • Bump @metamask/accounts-controller from ^37.1.1 to ^37.2.0 (#8363)
  • Bump @metamask/keyring-controller from ^25.1.1 to ^25.2.0 (#8363)
  • Bump @metamask/messenger from ^1.0.0 to ^1.1.1 (#8364, #8373)
  • Bump @metamask/transaction-controller from ^64.0.0 to ^64.3.0 (#8432, #8447, #8482)
  • Bump @metamask/base-controller from ^9.0.1 to ^9.1.0 (#8457)
  • Bump @metamask/bridge-controller from ^70.0.1 to ^70.2.0 (#8466, #8474, #8571)

Fixed

  • Prevent invalid src hashes from being persisted in txHistory (#8479)
    • Make transaction status subscribers generic so that txHistory items get updated if there are any transaction updates matching by actionId, txMetaId, hash or type
    • Skip saving smart transaction hashes on transaction submission. This used to make it possible for invalid src hashes to be stored in state and polled indefinitely. Instead, the txHistory item will now be updated with the confirmed tx hash when the transactionStatusUpdated event is published
    • If there is no srcTxHash in state, attempt to set it based on the local TransactionController state

@metamask/perps-controller 4.0.0

Added

  • Add coalescePerpsRestRequest utility for deduplicating concurrent REST requests with account-scoped cache keys (#8560)
  • Add accountUtils helpers for resolving the active perps account id and pinning it to forwarded provider params (#8560)

Changed

  • Account-scope the REST cache and guard cache writes so mount load stays cacheable without cross-account bleed (#8560)
  • Make forceRefresh provider-agnostic and align rate-limit handling with the extension (#8560)
  • Regenerate PerpsController method action types; shrink rate-limit diff and drop verbose history logs (#8560)

Removed

  • BREAKING: Drop the dead spotState parameter from adaptAccountStateFromSDK. Spot balances are layered on by addSpotBalanceToAccountState, which enforces the USDC-only policy via SPOT_COLLATERAL_COINS; removing the dormant branch keeps one source of truth and prevents a future caller from silently getting ALL-coins behavior (#8560)

Fixed

  • HyperLiquid Unified-mode live balance: subscribe to spotState WS and compute tradeable/total balance from on-chain math (#8560)
  • Complete spot-balance parity with the extension consumer (#8560)
  • Preserve integer trailing zeros when szDecimals=0 in perpsFormatters (#8560)
  • Preserve candle pagination cancellation and skip coalesce for explicit-endTime candle paging to avoid stale pages (#8560)
  • Defer account resolution on the non-paginated cache path to prevent race conditions (#8560)
  • Force-refresh on activity mount and evict expired coalesce entries so stale promises cannot resolve to cache (#8560)
  • Normalize event.user to lowercase when caching the spot-state WS address so #ensureSpotState hits the cache instead of triggering a redundant REST spotClearinghouseState refetch when HyperLiquid returns a checksummed address (#8560)

@metamask/transaction-pay-controller 19.3.0

Added

  • Add support for transaction config parameter accountOverride (#8454)

Changed

  • Bump @metamask/assets-controller from ^6.0.0 to ^6.1.0 (#8559)
  • Bump @metamask/assets-controllers from ^104.2.0 to ^104.3.0 (#8559)
  • Bump @metamask/bridge-controller from ^70.1.1 to ^70.2.0 (#8571)
  • Bump @metamask/bridge-status-controller from ^70.0.5 to ^71.0.0 (#8571)

933.0.0

23 Apr 11:31
7729e3e

Choose a tag to compare

@metamask/assets-controller 6.1.0

Added

  • Add newly supported chains to multicall contract support in MulticallClient (#8346)
    • Tempo Mainnet (4217/0x1079)
    • Tempo Testnet Moderato (42431/0xa5bf)
    • Ink Mainnet (57073/0xdef1)
    • Stable mainnet (988/0x3dc)

Changed

  • Bump @metamask/assets-controllers from ^104.0.0 to ^104.3.0 (#8509, #8544, #8559)
  • Bump @metamask/keyring-api from ^21.6.0 to ^23.0.1 (#8464)
  • Bump @metamask/keyring-internal-api from ^10.0.0 to ^10.1.1 (#8464)
  • Bump @metamask/keyring-snap-client from ^8.2.0 to ^9.0.1 (#8464)
  • Bump @metamask/transaction-controller from ^64.2.0 to ^64.3.0 (#8482)

Fixed

  • Native asset detection now correctly identifies native assets across all CAIP-19 representations, not just slip44: namespace checks (#8483)
    • Previously, native assets represented as ERC-20 tokens were not recognized as native, causing incorrect token type classification.
  • Exempt mUSD token from EVM ERC-20 minimum-occurrence spam filter so it is no longer incorrectly hidden (#8541)

@metamask/assets-controllers 104.3.0

Added

  • Export SPOT_PRICES_SUPPORT_INFO from the token prices service (#8483)

932.0.0

23 Apr 09:00
72c9cba

Choose a tag to compare

@metamask/eth-json-rpc-middleware 23.1.2

Changed

  • Add more strict validation for signTypedData V4 requests (#8526)

931.0.0

22 Apr 12:16
6b044b7

Choose a tag to compare

@metamask/transaction-pay-controller 19.2.2

Changed

  • Bump @metamask/assets-controllers from ^104.0.0 to ^104.2.0 (#8509, #8544)

Fixed

  • Ignore synthetic gas legs when determining Across support for perps direct deposits (#8527)
  • Route Across status polling through the configured Across API base and support depositTxnRef/fillTxnRef for Across status responses (#8512)

930.0.0

22 Apr 09:59
b59ca57

Choose a tag to compare

@metamask/assets-controllers 104.2.0

Added

  • Add Tempo Mainnet (4217/0x1079) multicall contract support (#8346)
  • Add Forma (0xf043a / eip155:984122) to SPOT_PRICES_SUPPORT_INFO, mapping its native TIA asset to slip44:984122 so the price-api can resolve it to CoinGecko's celestia coin (#8524)

929.0.0

21 Apr 11:35
7204f17

Choose a tag to compare

@metamask/authenticated-user-storage 1.0.0

Added

  • Initial release (#8260)
    • AuthenticatedUserStorageService class with namespaced domain accessors: delegations (list, create, revoke) and preferences (getNotifications, putNotifications)

Changed

  • BREAKING: Rename SocialAIPreference.traderProfileIds to mutedTraderProfileIds in types and notification-preferences validation to match the API payload. (#8536)

928.0.0

21 Apr 08:49
66c88a4

Choose a tag to compare

@metamask/money-account-upgrade-controller 1.0.0

Added

  • Add MoneyAccountUpgradeController with upgradeAccount method (#8426)

927.0.0

20 Apr 16:33
d5252c8

Choose a tag to compare

@metamask/messenger-cli 0.2.0

Added

  • BREAKING: Add support for formatting the generated method action type files with Prettier or Oxfmt (#8486)
    • This adds a --formatter option to the CLI, which accepts either oxfmt or
      prettier (default).
    • ESLint is no longer used to format the generated files, and is no longer a
      (peer) dependency of this package.

926.0.0

20 Apr 13:09
88a085f

Choose a tag to compare

@metamask/social-controllers 2.0.0

Changed

  • BREAKING: SocialService.follow, SocialService.unfollow, and SocialController.followTrader, SocialController.unfollowTrader no longer accept an addressOrUid option. The caller is identified server-side from the JWT sub claim carried in the Authorization header. (#8520)
  • BREAKING: SocialService.fetchFollowing and SocialController.updateFollowing now take no arguments (previously { addressOrUid }). (#8520)
  • BREAKING: Remove FetchFollowingOptions type export (no longer needed). (#8520)
  • SocialService now calls PUT /v1/users/me/follows, DELETE /v1/users/me/follows, and GET /v1/users/me/following (previously /v1/users/:addressOrUid/...). (#8520)

925.0.0

17 Apr 18:01
5d8bbdf

Choose a tag to compare

@metamask/perps-controller 3.2.0

Added

  • Add isAbortError utility export from utils for distinguishing expected cancellation errors from real failures (#8515)

Changed

  • TradingService.flipPosition() no longer passes stale position entryPrice as currentPrice on reverse-position orders; providers now validate and price flips against live market data (#8515)

Removed

  • Remove unused ESTIMATED_FEE_RATE export from constants/hyperLiquidConfig (dead code after reverse-position fee precheck was removed) (#8515)

Fixed

  • Suppress noisy Sentry reports from expected historical-candle fetch cancellations (AbortError) during navigation, while preserving real error reporting in HyperLiquidClientService and MarketDataService (#8515)