Repository navigation
Releases: MetaMask/core
Releases · MetaMask/core
Release list
1332.0.0
@metamask/perps-controller 20.1.0
Added
- Add
PERPS_EVENT_VALUE.SECTION_NAME.EXPLORE(explore) andRECENTLY_ADDED(recently_added) so home impressions for the Explore table and the Recently added rail use controller constants (#10824) - Add
PERPS_ERROR_CODES.PRICE_MOVEDand optionalerrorCodeanderrorDetailsonOrderResult, so a failed placement can be localized without parsingOrderResult.error(#10385)- Export
isPerpsErrorCode,PriceMovedErrorDetails, andPerpsErrorDetails.PriceMovedErrorDetailscarries unformattedpriceDeltaBps,maxSlippageBps,expectedPrice, andcurrentPrice createErrorResultcopieserrorCodeanderrorDetailswhen the failure is a structured controller error. HyperLiquid mapped rejections, including an immediate-match rejection (IOC_CANCEL) andEXCHANGE_ACCOUNT_NOT_FOUND, now seterrorCode;OrderResult.errorstays the same message- A USD-derived order whose price moved past
maxSlippageBps(or the default market slippage) reportsPRICE_MOVED. The message still starts withPrice moved too much:; the expected and current prices in it use HyperLiquid price formatting
- Export
- Add
PERPS_EVENT_PROPERTY.PRICE_DELTA_BPS(price_delta_bps) and exportPerpsMaxSlippageSource. Trade and close analytics now includefailure_reasonfromerrorCodewhen one is present,price_delta_bpsfor aPRICE_MOVEDrejection, andmax_slippage_pct,max_slippage_source, andestimated_slippage_pctfrom the caller's tracking data. Rawerror_messageis still sent. Failed close events also includeclose_type, derived from the requested size, including when the provider throws. That property previously appeared only on executed closes (#10385)
Changed
- Bump
reselectfrom^5.1.1to^5.3.0(#10532) - Bump
@metamask/abi-utilsfrom^2.0.3to^2.0.4(#10715) - Perps error logs include bounded
feature,operation,action, andcomponenttags for connection, order, position, deposit, and withdrawal failures, while retaining diagnostic values in the log context (#10681) - Trade traces pass an explicit
okorerrorstatus toPerpsTracer.endTrace, the place-order payment-token attribute is namedpay_token_symbolso Sentry does not scrub its value, and Lighter trading failures are forwarded to Sentry with their original provider message and bounded operation/action tags (#10685)
Fixed
- Log deposit transaction failures that reject after confirmation, for both deposit-only and deposit-and-order, with
financial_operations/financial_deposittags, and leave user cancellation unlogged (#10681) - Log flip results that resolve
success: falsewithposition_management/flip_positiontags, and leaveKEYRING_LOCKEDandEXCHANGE_ACCOUNT_NOT_FOUNDunlogged (#10681) - Add optional
OrderParams.deferProviderErrorReport. A flip sets it so HyperLiquid and Lighter do not logplace_orderfor that failure, andflipPositionlogs it once asposition_management/flip_position. Delegated close failures likewise log once asposition_management/close_position. Expected signer, account, session, and selected local-validation outcomes stay unlogged (#10681) - Skip the calculation-time price guard for exact-size HyperLiquid orders, including a full close that submits the live position size. Those orders are no longer rejected locally when
priceAtCalculationis stale; the venue's slippage-capped limit still applies. The guard still runs for USD-derived sizing (#10385)
1331.0.0
@metamask/transaction-controller 72.2.1
Changed
- Bump
@metamask/rpc-errorsfrom^7.0.2to^7.0.3(#10718) - Bump
@metamask/core-backendfrom^12.0.1to^12.1.0(#10788)
Fixed
- Count confirmed transactions when choosing the next nonce, so a mined transaction is not reused when
eth_getTransactionCountis still behind that transaction (#10803)
1330.0.0
@metamask/kyc-controller 0.9.0
Added
- Add
KycService.resetWrappingKeys, which postsPOST /sessions/{sessionId}/wrapping-keyswithsessionClientPublicKeyand returnsUkycSessionResponse(#10692) - Export
CAPABILITY_AUTHORIZATION_STATUSES,CAPABILITY_AUTHORIZATION_STATUSES_TO_REFRESH,FINAL_STATUSES_TO_SKIP_AUTH_REFRESH,needsCapabilityAuthorizationRefresh,KYC_STATUSES, andFINAL_STATUSES_TO_STOP_POLLING(#10692)
Changed
- Refresh and resubmit the UKYC capability authorization when
capabilityAuthorizationStatusisneworexpiredwhile resuming a session instartSession(skipped whenfinalStatusisapprovedorrejected) (#10692) - Space
KycControllersession-status polls with a linear backoff. The first poll is immediate, the next waits 10 seconds, and each later wait grows by 10 seconds. Starting polling again resets the delay (#10764)
1329.0.0
1328.0.0
@metamask/subscription-controller 14.0.0
Changed
- BREAKING:
SubscriptionDelegationServiceMessengernow requiresSubscriptionController:isUserEligibleForTrial(#10795)- Clients that construct this messenger must delegate
SubscriptionController:isUserEligibleForTrial.
- Clients that construct this messenger must delegate
- Bump
@metamask/profile-sync-controllerfrom^34.0.2to^34.0.3(#10761) - Require
Subscription.currentPeriodStart,currentPeriodEnd,cancelType, andisEligibleForSupportin the subscription response and runtime validation. (#10765) - Bump
@metamask/transaction-controllerfrom^72.1.0to^72.2.0(#10772)
Fixed
- Fixed Money Account Plus checkout requesting a trial for a user
isUserEligibleForTrialrejects (#10795) SubscriptionController:unCancelSubscriptionrefreshes subscriptions after a successful uncancel. (#10802)- The stored subscription is replaced with the uncancel response instead of merged with it, so optional fields the response omits (such as
cancelAtPeriodEndandcanceledAt) no longer keep stale values, including when the subscription refresh fails.
- The stored subscription is replaced with the uncancel response instead of merged with it, so optional fields the response omits (such as
@metamask/wallet 17.1.0
Changed
- Delegate
SubscriptionController:isUserEligibleForTrialtoSubscriptionDelegationServiceso Money Account Plus checkout uses the controller trial rule (#10795) - Bump
@metamask/transaction-controllerfrom^72.1.0to^72.2.0(#10772) - Bump
@metamask/subscription-controllerfrom^13.0.0to^14.0.0(#10810)
1327.0.0
@metamask/profile-controller 1.1.0
Added
- Add
ProfileServiceMockfor mocking profile-api responses (#10745) - Add
getXAuthorizationUrlmethod toProfileControllerfor initiating the X OAuth flow. It fetches the authorization URL viaProfileService:getXAuthUrl(the profile is resolved server-side from the verified bearer token), and returns the authorization URL and state parameter as ephemeral session data, without storing them in controller state (#10668, #10793) - Add
disconnectXmethod toProfileControllerfor unlinking the X account from a profile. It delegates toProfileService:disconnectX, and when the disconnected profile matches the profile in state, clearsxProfilefrom controller state and setsconnectedToXtofalse(#10668) - Add
disconnectXmethod toProfileServicefor sending an authenticatedDELETErequest to theprofiles/{profileId}/xendpoint; a404response is treated as success (the X account is already disconnected) (#10668) - Add
fetchAndUpdateProfilemethod to theProfileControllerto fetch a profile from the profile-api and update the controller's state (#10793)
Changed
getXAuthorizationUrlno longer accepts alinkedAddressparameter (#10668)connectXupdates controller state (xProfile) on success (#10668, #10793)- Bump
@metamask/profile-sync-controllerfrom^34.0.0to^34.0.3(#10752, #10756, #10761)
Fixed
1326.0.0
@metamask/assets-controller 19.0.0
Added
- Add a transient, non-persisted per-account assets loading state (
assetsLoadingStatus) that marks an account asloadingfrom its first user-visible assets fetch until that fetch settles, and never re-marks it on later refreshes, with selectors to read it (#10230)
Changed
- BREAKING:
RpcDataSourcerequiresqueryApiClientand no longer acceptsqueryClient.AssetsControllerpasses its existingqueryApiClient(#10672)- RPC token detection now loads supported networks, occurrence floors, and per-chain token lists through
queryApiClient.token(GET /v2/supportedNetworks,GET /v1/suggestedOccurrenceFloors,GET /tokens/{chainId}), replacing the localTokensApiClient.
- RPC token detection now loads supported networks, occurrence floors, and per-chain token lists through
- Bump
@metamask/account-tree-controllerfrom^11.0.0to^11.0.1(#10662) - Bump
@metamask/assets-controllersfrom^112.1.1to^112.1.2(#10662) - Bump
@metamask/core-backendfrom^12.0.0to^12.1.0(#10662, #10788) - Bump
@metamask/keyring-internal-apifrom^12.0.0to^12.1.0(#10733) - Bump
@metamask/snaps-controllersfrom^19.0.0to^19.0.1(#10719) - Bump
@metamask/transaction-controllerfrom^72.1.0to^72.2.0(#10772) - Bump
@metamask/keyring-apifrom^24.0.0to^24.1.0(#10717)
@metamask/bridge-controller 82.0.3
Changed
- Bump
reselectfrom^5.1.1to^5.3.0(#10532) - Bump
@metamask/profile-sync-controllerfrom^34.0.0to^34.0.3(#10752, #10756, #10761) - Bump
@metamask/snaps-controllersfrom^19.0.0to^19.0.1(#10719) - Bump
@metamask/transaction-controllerfrom^72.1.0to^72.2.0(#10772) - Bump
@metamask/keyring-apifrom^24.0.0to^24.1.0(#10717) - Bump
@metamask/assets-controllerfrom^18.0.1to^19.0.0(#10788)
@metamask/core-backend 12.1.0
Added
- Add
occurrenceFloor,includeNativeAssets, andincludeRwaDataquery options toTokenApiClient.fetchTokenList(GET /tokens/{chainId}) (#10672) - Add
TokenApiClient.fetchV2SupportedNetworksfor Token APIGET /v2/supportedNetworks(#10672)
Changed
- Bump
@metamask/profile-sync-controllerfrom^34.0.0to^34.0.3(#10752, #10756, #10761) BackendWebSocketServiceroutes notifications by exact channel name andsubscriptionId. Account-activity chain-wildcard matching, stale-subscription channel fallback, and nested payload unwrapping have been removed (#10754)
@metamask/transaction-pay-controller 30.1.0
Added
- Support submitting target calls as a separate second leg when the quote provider cannot execute them (#10501)
- Add
requiresSecondLegtoTransactionPayQuote. ServerStrategynow supports non-atomic requests.- Non-atomic quotes settle funds on the account that executes the calls.
- Add
Changed
- Bump
@metamask/transaction-controllerfrom^72.1.0to^72.2.0(#10772) - Fail fiat and second-leg submissions when the settled amount cannot be read from an on-chain transaction, rather than falling back to
order.cryptoAmountor the quote minimum (#10501) - Bump
@metamask/assets-controllerfrom^18.0.1to^19.0.0(#10788)
Fixed
- Zero source network fees for Relay quotes on Polymarket deposit-wallet Predict withdraws, as the Polymarket relayer pays origin gas (#10501)
- Set
isIntentCompleteon the parent transaction only after the non-atomic second leg of a Relay quote is submitted, so a failed second leg no longer leaves a failed transaction flagged as complete (#10501)
1325.0.0
@metamask/kyc-controller 0.8.0
Added
- Added exported
KYC_STATUSESandTERMINAL_SESSION_STATUSES, so consumers can reuse the KYC status vocabulary and the terminal session-status set (approved,rejected,retry) from the package entry point instead of redefining them locally (#10771)
Changed
KycController.hasCompletedSessionDisclaimersnow reports completion from sessionconsentStatus === 'given'instead of fetching the session disclaimer catalog (#10760)- This no longer throws a 409 when the session is already in a terminal state
- Bump
@metamask/profile-sync-controllerfrom^34.0.2to^34.0.3(#10761)
1324.0.0
@metamask/social-controllers 3.7.0
Added
- Add optional
mutualsflag tofetchFollowers(FetchFollowersOptions). Whentrue, calls bearer-authenticatedGET /traders/:addressOrId/followers?mutuals=true(social-api #386);countis the mutual total. Omitted orfalsekeeps the full follower list (#10770) - Add
fetchMyFollowingmethod toSocialService(and theSocialService:fetchMyFollowingmessenger action) as an alias offetchFollowing. Both callGET /users/me/following. PreferfetchMyFollowingin new code so it pairs withfetchMyFollowers;fetchFollowingis unchanged (#10701) - Add
fetchTraderFollowingmethod toSocialService(and theSocialService:fetchTraderFollowingmessenger action) for another trader's outbound follows. Calls bearer-authenticatedGET /traders/:addressOrId/following(social-api #380) and returnsFollowingResponse(followingprofile summaries plus totalcount). Distinct fromfetchFollowing, which loads the current user's list viaGET /users/me/following.fetchFollowersuses the same auth model forGET /traders/:addressOrId/followers(#10689) - Add
fetchMyFollowersmethod toSocialService(and theSocialService:fetchMyFollowersmessenger action) for the authenticated user's inbound followers. CallsGET /users/me/followersand returnsFollowersResponse(followersprofile summaries plus totalcount) (#10649)
Changed
- Allow
boughtUsd,soldUsd,realizedPnl, andcostBasisto benullonPosition/ feed items, matching incomplete Clicker metrics the social-api may serialize as JSONnull(#10753) - Drop individual
fetchFeed,fetchTraderFeed, andfetchTokenFeeditems that fail validation instead of rejecting the whole page (#10753) - Update
SocialRealtimeServiceto subscribe to the trending Social feed channel and forward every valid event from batched notifications (#10751) - Bump
@metamask/profile-sync-controllerfrom^34.0.0to^34.0.3(#10752, #10756, #10761)
1323.0.0
@metamask/transaction-controller 72.2.0
Added
- Add
isTransactionTrustedtoTransactionControllerOptionsto limit future-block re-simulation to untrusted transactions (#10747)
Changed
- Bump
@metamask/network-controllerfrom^37.0.0to^37.0.1(#10658) - Bump
@metamask/core-backendfrom^12.0.0to^12.0.1(#10662) - Bump
@metamask/nonce-trackerfrom^6.0.0to^6.1.0(#10735) - Bump
ethereum-cryptographyfrom^2.2.1to^3.2.0(#10599)
Fixed
- Recognize Ink Mainnet and Ink Sepolia as OP Stack networks when estimating Layer 1 gas fees (#10707)