Releases: MetaMask/core
Releases · MetaMask/core
951.0.0
@metamask/assets-controller 6.3.0
Added
- Seed mUSD (
0xaca92e438df0b2401ff60da7e4337b687a2435da) as a default tracked asset on Ethereum mainnet (eip155:1), Linea (eip155:59144), and Monad testnet (eip155:143) (#8616)assetsInfois pre-populated in default controller state so mUSD metadata is available before any on-chain fetch completes.- Zero-balance entries are written into
assetsBalanceat startup, on account/network changes, and immediately when the user adds a chain that has default tracked assets. - New exports:
DEFAULT_TRACKED_ASSETS_BY_CHAIN,CHAINS_WITH_DEFAULT_TRACKED_ASSETS,DEFAULT_ASSET_METADATA,buildDefaultAssetsInfo,getDefaultTrackedAssetsForChain,getDefaultAssetMetadata.
Changed
- Bump
@metamask/permission-controllerfrom^12.3.0to^13.0.0(#8661) - Bump
@metamask/assets-controllersfrom^105.0.0to^105.1.0(#8661) - Bump
@metamask/keyring-apifrom^23.0.1to^23.1.0(#8647) - Bump
@metamask/keyring-internal-apifrom^10.1.1to^11.0.1(#8584, #8647) - Bump
@metamask/keyring-snap-clientfrom^9.0.1to^9.0.2(#8647) - Bump
@metamask/messengerfrom^1.1.1to^1.2.0(#8632) - Bump
@metamask/keyring-controllerfrom^25.2.0to^25.3.0(#8634) - Bump
@metamask/network-controllerfrom^30.0.1to^30.1.0(#8636)
Fixed
- Correct mUSD default tracked metadata decimals from
18to6so seeded balances and formatting align with token contract precision (#8664)
@metamask/assets-controllers 105.1.0
Added
- Seed mUSD (
0xaca92e438df0b2401ff60da7e4337b687a2435da) intoallTokensstate as a default tracked asset on Ethereum mainnet (0x1), Linea (0xe708), Monad mainnet (0x8f), and Monad testnet (0x279f) (#8620)TokenDetectionController.start()now callsTokensController:addTokensfor mUSD on every supported chain that is configured inNetworkController— this is the primary trigger and uses the provenaddTokensAPI. Re-runs onAccountsController:selectedEvmAccountChange(sinceaddTokensonly seeds for the currently selected account).TokensControlleralso seeds mUSD directly into state as a defense-in-depth measure: at startup for existing EVM accounts, on accounts already in persistedallTokensstate, onAccountsController:accountAdded, onAccountsController:selectedEvmAccountChange, onKeyringController:unlock, onNetworkController:networkAdded, and onNetworkController:stateChangeadd patches.TokensControllerMessengernow requiresNetworkControllerNetworkAddedEvent,AccountsControllerAccountAddedEvent, andKeyringControllerUnlockEventas allowed events.
- Add ZetaChain network support (
7000/0x1b58) (#8627)
Changed
- Bump
@metamask/permission-controllerfrom^12.3.0to^13.0.0(#8661) - Bump
@metamask/keyring-apifrom^23.0.1to^23.1.0(#8647) - Bump
@metamask/keyring-internal-apifrom^10.1.1to^11.0.1(#8584, #8647) - Bump
@metamask/messengerfrom^1.1.1to^1.2.0(#8632) - Bump
@metamask/keyring-controllerfrom^25.2.0to^25.3.0(#8634) - Bump
@metamask/network-controllerfrom^30.0.1to^30.1.0(#8636)
Fixed
- Correct the seeded mUSD token decimals from
18to6inTokensControllerandTokenDetectionControllerdefaults so tracked token metadata matches contract precision (#8664)
@metamask/eip1193-permission-middleware 2.0.0
Changed
- BREAKING: Consolidate method handlers into a single
methodHandlersexport (#8583)- The individual handler exports have been removed. They can still be accessed as properties on the
methodHandlersexport. - The new handlers follow the format expected by
createMethodMiddlewarefrom@metamask/json-rpc-engine@10.3.0. - The hook types have been updated to cohere with the corresponding
@metamask/permission-controllermethods.
- The individual handler exports have been removed. They can still be accessed as properties on the
- Bump
@metamask/json-rpc-enginefrom^10.2.0to^10.3.0(#7642, #7856, #8078, #8317, #8661) - Upgrade
@metamask/utilsfrom^11.8.1to^11.9.0(#7511) - Bump
@metamask/controller-utilsfrom^11.16.0to^11.20.0(#7534, #7583, #7995, #8344) - Bump
@metamask/permission-controllerfrom^12.1.1to^13.0.0(#7559, #8225, #8317, #8661) - Bump
@metamask/chain-agnostic-permissionfrom^1.3.0to^1.5.0(#7567, #8290)
@metamask/json-rpc-engine 10.3.0
Added
- Add
createOriginMiddlewareutility tov2(#8522) - Add
createMethodMiddlewareutility tov2(#8506, #8583)- This utility allows JSON-RPC method implementations to use both the hooks pattern and the messenger.
- Add legacy
createMethodMiddleware(#8583)- Consolidates bespoke
makeMethodMiddlewareMakerimplementations from the MetaMask extension and mobile clients. - Handlers may now declare
actionNamesand receive a delegated messenger as the sixth argument toimplementation, mirroring the v2createMethodMiddleware. - Deprecated in favor of the v2
createMethodMiddleware.
- Consolidates bespoke
Changed
- Bump
@metamask/messengerfrom^1.1.1to^1.2.0(#8632)
@metamask/multichain-api-middleware 3.0.0
Added
- Add
MethodHandlerHookstype, the intersection of all method handler hook types (#8583)- Consumers can use this to type the hooks object passed to
createMethodMiddlewarewithout restating each handler's hooks individually.
- Consumers can use this to type the hooks object passed to
Changed
- BREAKING: Consolidate method handlers into a single
methodHandlersexport (#8583)- The individual handler exports have been removed. They can still be accessed as properties on the
methodHandlersexport. - The new handlers follow the format expected by
createMethodMiddlewarefrom@metamask/json-rpc-engine@10.3.0. - The hook types have been updated to cohere with their corresponding MetaMask controller methods.
- The individual handler exports have been removed. They can still be accessed as properties on the
- BREAKING: Make
trackSessionCreatedEventhook required inwallet_createSessionhandler (#8583)- If the hook is not required,
nullcan be passed instead.
- If the hook is not required,
- Bump
@metamask/json-rpc-enginefrom^10.2.3to^10.3.0(#8317, #8661) - Bump
@metamask/network-controllerfrom^30.0.0to^30.1.0(#8317, #8636) - Bump
@metamask/permission-controllerfrom^12.2.1to^13.0.0(#8317, #8661) - Bump
@metamask/multichain-transactions-controllerfrom^7.0.3to^7.0.4(#8325) - Bump
@metamask/controller-utilsfrom^11.19.0to^11.20.0(#8344)
Fixed
wallet_invokeMethodfails early with aninvalidParamserror when theparamsobject is not an object (#8583)- Previously it would fail with a less specific error.
wallet_revokeSessionnow returnstruewhen no active session exists and specific scopes are requested, consistent with its full-revoke behavior (#8583)- Previously it would return an internal error.
@metamask/permission-controller 13.0.0
Added
- Add
createPermissionMiddlewareV2, aJsonRpcEngineV2variant of the standalone permission middleware factory (#8532) - Add
messengeroption to permission specification builders, allowing restricted-method specs to receive a scoped messenger in place ofmethodHooks(#8551)- Use the
actionNamesfield on the specification builder andcreateRestrictedMethodMessengerto construct the scoped messenger.
- Use the
Changed
- BREAKING: Decouple the permission middleware from
PermissionControllerand expos...
950.0.0
@metamask/transaction-pay-controller 20.1.0
Added
- Export
TransactionDatatype from public API (#8630)
Changed
949.0.0
@metamask/chomp-api-service 3.0.0
Changed
- BREAKING: update types and methods of chomp-api-service to properly reflect the API (#8635)
- Bump
@metamask/messengerfrom^1.1.1to^1.2.0(#8632)
@metamask/money-account-upgrade-controller 1.3.0
Changed
- Bump
@metamask/chomp-api-servicefrom^2.0.0to^3.0.0(#8651) - Bump
@metamask/messengerfrom^1.1.1to^1.2.0(#8632) - Bump
@metamask/keyring-controllerfrom^25.2.0to^25.3.0(#8634) - Bump
@metamask/network-controllerfrom^30.0.1to^30.1.0(#8636)
Fixed
- Fix the associate-address step to detect the already-associated case via
status: 'active'. (#8635)
948.0.0
@metamask/config-registry-controller 0.3.0
Changed
- Bump
@metamask/keyring-controllerfrom^25.1.1to^25.3.0(#8363, #8634) - Bump
@metamask/profile-sync-controllerfrom^28.0.1to^28.0.2(#8325) - Bump
@metamask/controller-utilsfrom^11.19.0to^11.20.0(#8344) - Bump
@metamask/messengerfrom^1.0.0to^1.2.0(#8364, #8373, #8632) - Bump
@metamask/base-controllerfrom^9.0.1to^9.1.0(#8457)
Fixed
ConfigRegistryApiServicenow accepts chains with noassets.listUrlproperty (#8624)
947.0.0
@metamask/network-controller 30.1.0
Added
- Expose missing public
NetworkControllermethods through its messenger (#8350)- The following actions are now available:
NetworkController:enableRpcFailoverNetworkController:disableRpcFailoverNetworkController:getProviderAndBlockTrackerNetworkController:getNetworkClientRegistryNetworkController:initializeProviderNetworkController:lookupNetworkNetworkController:lookupNetworkByClientIdNetworkController:get1559CompatibilityWithNetworkClientIdNetworkController:resetConnectionNetworkController:rollbackToPreviousProviderNetworkController:loadBackup
- Corresponding action types are available as well.
- The following actions are now available:
- Add
getEthQuerymethod toNetworkController(#8350)
Changed
- Bump
@metamask/controller-utilsfrom^11.19.0to^11.20.0(#8344) - Bump
@metamask/eth-json-rpc-middlewarefrom^23.1.1to^23.1.3(#8550, #8611) - Bump
@metamask/messengerfrom^1.0.0to^1.2.0(#8364, #8373, #8632) - Bump
@metamask/base-controllerfrom^9.0.1to^9.1.0(#8457)
Deprecated
NetworkControllerGetNetworkConfigurationByNetworkClientIdtype is deprecated in favor ofNetworkControllerGetNetworkConfigurationByNetworkClientIdAction(#8350)- Deprecate
AbstractRpcServiceandRpcServiceRequestable(#8475)- There are no equivalents to these interfaces. If you need to take an "RPC-service-like" argument, it's best to declare which properties you're interested in rather than accepting the entire RPC service interface.
946.0.0
@metamask/keyring-controller 25.3.0
Added
- Expose
KeyringController:exportSeedPhrasemethod throughKeyringControllermessenger (#8587) - Expose
KeyringController:isUnlockedmethod throughKeyringControllermessenger (#8573)- Returns
truewhen the vault is unlocked,falseotherwise. Mirrorsstate.isUnlockedand theisUnlocked()instance method, allowing consumers to check lock status via the messenger without holding a controller reference.
- Returns
- Add
withControlleraction to run atomic operations on multiple keyrings (within a single transaction) (#8416)- This action uses a
RestrictedControllerobject that exposesaddNewKeyringandremoveKeyringmethods to add and remove keyring during the transaction (atomic) call.
- This action uses a
- Expose
KeyringController:signTransactionmethod throughKeyringControllermessenger (#8408) - Persist vault when keyring state changes during unlock (#8415)
- If a keyring's serialized state differs after deserialization (e.g. a migration ran, or metadata was missing), the vault is now re-persisted so the change is not lost on the next unlock.
- Added
KeyringV2support (#8390)- The controller now maintains a list of
KeyringV2instance in memory alongside previousKeyringinstance. - This new keyring interface is more generic and will become the new standard to interact with keyring (creating accounts, executing logic that involves accounts like signing, etc...).
- For now, most
KeyringV2are wrappers (read adapters) around existingKeyringinstance.
- The controller now maintains a list of
- Added
withKeyringV2Unsafemethod andKeyringController:withKeyringV2Unsafemessenger action for lock-free read-only access toKeyringV2adapters (#8390)- Mirrors
withKeyringUnsafesemantics: no mutex acquired, no persistence or rollback. - Caller is responsible for ensuring the operation is read-only and accesses only immutable keyring data.
- Mirrors
- Added
withKeyringV2method andKeyringController:withKeyringV2messenger action for atomic operations using theKeyringV2API (#8390)- Accepts a
KeyringSelectorV2to select keyrings bytype,address,id, orfilter. - Ships with default V2 builders for HD (
HdKeyringV2) and Simple (SimpleKeyringV2) keyrings; additional builders can be registered via thekeyringV2Buildersconstructor option.
- Accepts a
Changed
- Bump
@metamask/messengerfrom^1.0.0to^1.2.0(#8364, #8373, #8632) - Bump
@metamask/base-controllerfrom^9.0.1to^9.1.0(#8457) - Bump
@metamask/eth-hd-keyringfrom^13.1.1to^14.0.1(#8464) - Bump
@metamask/eth-simple-keyringfrom^11.1.2to^12.0.1(#8464) - Bump
@metamask/keyring-apifrom^21.6.0to^23.0.1(#8464) - Bump
@metamask/keyring-internal-apifrom^10.0.0to^11.0.0(#8464, #8584)
945.0.0
@metamask/messenger 1.2.0
Added
- Allow overriding action handler in subclass (#8617)
- The
Messengerclass now has a protectedgetActionmethod which returns the action handler for a given action name.
- The
- Add
subscribeOnceandwaitUntilutility methods toMessenger(#8575)
Deprecated
- Deprecate
generate-action-typesCLI tool andmessenger-generate-action-typesbinary (#8378)- The CLI has been extracted to
@metamask/messenger-cli. Usemessenger-action-typesfrom this package instead.
- The CLI has been extracted to
Fixed
- Throw different error for missing delegated actions (#8557)
944.0.0
@metamask/assets-controller 6.2.1
Changed
- Bump
@metamask/transaction-controllerfrom^64.4.0to^65.0.0(#8613) - Bump
@metamask/assets-controllersfrom^104.3.0to^105.0.0(#8622)
@metamask/assets-controllers 105.0.0
Added
- Expose missing public
CurrencyRateControllermethods through its messenger (#8561)- The following actions are now available:
CurrencyRateController:setCurrentCurrencyCurrencyRateController:updateExchangeRate
- Corresponding action types (e.g.
CurrencyRateControllerSetCurrentCurrencyAction) are available as well.
- The following actions are now available:
Changed
- BREAKING: Standardize names of
CurrencyRateControllermessenger action types (#8561)- The
GetCurrencyRateStatemessenger action has been renamed toCurrencyRateControllerGetStateActionto follow the convention. You will need to update imports appropriately. - These changes only affect the types. The action type strings themselves have not changed, so you do not need to update the list of actions you pass when initializing
CurrencyRateControllermessenger.
- The
MultichainAssetsController: Restore fail-open behavior for Blockaid spam token filter (#8580)- Uses blacklist approach: only rejects tokens explicitly marked as malicious by Blockaid
- When Blockaid bulk token scan API calls fail or return no results, tokens are allowed through
- This prevents legitimate tokens from being blocked due to API outages, network issues, or missing token data
- Malicious tokens that slip through are caught by the periodic rescan (runs daily by default)
- Bump
@metamask/transaction-controllerfrom^64.3.0to^65.0.0(#8585, #8613)
Fixed
- Fix
selectAssetsBySelectedAccountGroupcrashing when an account referenced in the account tree is missing from internal accounts (#8604)
@metamask/bridge-controller 71.0.0
Added
- BREAKING: Add
quickBuyanddappSwapFeatureIds for external swap quote consumers (#8598) - BREAKING: Add
market_closedandquote_expiredQuoteWarning (#8598) - Add
tokenSecurityTypeDestination: string | nulltoBridgeControllerState(defaultnull), set viaupdateBridgeQuoteRequestParamsand reset byresetState(#8595)
Changed
- BREAKING: Add required
token_security_type_destination: string \| nulltoRequestParams,RequiredEventContextFromClient[InputSourceDestinationSwitched], and thecontextarg ofupdateBridgeQuoteRequestParams; emitted on every analytics event that includestoken_address_destination(#8595) - BREAKING:
getRequestParamsnow takes a second positional argumenttokenSecurityTypeDestination: string \| null(#8595) - Bump
@metamask/transaction-controllerfrom^64.3.0to^65.0.0(#8585, #8613) - Bump
@metamask/assets-controllerfrom^6.1.0to^6.2.1(#8590, #8622) - Bump
@metamask/assets-controllersfrom^104.3.0to^105.0.0(#8622)
@metamask/bridge-status-controller 71.1.0
Added
- Add optional
tokenSecurityTypeDestination?: string \| nulltoBridgeHistoryItem,StartPollingForBridgeTxStatusArgs[Serialized], and thesubmitTx/submitIntentarguments; when provided, it's persisted on the history item and emitted astoken_security_type_destinationon post-submit analytics events (#8595)
Changed
- Bump
@metamask/transaction-controllerfrom^64.3.0to^65.0.0(#8585, #8613) - Bump
@metamask/bridge-controllerfrom^70.2.0to^71.0.0(#8622)
@metamask/transaction-pay-controller 20.0.1
Changed
943.0.0
@metamask/chomp-api-service 2.0.0
Changed
- BREAKING: Change
AssociateAddressParams.timestamptype fromstringtonumber. (#8610)
@metamask/money-account-upgrade-controller 1.2.0
Changed
- Bump
@metamask/chomp-api-servicefrom^1.0.0to^2.0.0(#8618)
Fixed
- Send the CHOMP authentication timestamp as a number instead of a string in the associate-address step. (#8610)
942.0.0
@metamask/transaction-controller 65.0.0
Added
- Expose
TransactionController:wipeTransactionsmethod throughTransactionControllermessenger (#8592)
Changed
estimateGasBatchnow skips the EIP-7702 path when the account's keyring does not support it, falling back to per-transaction gas estimation (#8388)doesAccountSupportEIP7702now returnsfalseinstead oftruewhen the account is not found in any keyring (#8388)- BREAKING: Add
KeyringControllerGetStateActiontoAllowedActionsto enable keyring-based EIP-7702 account compatibility checks inaddTransactionBatch(#8388)addTransactionBatchnow automatically checks whether the account's keyring supports EIP-7702 before attempting the 7702 batch path, falling back to STX/sequential when unsupported- Clients must add
KeyringController:getStateto the TransactionController messenger's allowed actions
Fixed
- Fix batch transaction signing so each transaction is signed sequentially, preventing remaining hardware wallet prompts from appearing after a rejection (#8388)
@metamask/transaction-pay-controller 20.0.0
Changed
- Rename
executeEnabledfeature flag togaslessEnabled(#8607) - Bump
@metamask/transaction-controllerfrom^64.3.0to^65.0.0(#8585, #8613) - Bump
@metamask/assets-controllerfrom^6.1.0to^6.2.0(#8590)
Fixed
- Fall back from Across to later pay strategies when Across quotes would require a first-time EIP-7702 authorization list (#8577)
- BREAKING: Fix mUSD conversion for hardware wallets on EIP-7702 chains by gating relay and Across 7702 paths on the account keyring type via
KeyringController:getState(#8388)- The
TransactionPayControllerMessengernow requiresKeyringController:getStatepermission.
- The