# What changed in @metamask/account-api

> 51 changes in @metamask/account-api 94 to 129 from its official release notes, upgrade guides and advisories: 17 breaking, 28 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/@metamask/account-api/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @metamask/account-api 129

### New APIs and options

- Adds the address:import create account option for importing watch-only accounts by address. (129.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v129.0.0)
- Adds an optional accountType field because the account type cannot always be detected from the address alone. (129.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v129.0.0)
- Adds an optional scopes field; when omitted, the keyring decides the scopes. (129.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v129.0.0)
- Adds the type related to the MPC entropy option for accounts derived from an MPC key share. (129.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v129.0.0)
- Adds the 'mpc' entropy option for accounts derived from an MPC key share. (129.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v129.0.0)
- Adds the address capability to declare whether a keyring supports importing watch-only accounts by address. (129.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v129.0.0)
- Adds the Mpc keyring type. (129.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v129.0.0)
- Adds the WatchOnly keyring type. (129.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v129.0.0)

## @metamask/account-api 123

### Breaking changes

- Node.js v18 and v20 are no longer supported; the minimum version is now v22. (123.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v123.0.0)

## @metamask/account-api 121

### Breaking changes

- Now composes BalanceStruct, changing the structure's composition. (121.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v121.0.0)

### New APIs and options

- Adds a metadata field to pass extra metadata alongside asset balances. (121.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v121.0.0)
- Adds a metadata field to pass extra metadata alongside asset balances. (121.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v121.0.0)
- Accepts metadata alongside account balance updates. (121.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v121.0.0)

## @metamask/account-api 120

### Breaking changes

- Removed `exactOptional` superstruct support; use `@metamask/superstruct` instead. (120.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v120.0.0)
- Removed `object` superstruct support; use `@metamask/superstruct` instead. (120.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v120.0.0)
- Removed `type` superstruct support; use `@metamask/superstruct` instead. (120.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v120.0.0)

## @metamask/account-api 115

### New APIs and options

- Adds EIP-7702 authorization signing support to the Ledger keyring. (115.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v115.0.0)
- Adds a custom command for retrieving Ethereum app configuration via DMK. (115.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v115.0.0)
- Both bridges throw until DMK support lands, so they are not yet functional. (115.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v115.0.0)
- Adds a getter for checking whether the device is connected. (115.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v115.0.0)
- Adds a utility for identifying device exchange errors. (115.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v115.0.0)
- Adds a LedgerBridge implementation using Ledger's Device Management Kit. (115.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v115.0.0)
- Adds middleware for managing DMK sessions, device discovery, and Ethereum signer lifecycle. (115.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v115.0.0)
- Adds an observable for monitoring session state. (115.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v115.0.0)
- Adds DMK error translation to TransportStatusError. (115.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v115.0.0)

### Fixes and other changes

- Fixes parsing of hex `v` value `'1b'` for personal_sign and typed data. (115.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v115.0.0)

## @metamask/account-api 114

### New APIs and options

- Adds a static type for v2 SnapKeyring, allowing developers to use its type in their code. (114.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v114.0.0)

## @metamask/account-api 113

### New APIs and options

- Adds optional typeLabel, which can display a custom label regarding the transaction type. (113.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v113.0.0)
- Adds TransactionType.TokenDisapprove for token disapproval transactions. (113.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v113.0.0)

## @metamask/account-api 108

### Fixes and other changes

- On mobile, falls back to blind signing when clearSignTransaction fails, except when the user rejects on the device. (108.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v108.0.0)

## @metamask/account-api 107

### Fixes and other changes

- Keyring is verified as compatible with BaseKeyring instead of being narrowed, preserving the proper getAccounts() signature. (107.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v107.0.0)

## @metamask/account-api 106

### New APIs and options

- Adds the minimum interface used by KeyringController to handle keyring lifecycles. (106.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v106.0.0)

## @metamask/account-api 100

### New APIs and options

- Adds selectors for the three EIP-20 write functions: transfer, transferFrom, and approve. (100.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v100.0.0)
- Adds a function to read the 4-byte calldata selector from serialized transaction hex for legacy and typed transactions. (100.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v100.0.0)

## @metamask/account-api 94

### Breaking changes

- Serialized state stores the derived account address instead of numberOfAccounts, and restores it directly without calling getMnemonic. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- decryptMessage is no longer exposed. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- Serialized state stores entropySource instead of mnemonic; deserialize() sets it, while the mnemonic is resolved through the callback. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- exportAccount is no longer exposed. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- getAppKeyAddress is no longer exposed. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- getEncryptionPublicKey is no longer exposed. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- hdPath is no longer serialized and is always MONEY_DERIVATION_PATH. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- mnemonic is no longer stored in serialized state; it is resolved at deserialization time through the callback. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- The constructor now requires a MoneyKeyringOptions object containing a getMnemonic callback. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- numberOfAccounts is replaced in serialized state by the derived account address. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- removeAccount() has been removed; accounts are permanent once added. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- signMessage is no longer exposed. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)

### New APIs and options

- Custom cryptographic functions are supported and forwarded to the inner HdKeyring. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- A GetMnemonicCallback type is newly exported. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)

### Behavior and default changes

- getAccounts() is now a cheap synchronous-like read that never triggers getMnemonic. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- The inner HdKeyring is initialized lazily on the first signing call and protected by a mutex for single initialization under concurrency. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
- MoneyKeyring now uses composition and wraps an inner HdKeyring instead of extending it. (94.0.0) — [release notes](https://github.com/MetaMask/accounts/releases/tag/v94.0.0)
