Releases: MetaMask/core
Releases · MetaMask/core
1048.0.0
@metamask/money-account-balance-service 2.1.0
Changed
- Fetch on-chain Money account balances at the
pendingblock tag instead oflatest, so a balance refetch triggered byTransactionController:transactionConfirmedreturns the post-transaction balance immediately rather than stale data for up to ~20 seconds. (#9163)- Applies to
getMoneyAccountBalance,getMusdBalance,getVmusdBalance, andgetMusdEquivalentValue. As a result these reads now reflect pending (mempool-inclusive) state.getExchangeRateand the on-chainAccountant.base()token-address lookup intentionally remain onlatest.
- Applies to
1047.0.0
@metamask/social-controllers 2.3.1
Added
- Add optional 7-day per-chain fields to the
PerChainBreakdowntype (andPerChainBreakdownStruct):perChainPnl7d(Record<string, number>),perChainRoi7d(Record<string, number | null>), andperChainVolume7d(Record<string, number>) — exposing the 7-day Hyperliquid/per-chain breakdown alongside the existing 30-day fields. The unsuffixed fields (perChainPnl,perChainRoi,perChainVolume) remain the 30-day window; the new fields are optional for backward compatibility with social-api versions that only return the 30-day breakdown (#9165)
1046.0.0
1045.0.0
@metamask/social-controllers 2.3.0
Added
- Add optional perp fields to the
Tradetype (andTradeStruct):classification('spot' | 'perp' | 'send' | 'receive' | null),perpPositionType('long' | 'short' | null), andperpLeverage(number | null) — exposing Hyperliquid/perp trade metadata to consumers (#9094) - Add optional perp fields to the
Positiontype (andPositionStruct):perpPositionType('long' | 'short' | null),perpLeverage(number | null), andpositionAmountWithLeverage(number | null) — exposing Hyperliquid/perp position metadata to consumers (#9094)
Changed
1044.0.0
@metamask/keyring-controller 27.1.0
Added
- Add
isKeyringControllerErrorpredicate (#9095)
Changed
- Bump
@metamask/utilsfrom^11.9.0to^11.11.0(#9074)
Fixed
- Remove use of
instanceofforisKeyringNotFoundError(#9095)- Using
instanceofcauses a lot of issue if we have 2 major@metamask/keyring-controllermajor versions in the dependency tree,class KeyringControllerErrorcould be different classes and this, making the check to fail.
- Using
1043.0.0
@metamask/transaction-pay-controller 23.7.0
Added
- Add
isQuoteRequiredtransaction config parameter to enforce fetching relay quotes even when source and target tokens are identical (#9117)
Changed
- Bump
@metamask/assets-controllersfrom^109.0.0to^109.1.0(#9110)
Fixed
- Fix token amount in
buildTokenTransferDatafor MM Pay post-quote Money Account transactions when source and target tokens have different decimal places (#9116)
1042.0.0
@metamask/profile-sync-controller 28.2.0
Changed
- Bump
@metamask/utilsfrom^11.9.0to^11.11.0(#9074) - Bump
@metamask/keyring-controllerfrom^26.0.0to^27.0.0(#9058)
Fixed
- Deduplicate SRP profile pairing calls by payload in
SRPJwtBearerAuth.pairSrpProfiles(#8984)- Concurrent and short-interval sequential
performSignIntriggers (multiple UI surfaces, unlock-time effects, pairing retries) previously each issued their ownPOST /api/v2/profile/pair. A promise cache keyed by the token set now coalesces in-flight calls and reuses a successful result for a short TTL, collapsing the redundant calls into one. The key is order-insensitive (the same token set in any order dedupes), and failures are never cached so the existingneedsProfilePairingretry loop still re-hits the endpoint.
- Concurrent and short-interval sequential
- Scope the storage-key and snap-signature caches in
UserStorageControllerperentropySourceId(#8948)- In the edge case where two SRPs resolve to the same
profileId(e.g. a shared canonical profile after pairing), the previously message-keyed caches could hand one SRP the other's cached key — letting it read/decrypt the other SRP's user storage (which surfaced as a second SRP inheriting the first SRP's account names) or write under its key. Scoping byentropySourceIdkeeps each SRP's key isolated even then; the signedmetamask:${profileId}message is unchanged, so existing storage keys are preserved.
- In the edge case where two SRPs resolve to the same
1041.0.0
@metamask/money-account-balance-service 2.0.0
Added
- Add
getMoneyAccountBalancemethod that fetches the account's mUSD wallet balance and vault shares valued in mUSD in a single Multicall3aggregate3request. (#9100) - Add optional
underlyingTokenfield toVaultConfig(validated byVaultConfigStruct). When present,getMusdBalancereads the underlying mUSD token address from config and skips the on-chainAccountant.base()call; when absent it falls back to readingbase()on-chain. (#9100) - Add support for configuring the balance
staleTimeat runtime via themoneyAccountBalanceStaletimeremote feature flag. The flag is read duringinit()and updated onRemoteFeatureFlagController:stateChange; absent or malformed values fall back to the default of 60 seconds. (#9100)
Changed
- BREAKING: Rename
musdSHFvdtovmusdacross the public API to align with the vmUSD token name: (#9100)getMusdSHFvdBalancemethod →getVmusdBalanceMoneyAccountBalanceServiceGetMusdSHFvdBalanceActiontype →MoneyAccountBalanceServiceGetVmusdBalanceActionMoneyAccountBalanceService:getMusdSHFvdBalancemessenger action string →MoneyAccountBalanceService:getVmusdBalanceMoneyAccountBalanceResponse.musdSHFvdValueInMusdproperty →vmusdValueInMusd
- Increase the default
staleTimefor on-chain balance reads (getMusdBalance,getVmusdBalance,getMusdEquivalentValue, and the default forgetExchangeRate) from 30 seconds to 60 seconds. This default is now overridable via themoneyAccountBalanceStaletimeremote feature flag. (#9100) - Bump
@metamask/utilsfrom^11.9.0to^11.11.0(#9074) - Bump
@metamask/controller-utilsfrom^12.1.0to^12.2.0(#9058, #9083) - Bump
@metamask/base-data-servicefrom^0.1.2to^0.1.3(#8799) - Bump
@metamask/remote-feature-flag-controllerfrom^4.2.1to^4.2.2(#8986)
1040.0.0
@metamask/assets-controllers 109.1.0
Added
- Add optional
includeMarketDataparameter tofetchTokenContractExchangeRates(#9042)- When
includeMarketDataistrue, the function returnsContractMarketData(fullMarketDataDetailsper token, including percentage changes, market cap, volume, etc.) instead ofContractExchangeRates(price-only). Defaults tofalsefor backward compatibility.
- When
Changed
1039.0.0
@metamask/transaction-pay-controller 23.6.0
Added
- Add direct mUSD fiat injection flow for Money Account deposits behind
useFiatMUSDQuoteToInjectForMoneyAccountfeature flag. When enabled, probes fiat providers for mUSD on Monad availability and, if viable, purchases mUSD directly to the Money Account, skipping the ETH-to-mUSD bridge. Falls back to the existing flow when no provider supports the direct route. Also movesfiatPayment.caipAssetIdassignment into fiat quote functions so the asset ID always matches the quote that succeeded. (#9080) - Make fiat order polling interval and timeout remotely configurable via
confirmations_pay_fiat.orderPollIntervalMsandconfirmations_pay_fiat.orderPollTimeoutMsfeature flags (#9090)
Changed
- Bump
@metamask/utilsfrom^11.9.0to^11.11.0(#9074) - Bump
@metamask/assets-controllerfrom^9.0.0to^9.0.1(#9083) - Bump
@metamask/controller-utilsfrom^12.1.1to^12.2.0(#9083) - Bump
@metamask/transaction-controllerfrom^67.1.0to^68.0.0(#9089) - Bump
@metamask/ramps-controllerfrom^14.1.1to^14.2.0(#9105)
Fixed
- Clear stale
fiatPayment.rampsQuotewhen a fiat quote fetch fails, preventing the "No quotes" alert from being silently suppressed after a prior successful fetch (#9073)