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.
- Simplify endowment handling (#4012)
- Export endowment factories via
@metamask/snaps-execution-environments/endowments(#3957)
- Bump
@metamask/utilsfrom11.10.0to11.11.0(#3935) - Bump
@metamask/json-rpc-enginefrom10.2.3to10.2.4(#3925) - Bump
@lavamoat/webpackfrom2.0.0to2.1.1(#3945)
- Bump
sesfrom1.14.0to1.15.0(#3880)
- BREAKING: Pass executor parameters by object (#3803)
- Inspect
wallet_invokeMethodrequests before sending (#3819) - Block
metamask_sendDomainMetadata(#3818)
- Add Multichain API support (#3759)
- Bump
@metamask/json-rpc-enginefrom10.2.0to10.2.1(#3804) - Bump
@metamask/utilsfrom11.8.1to11.9.0(#3783)
- Add support for
DateTimePickercomponent (#3698)
- Input change events in
onUserInputnow acceptsnullvalues (#3722)
- Move JSON-RPC request inspection outside of the executor (#3356)
- This reduces the amount of messages being passed around when using the
snap.requestfunction.
- This reduces the amount of messages being passed around when using the
- Bump MetaMask dependencies (#3651, #3638, #3648, #3630, #3628, #3629, #3607, #3623, #3612, #3659)
- Bump ses from
1.13.1to1.14.0(#3557)
- Ignore "Premature close" stream messages (#3074)
- Add support for
onActiveandonInactivelifecycle hooks (#3542)
- Add non-fungible assets support to
onAssetsLookupandonAssetsMarketData(#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.
- Previously,
- Add support for
AccountSelectorcomponent (#3088)
- Add support for
wallet_switchEthereumChain(#2634) - Add support for SIP-31
onClientRequesthandler (#3394)
- Fix deployment of execution environments (#3386)
- BREAKING: Build Snaps execution environments with Webpack (#3322)
- The execution environments are now in
dist/webpackinstead ofdist/browserify. - The
node-processandnode-threadenvironments can now be imported as@metamask/snaps-execution-environments/node-processand@metamask/snaps-execution-environments/node-threadrespectively.
- The execution environments are now in
- Change request notification order (#3381)
- Bump
@metamask/post-message-streamfrom9.0.0to10.0.0(#3322) - Bump
@metamask/providersfrom22.0.1to22.1.0(#3363)
- BREAKING: Remove web worker execution environment (#3371)
- Reduce unnecessary validation on responses (#3350)
- Return early from executor if possible to avoid unnecessary checks (#3349)
- Stop unnecessarily encoding messages in web view executor (#3347)
- Add missing
includeMarketDataparam toonAssetsConversionhandler (#3323)
- Add support for market data to
onAssetsConversionhandler (#3299) - Add support for
onAssetHistoricalPricehandler (#3282)
- Add support for the
AddressInputcomponent (#3129) - Add support for the
AssetSelectorcomponent (#3166)
- BREAKING: Use a WebView per Snap on mobile (#3085)
- The WebView bundle no longer supports proxy executor calls and functions as a single executor.
- BREAKING: Encode messages in
WebViewMessageStreamas byte arrays (#3077)- A version of
snaps-controllersthat supports this encoding is required.
- A version of
- Bump MetaMask dependencies (#3091, #3057, #3050)
- Add
Intlas a default global (#3035) - Add support for
onAssetsLookupandonAssetsConversionhandlers (#3028)
- Skip unnecesary provider initialization (#2967)
- Allow Snap exports to have async initialization logic (#2918)
- Add support for
onSettingsPageexport (#2911)
- Add
isSecureContextglobal (#2893)
- Remove unnecessary proxy for provider globals (#2850)
- Make fetch responses an instance of
Response(#2889)
- Bump MetaMask dependencies (#2853)
- Reduce unnecessary JSON validation (#2844)
- Remove
eth_sign(#2772)- This method was removed from the MetaMask extension, so any references to it in Snaps can be removed.
- Convert
createWindowparameters to options bag (#2765)
- Add support for
metamask:schemed URLs (#2719)
- Fix missing execution environment bundles (#2734)
- Fix invalid types in type declaration in some cases (#2714)
- Unblock
wallet_requestSnaps(#2661)
- 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/json-rpc-enginefrom^9.0.0to^9.0.2(#2593) - Bump
@metamask/snaps-utilsfrom^7.8.0to^7.8.1(#2595)
- Bump
@metamask/rpc-errorsfrom^6.2.1to^6.3.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
- Set
@metamask/providersfrom^17.0.0to17.0.0(#2445)17.1.0and17.1.1introduce regressions.
- Support parameters in
setTimeoutandsetInterval(#2513)
- Add origin to lifecycle hooks (#2441)
- Lifecycle hooks can now use the
originparameter to determine the origin of the installation or update.
- Lifecycle hooks can now use the
- Bump
@metamask/providersfrom16.1.0to17.0.0(#2442)
- Add
contextfield tosnap_createInterface(#2413)
- Make
onUserInputexport optional (#2373)- Snaps will no longer crash when interacting with a user interface when the
Snap does not export
onUserInput.
- Snaps will no longer crash when interacting with a user interface when the
Snap does not export
- Throw an error if starting Snap has no exports (#2357)
- Allow
nullinFormSubmitEventStructform state (#2333)
- BREAKING: Remove broken
ethereumproperties (#2296)- Snaps can no longer access
onandremoveListeneronethereum. - This feature was already non-functional.
- Snaps can no longer access
- Bump MetaMask dependencies (#2270)
- Bump LavaMoat packages (#2234)
- Fix minor build configuration problems (#2220)
- BREAKING: Update ESM build to be fully compliant with the ESM standard (#2210)
- Bump
@metamask/rpc-errorsto^6.2.1(#2209)
- Enforce JSON-RPC response size limits (#2201)
- Update several LavaMoat packages (#2173)
- BREAKING: Stop bundling offscreen execution environment (#2154)
- BREAKING: Deploy multiple bundles to AWS (#2150)
- From now on the bundles will be served at
https://execution.metamask.io/%BUILD_TYPE%/%VERSION%/index.html.
- From now on the bundles will be served at
- Export
ProxySnapExecutor(#2153) - Reduce executor bundle sizes (#2160)
- Bump MetaMask dependencies (#2129, #2132)
- Add support for signature insights (#2074)
- Bump
@metamask/providersfrom14.0.1to14.0.2(#1992)
- Fix a few issues with passing non-JSON-serializable values (#1974)
- Pause request timer when
fetchis called (#1756)
- Use
@metamask/snaps-sdkpackage (#1930, #1946, #1949, #1954)- This package replaces the
@metamask/snaps-typesand @metamask/snaps-uipackages.
- This package replaces the
- Add
OnHomePageexport (#1896)
- Await stream message delivery (#1928)
- Improve error handling (#1841)
- Snaps can now throw a
SnapError, without causing the Snap to crash.
- Snaps can now throw a
- Standardise all errors thrown in execution environments (#1830)
- Add keyring export and endowment (#1787)
- BREAKING: Bump minimum Node.js version to
^18.16.0(#1741)
- Allow passing
undefinedparameters torequest()(#1776) - Fix an issue where errors would not correctly be returned (#1772)
- Initial stable release from main branch (#1757)
- Add
onNameLookupexport (#1394)
- Sanitize JSON before checking for blocked methods (#1762)
- Bump
@metamask/post-message-streamfrom 6.1.2 to 7.0.0 (#1707, #1724) - Bump
@metamask/utilsand@metamask/snaps-registry(#1694)
- Add hardening for
Request,Headers, andResponseendowments (#1695)
- Bump
sesto0.18.7(#1666)
- Remove unused dependencies (#1680)
- Update LavaMoat packages to latest versions (#1657)
- Remove direct dependency on SES (#1660)
- It's now a dev dependency, as it's only used in development.
- Pass correct scuttle args (#1654)
- Fix deployment of the iframe execution environment (#1627)
- Release package independently (#1600)
- The version of the package no longer needs to match the version of all other MetaMask Snaps packages.