NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4782 most downloaded on npm
Various JavaScript/TypeScript utilities of wide relevance to the MetaMask codebase
Last release 24 days ago
10 Sep 2026
Release timing varies
gaps range from 9 days to 5 months
Nearly every release is documented
notes for 58 of 58 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
58 releases · first in 2022
One column per quarter.
The deprecated Keyring.signTransaction now returns LegacyTxData rather than TxData . These describe the same shape: @ethereumjs/tx@5 repurposed the na…
require(esm) in modern Node.js versions (22+), or dynamic imports in older Node.js versions.@ethereumjs/tx from ^4.2.0 to ^5.4.0 (#321)
Keyring.signTransaction now returns LegacyTxData rather than TxData. These describe the same shape: @ethereumjs/tx@5 repurposed the name TxData for a map keyed by transaction type and renamed the old meaning to LegacyTxData. Implementations do not need changing.@metamask/scure-bip39 from ^2.0.3 to ^2.1.1 (#311)@metamask/superstruct from ^3.1.0 to ^3.4.1 (#311)@noble/hashes from ^1.3.1 to ^1.8.0 (#311)@scure/base from ^1.1.3 to ^1.2.6 (#311)semver from ^7.5.4 to ^7.6.3 (#311)Fix ESM compatibility for the BIP-39 mnemonic utilities
Add uint8ArrayToMnemonic and convertMnemonicToWordlistIndices utilities
uint8ArrayToMnemonic and convertMnemonicToWordlistIndices utilities (#300)
uint8ArrayToMnemonic converts little-endian Uint16 English BIP-39 wordlist indices into a mnemonic string.convertMnemonicToWordlistIndices converts a mnemonic string into little-endian Uint16 wordlist indices encoded as a Uint8Array.@metamask/scure-bip39 as a dependency (#300)sha512 and sha384 utility functions (#305)### Added - Add Stellar CAIP namespace
Add ensureError utility for converting unknown values to error
### Added - Add sha256 utility function
sha256 utility function (#273)Replace superstruct.is with faster regex checks for isCaip* functions
superstruct.is with faster regex checks for isCaip* functions (#270)
Add areUint8ArraysEqual function to compare two Uint8Array types
areUint8ArraysEqual function to compare two Uint8Array types (#268)Added Add Tron CAIP namespace ( #266 ) Fixed Fix API docs generation
Migrate units conversion utils from @metamask/ethjs-unit
Add KnownCaipNamespacedChainId type as narrower subtype of CaipChainId
Improve performance of isValidChecksumAddress and isValidHexAddress functions
isValidChecksumAddress and isValidHexAddress functions (#248)Improve performance of getChecksumAddress function
getChecksumAddress function (#246)Deprecate local exactOptional implementation
exactOptional implementation (#244)
@metamask/superstruct@>=3.2.0 instead.Add default JSON-RPC generics that extend Json to Json
Add optional signEip7702Authorization method to Keyring type
signEip7702Authorization method to Keyring type (#231)Add additional CAIP-19 types (CaipAsset{Namespace,Reference,TokenId} support
CaipAsset{Namespace,Reference,TokenId} support (#227)CaipAssetTypeOrId (#229)
CaipAssetType and CaipAssetId to avoid relying on superstruct.union, resulting in better error messages.definePattern superstruct helper (#228)
superstruct.pattern while naming the struct and enforcing its type.Improve error message for invalid JSON values
BREAKING: generateRandomMnemonic now returns Promise instead of void
generateRandomMnemonic now returns Promise<void> instead of void (#222)### Added - Add Solana CAIP namespace
BREAKING: Drop support for Node.js versions 16, 21
Add Bip122 member to KnownCaipNamespace
Fix wrong types for CAIP-2 and CAIP-10 structs
Add Wallet member to KnownCaipNamespace enum
Wallet member to KnownCaipNamespace enum (#207)### Added - Add PublicInterface type
PublicInterface type (#197)BREAKING: The return types of functions getChecksumAddress, numberToHex, bigIntToHex are narrowed from string to Hex
getChecksumAddress, numberToHex, bigIntToHex are narrowed from string to Hex (#193)@metamask/superstruct from ^3.0.0 to ^3.1.0 (#194)
@metamask/utils <=8.5.0 is used with @metamask/superstruct >=3.1.0 the following error may be encountered:error TS2742: The inferred type of 'ExampleType' cannot be named without a reference to '@metamask/utils/node_modules/@metamask/superstruct'. This is likely not portable. A type annotation is necessary.
This can be resolved by updating @metamask/utils to >=9.0.0.Bump dependency semver from ^5.7.1 to ^7.6.0 (#181).
semver from ^5.7.1 to ^7.6.0 (#181).superstruct ^1.0.3 with ESM-compatible @metamask/superstruct ^3.0.0 (#185).
Node16 or NodeNext as its moduleResolution option.exports field in package.json linked to these files. This is an anti-pattern and was rightfully flagged by the "Are the Types Wrong?" tool as "masquerading as CJS". All of the ATTW checks now pass.Add toCaipChainId utility function
### Added - Add createDeferredPromise
createDeferredPromise (#164)Fix issue with source maps where line numbers were incorrect for src/error.ts
Make types for JSON-RPC-related structs more accurate
JsonRpcParams to be optional, yet not undefined.InferWithParamsJsonRpcNotificationStructJsonRpcParamsStructJsonRpcRequestStructBREAKING: JsonRpcParams type no longer accepts undefined as value, as undefined is not a valid JSON type
JsonRpcParams type no longer accepts undefined as value, as undefined is not a valid JSON type (#130)### Added - CAIP-2 and CAIP-10 Types
Add getKnownPropertyNames function
isValidHexAddress has been added to check the validity of an hex address
isValidHexAddress has been added to check the validity of an hex addressgetChecksumAddress has been added to calculate the ERC-55 mixed-case checksum of an hex addressisValidChecksumAddress has been added to check the validity of an ERC-55 mixed-case checksum addressAdd optional destroy method to Keyring type
destroy method to Keyring type (#108)Strip __proto__ and constructor JSON properties in getSafeJson
__proto__ and constructor JSON properties in getSafeJson (#105)BREAKING: Bump minimum Node version to 16
The Keyring exposes a new optional method init
Keep original type when using hasProperty if defined
hasProperty if defined (#94)The Keyring class now uses the data types TypedTransaction and TxData from @ethereumjs/tx (v4.1.1).
Keyring type (#89)
Keyring class now uses the data types TypedTransaction and TxData from @ethereumjs/tx (v4.1.1).Keyring now exposes a new optional method called generateRandomMnemonic.Export new modules (keyring, transaction-types, and encryption-types)
keyring, transaction-types, and encryption-types) (#86)validateJsonAndGetSize) was removed.
isValidJson function now uses the new JSON validation logic.getJsonSize function.New data types added. These are Keyring, Transaction (LegacyTransaction, EIP2930Transaction, EIP1559Transaction), SignedTransaction, Signature, and Ei
Keyring types (#74)
Keyring, Transaction (LegacyTransaction, EIP2930Transaction, EIP1559Transaction), SignedTransaction, Signature, and Eip1024EncryptedData.Improve the hasProperty function (#79, #80)
### Fixed - Bump superstruct to ^1.0.3
superstruct to ^1.0.3 (#71)Add types and utility functions for validating versions and checksums (#67, #69)
JSON-RPC parameters are now properly cast to Json upon validation
Add JSON-RPC error validation functions
Add PendingJsonRpcResponse type
Allow omitting JSON-RPC params when params can be undefined
superstructs 0.16.1 through 0.16.4 were not compatible with Node 14; this restores that compatibility.
superstruct to ^0.16.5 (#26)
superstructs 0.16.1 through 0.16.4 were not compatible with Node 14; this restores that compatibility.Promote @types/debug from development dependencies to production dependencies
@types/debug from development dependencies to production dependencies (#23)Add frozen collections (implemented in #5 but exported in #19)
JsonRpcRequest and JsonRpcNotification types now include a generic constraint requiring that the Params type extends the JsonRpcParams type.JsonRpcSuccess and JsonRpcResponse types now include a generic contraint for the Result type, requiring that it extends the Json type.unknown parameters rather than specific types. This should not be breaking except that it may affect type inference for the parameters passed in.assertIsJsonRpcResponseisJsonRpcResponseInferWithParamsJsonRpcParamsJsonRpcErrorStructJsonRpcFailureStructJsonRpcIdStructJsonRpcParamsStructJsonRpcRequestStructJsonRpcResponseStructJsonRpcSuccessStructJsonRpcVersionStructJsonStructAdd JSON storage validation and limit utilities
validateJsonAndGetSize.BREAKING: Refactor and expand time utils
Rewrite "Ignoring Deprecations" sub-section to clarify the ideal scenario.
Your coding agent can read these notes before it upgrades. Set up the MCP server →