Vigia

Upgrading @metamask/eth-sig-util from 9.x to 10.x

Comparison of the public API of @metamask/eth-sig-util 9.0.0 and 10.0.0, computed automatically from their TypeScript types. A changed signature is a candidate for a breaking change, not a certainty.

Summary

Removed import paths0
Removed exports0
Changed signatures14
Removed class or interface members0
Changed class or interface members0
Newly deprecated0
Requirement changes (engines, peer dependencies)1
New exports0

Removed exports

None detected.

Changed signatures

exportBeforeAfter
@metamask/eth-sig-util · decrypt({ encryptedData, privateKey, }: { encryptedData: EthEncryptedData; privateKey: string; }): string({ encryptedData, privateKey, }: { encryptedData: EthEncryptedData; privateKey: string; }): Promise<string>
@metamask/eth-sig-util · encrypt({ publicKey, data, version, }: { publicKey: string; data: unknown; version: string; }): EthEncryptedData({ publicKey, data, version, }: { publicKey: string; data: unknown; version: string; }): Promise<EthEncryptedData>
@metamask/eth-sig-util · concatSig(v: Buffer, r: Buffer, s: Buffer): string(v: Uint8Array<ArrayBufferLike>, r: Uint8Array<ArrayBufferLike>, s: Uint8Array<ArrayBufferLike>): string
@metamask/eth-sig-util · TypedMessage{ types: T; primaryType: keyof T; domain: { name?: string | undefined; version?: string | undefined; chainId?: number | undefined; verifyingContract?: string | undefined; salt?: ArrayBuffer | undefined; }; message: Record<string, unknown>; }{ types: T; primaryType: keyof T; domain: { name?: string | undefined; version?: string | undefined; chainId?: number | undefined; verifyingContract?: string | undefined; salt?: string | Uint8Array<ArrayBufferLike> | undefined; }; message: Record<string, unknown>; }
@metamask/eth-sig-util · personalSign({ privateKey, data, }: { privateKey: Buffer; data: ToBufferInputTypes; }): string({ privateKey, data, }: { privateKey: Uint8Array<ArrayBufferLike>; data: ToBytesInputTypes; }): string
@metamask/eth-sig-util · decryptSafely({ encryptedData, privateKey, }: { encryptedData: EthEncryptedData; privateKey: string; }): string({ encryptedData, privateKey, }: { encryptedData: EthEncryptedData; privateKey: string; }): Promise<string>
@metamask/eth-sig-util · encryptSafely({ publicKey, data, version, }: { publicKey: string; data: unknown; version: string; }): EthEncryptedData({ publicKey, data, version, }: { publicKey: string; data: unknown; version: string; }): Promise<EthEncryptedData>
@metamask/eth-sig-util · signTypedData<V extends SignTypedDataVersion, T extends MessageTypes>({ privateKey, data, version, }: { privateKey: Buffer; data: V extends "V1" ? TypedDataV1 : TypedMessage<T>; version: V; }): string<V extends SignTypedDataVersion, T extends MessageTypes>({ privateKey, data, version, }: { privateKey: Uint8Array<ArrayBufferLike>; data: V extends "V1" ? TypedDataV1 : TypedMessage<T>; version: V; }): string
@metamask/eth-sig-util · TypedDataUtils{ encodeData: (primaryType: string, data: Record<string, unknown>, types: Record<string, MessageTypeProperty[]>, version: SignTypedDataVersion.V3 | SignTypedDataVersion.V4) => Buffer; encodeType: (primaryType: string, types: Record<string, MessageTypeProperty[]>) => string; findTypeDependencies: (primaryType: string, types: Record<string, MessageTypeProperty[]>, results?: Set<string> | undefined) => Set<string>; hashStruct: (primaryType: string, data: Record<string, unknown>, types: Record<string, MessageTypeProperty[]>, version: SignTypedDataVersion.V3 | SignTypedDataVersion.V4) => Buffer; ha…{ encodeData: (primaryType: string, data: Record<string, unknown>, types: Record<string, MessageTypeProperty[]>, version: SignTypedDataVersion.V3 | SignTypedDataVersion.V4) => Uint8Array<ArrayBufferLike>; encodeType: (primaryType: string, types: Record<string, MessageTypeProperty[]>) => string; findTypeDependencies: (primaryType: string, types: Record<string, MessageTypeProperty[]>, results?: Set<string> | undefined) => Set<string>; hashStruct: (primaryType: string, data: Record<string, unknown>, types: Record<string, MessageTypeProperty[]>, version: SignTypedDataVersion.V3 | SignTypedDataVers…
@metamask/eth-sig-util · extractPublicKey({ data, signature, }: { data: ToBufferInputTypes; signature: string; }): string({ data, signature, }: { data: ToBytesInputTypes; signature: string; }): string
@metamask/eth-sig-util · getEncryptionPublicKey(privateKey: string): string(privateKey: string): Promise<string>
@metamask/eth-sig-util · hashEIP7702Authorization(authorization: EIP7702Authorization): Buffer(authorization: EIP7702Authorization): Uint8Array<ArrayBufferLike>
@metamask/eth-sig-util · recoverPersonalSignature({ data, signature, }: { data: ToBufferInputTypes; signature: string; }): string({ data, signature, }: { data: ToBytesInputTypes; signature: string; }): string
@metamask/eth-sig-util · signEIP7702Authorization({ privateKey, authorization, }: { privateKey: Buffer; authorization: EIP7702Authorization; }): string({ privateKey, authorization, }: { privateKey: Uint8Array<ArrayBufferLike>; authorization: EIP7702Authorization; }): string

Removed class or interface members

None detected.

Changed class or interface members

None detected.

Newly deprecated

None detected.

Requirement changes (engines, peer dependencies)

BeforeAfter
engines.node^22 || ^24 || >=26^22.14.0 || ^24 || ^26

Changelog between these versions

Text published by the package authors, shown as-is.

10.0.0
### Changed

- **BREAKING:** Drop CommonJS support ([#11349](https://github.com/MetaMask/core/pull/11349), [#11362](https://github.com/MetaMask/core/pull/11362))
  - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions.
- **BREAKING:** Make `encrypt`, `encryptSafely`, `decrypt`, `decryptSafely`, and `getEncryptionPublicKey` asynchronous ([#11388](https://github.com/MetaMask/core/pull/11388))
  - These functions now return a `Promise`. Callers must `await` the result.
  - The encrypted data format is unchanged, so data encrypted by previous versions can still be decrypted.
  - Decrypting with an invalid nonce length now throws an error from `@noble/ciphers` instead of `bad nonce size`.
- **BREAKING:** Bump TypeScript target to ES2022 ([#11348](https://github.com/MetaMask/core/pull/11348))
- **BREAKING:** `TypedDataUtils.encodeData`, `TypedDataUtils.hashStruct`, `TypedDataUtils.hashType`, `TypedDataUtils.eip712Hash`, `TypedDataUtils.eip712DomainHash`, and `hashEIP7702Authorization` now return a `Uint8Array` instead of a `Buffer` ([#11394](https://github.com/MetaMask/core/pull/11394))
- **BREAKING:** Objects with a `toArray` or `toBuffer` method are no longer accepted as the `data` of `personalSign`, `recoverPersonalSignature`, and `extractPublicKey`, or as `bytes` values in `V1` typed data ([#11394](https://github.com/MetaMask/core/pull/11394))
- `Uint8Array` is now accepted as part of the arguments of `personalSign`, `signTypedData`, `signEIP7702Authorization`, and `concatSig`, instead of `Buffer` ([#11394](https://github.com/MetaMask/core/pull/11394))
- Bump `@metamask/utils` from `^11.0.1` to `^12.0.2` ([#11349](https://github.com/MetaMask/core/pull/11349), [#11474](https://github.com/MetaMask/core/pull/11474))
- Bump `ethereum-cryptography` from `^2.1.2` to `^3.2.0` ([#11349](https://github.com/MetaMask/core/pull/11349))
- Bump `@ethereumjs/util` from `^8.1.0` to `^9.1.0` ([#11394](https://github.com/MetaMask/core/pull/11394))
- Bump `@ethereumjs/rlp` from `^4.0.1` to `^5.0.2` ([#11394](https://github.com/MetaMask/core/pull/11394))
- This package was migrated from `MetaMask/eth-sig-util` to the
  `MetaMask/core` monorepo ([#11327](https://github.com/MetaMask/core/pull/11327))
  - See [`MetaMask/eth-sig-util`](https://github.com/MetaMask/eth-sig-util/blob/73725fc31a51e4d5f6b72d8e5f470c0b10c9d57f/CHANGELOG.md)
    for the original changelog.

### Fixed

- Correct padding calculation so that every ciphertext is a multiple of 2048 bytes ([#11386](https://github.com/MetaMask/core/pull/11386))
- Reject non-integer and unsafe-integer `chainId` and `nonce` values in `signEIP7702Authorization`, `recoverEIP7702Authorization`, and `hashEIP7702Authorization` ([#11392](https://github.com/MetaMask/core/pull/11392))

[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/eth-sig-util@10.0.0...HEAD
[10.0.0]: https://github.com/MetaMas

Give your AI agent these facts

Vigia is a free MCP server: your coding agent checks versions, breaking changes and vulnerabilities before it writes code. No signup, no API key.

claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp

Add to CursorAdd to VS Code★ Star on GitHub

Any other MCP client
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Agent skill (SKILL.md): tells the agent when to use Vigia · GitHub Action for pull requests

Frequently asked questions

What are the breaking changes when upgrading @metamask/eth-sig-util from 9 to 10?

Between @metamask/eth-sig-util 9.0.0 and 10.0.0, Vigia found 0 removed exports, 14 changed signatures and 0 removed or changed class or interface members.

What became deprecated in @metamask/eth-sig-util 10?

0 exports or members are newly marked as deprecated in @metamask/eth-sig-util 10.0.0.

For agents

GET https://vigia.coredls.cloud/v1/packages/npm/@metamask/eth-sig-util/upgrade?from=9.0.0&to=10.0.0