All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Merge manifest validation reports to include latest validation errors and warnings (#3567)
- Disable base64 optimization in React Native (#3564)
- Add support for eval in watch mode for Snaps CLI (#3553)
- Bump ses from
1.13.1to1.14.0(#3557)
- Fix typos in
SnapAuxiliaryFilesStructvariable andSnapAuxiliaryFiletype (#3545)SnapAuxilaryFilesStructandSnapAuxilaryFileare still exported for backwards compatibility, but will be removed in a future release.
- Move
TrackableErrorStructfrom@metamask/snaps-rpc-methodsfor reusability (#3546)
- Add support for
onActiveandonInactivelifecycle hooks (#3542)
- Add support for non-fungible assets to
endowment:assets(#3527)
- BREAKING: Market data is now fetched through
onAssetsMarketDatainstead ofonAssetConversion(#3496)- Previously,
onAssetConversioncould return amarketDataproperty, which contained market data for the asset being converted. This property has been removed, andonAssetsMarketDatashould be used instead. - The
MarketDataStructis now replaced by theFungibleAssetMarketDataStructstruct.
- Previously,
- Add
snap_trackErrormethod for error tracking through Sentry (#3498)
- Add support for the
onWebSocketEventhandler (#3450, #3459) - Add support for the
onStarthandler (#3455)
- Fix unused permission detection for endowments with multiple handlers (#3452)
- Support scheduling cronjobs with an ISO 8601 duration (#3421)
- BREAKING: Drop support for Node.js 18 and 21 (#3447)
- Unwrap double-wrapped JSON-RPC errors (#3432)
- Validate platform version against production (#3417)
- Detect unused permissions in Snaps CLI (#3335)
- Add support for
AccountSelectorcomponent (#3088) - Add
toCensoredISO8601Stringutil function (#3414)
- Bump
@metamask/slip44from4.1.0to4.2.0(#3419)
- Add support for SIP-31
onClientRequesthandler (#3394)
- Bump
@metamask/post-message-streamfrom9.0.0to10.0.0(#3322) - Bump
@metamask/base-controllerfrom8.0.0to8.0.1(#3365)
- Add ISO 8601 time structs (#3287)
- Add support for market data to
onAssetsConversionhandler (#3299) - Add support for
onAssetHistoricalPricehandler (#3282)
- Add utilities for validating
AssetSelectorcomponent (#3166)
- Improve error messaging (#3142)
- BREAKING: Remove duplicate CAIP types (#3071)
- The following functions, values, types, and structs were removed from
@metamask/snaps-utils:CHAIN_ID_REGEXACCOUNT_ID_REGEXACCOUNT_ADDRESS_REGEXparseChainIdparseAccountIdLimitedStringChainIdStringStructChainIdStructAccountIdStructAccountIdArrayStructAccountAddressStructAccountAddressChainStructChainNamespaceStructNamespaceNamespaceIdStructNamespaceIdisNamespaceIdisChainIdisAccountIdisAccountIdArrayisNamespace
- The following functions, values, types, and structs were removed from
- Bump MetaMask dependencies (#3091, #3082, #3050)
- Correct validation for scopes on
endowment:assetspermission (#3039)
- Add support for
onAssetsLookupandonAssetsConversionhandlers (#3028) - Add
Intlas a default global (#3035)
- Add Massa derivation path (#2979)
- Bump MetaMask dependencies (#2946, #2999, #3003, #2996, #2989)
- Make
jobsproperty fully optional in the cronjob endowment (#3005)
- Bump
@metamask/key-treefrom^9.1.2to^10.0.1(#2909)
- Add
isSecureContextglobal (#2893)
- Add line beginning to origin regex (#2876)
- Use regular import to reference package.json (#2871)
- Bump MetaMask dependencies (#2853)
- Add
isSnapIdutility function (#2808)
- Add
currencystruct (#2763)
- Convert
createWindowparameters to options bag (#2765)
- Update
package.jsonstruct to allowrepository.directory(#2754)
- Add support for
metamask:schemed URLs (#2719) - Add support for JSX in
snap_notifynotifications (#2706)
- Validate list of emails in
validateLinkfunction (#2750)
- Fix invalid types in type declaration in some cases (#2714)
- Add Bitcoin Taproot derivation paths (#2695)
- Improve
validateLinkerror handling (#2702)
- Fix ESM version of the package (#2682)
- This fixes the ESM version of the package to be fully compliant with the ESM standard.
- Bump
@metamask/utilsfrom^9.1.0to^9.2.1(#2680) - Bump other MetaMask dependencies (#2703)
- Bump
@metamask/slip44to 4.0.0 (#2624)
- BREAKING: Improve manifest validation output (#2605, #2572)
- This is breaking as it removes exports such as
validateNpmSnap.
- This is breaking as it removes exports such as
- Bump
fast-xml-parser(#2610)
- Bump
@metamask/base-controllerfrom^6.0.1to^6.0.2(#2593) - Bump
@metamask/permission-controllerfrom^10.0.1to^11.0.0(#2593)
- Move
serialiseJsxfunction fromsnaps-jesttosnaps-utils(#2409)
- Bump
@metamask/base-controllerfrom^6.0.0to^6.0.1(#2445) - Bump
@metamask/key-treefrom^9.1.1to^9.1.2(#2445) - Bump
@metamask/permission-controllerfrom^10.0.0to^10.0.1(#2445) - Bump
@metamask/rpc-errorsfrom^6.2.1to^6.3.1(#2445) - Bump
@metamask/snaps-registryfrom^3.1.0to^3.2.1(#2445) - Bump
@metamask/utilsfrom^8.3.0to^9.1.0(#2445)
- Replace
superstructwith ESM-compatible@metamask/superstruct^3.1.0(#2445)- This fixes the issue of this package being unusable by any TypeScript project that uses
Node16orNodeNextas itsmoduleResolutionoption.
- This fixes the issue of this package being unusable by any TypeScript project that uses
- Fix
allowedOriginsbypass caused by unterminated regex (#2576)
- Support conditional children in most JSX components (#2506)
- Support additional components inside forms (#2497)
- Improve validation of
endowment:rpc(#2512)
- Support nested children in JSX (#2482)
- Fix a problem with converting legacy UIs that used
row()(#2486) - Revert requiring at least one child in JSX components (#2470)
- Require at least 1 child in JSX components (#2466)
- Fix invalid
@metamask/snaps-sdkimports (#2452)
- Add support for BIP-32-Ed25519 / CIP-3 key derivation (#2408)
- Fix build producing invalid JSX types (#2410)
- Add JSX support for custom UI (#2258, #2383)
- This adds utility functions for working with JSX in Snaps.
- Bump
@metamask/base-controllerfrom5.0.1to5.0.2(#2375)
- Add
getJsonSizeUnsafe(#2342)
- Add derivation path for Nimiq (#2309)
- Disable GitHub flavored Markdown when lexing (#2317)
- Bump MetaMask dependencies (#2270)
- Allow
maxRequestTimeonendowment:rpc(#2291)
- Update markdown parsing for better link validation (#2261)
- Bump
@metamask/snaps-registryto^3.0.1(#2255)
- Remove usage of
Bufferfrom browser entrypoint (#2238)
- BREAKING: Update ESM build to be fully compliant with the ESM standard (#2210)
- BREAKING: Move Node.js exports to separate export (#2210)
- The default export is now browser-compatible.
- Node.js APIs can be imported from
<package>/node.
- Bump
@metamask/rpc-errorsto^6.2.1(#2209)
- BREAKING: Move
filestruct to CLI (#2207)- The previously exported
filestruct can now be found in@metamask/snaps-cli.
- The previously exported
- Add a manifest warning when no icon is found and when icon is not square (#2185)
- Add support for dynamic user interfaces (#1465, #2126)
- Add support for snap defined execution timeouts (#2098)
- BREAKING: Update name lookup type validation (#2113)
- The return value and the permission format has changed, see SIP-12 for more details.
- Speed up eval-worker for improved CLI performance (#2147)
- Update MetaMask dependencies (#2132, #2142)
- Fix initial permissions types (#2111)
- Add support for initial connections (#2048)
- Add support for preinstalled snaps (#2008)
- Add support for signature insights (#2074)
- Fix missing
globalduring snap evaluation (#2072)
- Remove support for object-like syntax for cronjobs (#2057)
- Since this never worked in the first place we aren't marking it as breaking.
- Add
getSnapDerivationPathNameandgetSlip44ProtocolNameto be shared across clients (#2033)
- Bump
snaps-registry(#2020)
- Bump several MetaMask dependencies (#1964)
- BREAKING: Move
enumValue,literalanduniontosnaps-sdk(#1968)
- Fix issues generating checksum with binary auxiliary files (#1975)
- Change
validateTextLinksto only get URL in markdown links (#1914)
- Use
SubtleCryptofor checksum calculation if available (#1953)- This reduces the time of the checksum calculation by up to 95% in some environments.
- Use
@metamask/snaps-sdkpackage (#1930, #1946, #1950, #1949, #1954)- This package replaces the
@metamask/snaps-typesand @metamask/snaps-uipackages, and is much more lightweight.
- This package replaces the
- BREAKING: Remove
ValidatedSnapIdandSnapIdtypes (#1930)ValidatedSnapIdwas moved to the@metamask/snaps-sdkpackage asSnapId.SnapIdwas an alias ofstring, and is no longer needed.
- BREAKING: Remove
SnapError(#1949)- This class was moved to the
@metamask/snaps-sdkpackage.
- This class was moved to the
- BREAKING: Remove
EnumToUniontype (#1930)- This type was moved to the
@metamask/snaps-sdkpackage.
- This type was moved to the
- BREAKING: Remove
RequestedSnapPermissionstype (#1930)- This type was deprecated, and is now replaced by the
InitialPermissionstype from the@metamask/snaps-sdkpackage.
- This type was deprecated, and is now replaced by the
- Include localization files in checksum calculations (#1956)
- Add support for links in custom UI and notifications (#1814)
- Add keyring export and endowment (#1787)
- Add optional
allowedOriginsfield toendowment:rpc(#1822)- This can be used to only accept certain origins in your Snap.
- BREAKING: Bump minimum Node.js version to
^18.16.0(#1741)
- Remove deprecated
endowment:long-running(#1751)
- Initial stable release from main branch (#1757)
- Bump
metamask/utilsandmetamask/snaps-registry(#1738)
- Bump
@metamask/post-message-streamfrom 6.1.2 to 7.0.0 (#1707, #1724) - Bump
@metamask/utilsand@metamask/snaps-registry(#1694)
- Remove unused dependencies (#1680)
- Update transaction insights response and add severity level enum (#1653)
- Snaps are now able to specify a
severityfor alongside their insights. - See SIP-11 for more information.
- Snaps are now able to specify a
- Add
onInstallandonUpdatelifecycle hooks (#1643)
- Release package independently (#1600)
- The version of the package no longer needs to match the version of all other MetaMask Snaps packages.