Releases: MetaMask/connect-monorepo
Releases · MetaMask/connect-monorepo
Release list
39.0.0
@metamask/connect-evm 2.1.1
Added
- Resolve
wallet_getCapabilitieslocally from the cached session when possible, avoiding a deeplink round-trip (#339)
Fixed
- Recognize MetaMask Flask (
io.metamask.flask) as a native MetaMask EIP-6963 provider. The MMConnect-managed provider announcement is now suppressed when Flask has announced, avoiding a duplicate MetaMask entry in wallet pickers. (#336)
@metamask/connect-multichain 1.2.0
Added
- Resolve
wallet_getCapabilitieslocally from the cached session on the MWP (mobile deeplink) transport, avoiding a deeplink round-trip. When the wallet publishes EIP-5792 capabilities insessionProperties.eip155Capabilities,RequestRouteranswerswallet_getCapabilitiesfrom the transport's cached session (read cache-only via the newgetCachedSessionaccessor, so a cache miss falls back to the deeplink immediately; case-insensitive address/chain lookup) and falls back to the wallet on any miss, partial chain coverage, malformed params, or an older wallet that doesn't publish capabilities. (#339) - Add optional
getCachedSessionto the exportedExtendedTransporttype: a cache-only read of the storedwallet_getSessionresult that resolvesundefinedon a miss instead of issuing a live request (and never replays transport notifications). Implemented by the MWP transport; transports without a session cache simply omit it. (#339)
Fixed
- Recognize MetaMask Flask (
io.metamask.flask) as a native MetaMask extension in EIP-6963 detection.hasExtension()now returnstruewhen only Flask is installed, soconnect()uses the browser extension transport instead of falling back to the MWP/QR flow. (#336) - Closing the QR code / install modal mid-connection now emits
mmconnect_connection_rejectedinstead ofmmconnect_connection_failed. Modal close is a user-driven cancellation; it previously rejected with a plainError('User closed modal')thatisRejectionErrordid not recognise, so user cancellations polluted the_failedbucket. The close handler now rejects with the canonical EIP-11934001error (providerErrors.userRejectedRequest()). Genuine errors (transport timeouts/disconnects, wallet RPC errors) still emitmmconnect_connection_failed. (#333)
@metamask/connect-solana 2.1.1
Changed
- Bump
@metamask/connect-multichainto^1.2.0(#340)
@metamask/browser-playground 0.8.2
Added
- Add a
wallet_getCapabilitiesbutton to the Legacy EVM card's read-only RPC calls, requesting EIP-5792 capabilities for the active account (scoped to the connected chain when available). (#339)
Changed
- Bump workspace dependencies:
- @metamask/connect-evm@2.1.1
- @metamask/connect-multichain@1.2.0
- @metamask/connect-solana@2.1.1
@metamask/react-native-playground@0.5.2
Android playground APK for @metamask/react-native-playground@0.5.2
38.0.0
@metamask/connect-evm 2.1.0
Changed
@metamask/connect-multichainis no longer a peer dependency and will be installed transitively as a regular dependency (#323)
Fixed
EIP1193Provider.request()now preserves JSON-RPC errordataon provider-facing errors whenconnect-multichainsurfaces a wallet error throughRPCInvokeMethodErr. Dapps can read revert reasons, custom-error bytes, and other wallet-provided error metadata fromerror.dataalongside the original walleterror.codeanderror.message. (#312)
@metamask/connect-multichain 1.1.0
Fixed
- Normalize
invokeMethod()wallet errors across transports. Wallet-side JSON-RPC / EIP-1193code,message, anddatafields are now preserved inRPCInvokeMethodErrasrpcCode,rpcMessage, andrpcDatawhether the wallet error arrives as a resolved JSON-RPC error response or as a rejected transport error. Wrapped transport errors now walk a cappedcausechain so wallet error details are not hidden by transport/API wrapper errors. (#312) DefaultTransportandMWPTransportnow preserve the wallet's JSON-RPC errordatawhen parsing a failed wallet response. Previously both transports droppeddatawhile constructing the rejected error, so revert reasons / custom-error bytes never reachedRequestRouter(leavingRPCInvokeMethodErr.rpcDataunset). (#312)
@metamask/connect-solana 2.1.0
Changed
@metamask/connect-multichainis no longer a peer dependency and will be installed transitively as a regular dependency (#323)
@metamask/browser-playground 0.8.1
Changed
- Bump workspace dependencies:
- @metamask/connect-evm@2.1.0
- @metamask/connect-multichain@1.1.0
@metamask/react-native-playground@0.5.1
Android playground APK for @metamask/react-native-playground@0.5.1
37.0.0
@metamask/connect-evm 2.0.0
Added
- Validate
@metamask/connect-multichainpeer version at runtime and warn on mismatch (#253) - Announce the MMConnect-managed EIP-1193 provider through EIP-6963 by default when native MetaMask has not already announced, with
skipAutoAnnounceandannounceProvider()for manual control. (#304)
Changed
- BREAKING:
@metamask/connect-multichainis now a peer dependency.
Add it to your owndependencies(e.g.npm install @metamask/connect-multichain)
— it is no longer installed transitively. - Adopts breaking removal of the public
transportaccessor in@metamask/connect-multichain. (#318)
Removed
- BREAKING Remove the
transport.onNotificationoption fromcreateEVMClient(). The option was a fan-out of typed events already exposed via the EIP-1193 provider (accountsChanged,chainChanged,connect,disconnect,display_uri) and viaeventHandlers. Migrate to those listeners instead (#318)
Fixed
- MWP-backed EIP-1193 requests now surface wallet errors through rejected promises consistently with the default transport, so
EvmClient.switchChain()no longer has to handle returned error payloads. (#311) - Return spec-compatible values from additional intercepted EIP-1193 provider requests:
wallet_requestPermissionsnow resolves to requested permissions, while successfulwallet_switchEthereumChainandwallet_addEthereumChainrequests resolve tonull. (#310)
@metamask/connect-multichain 1.0.0
Added
- Add
versiongetter toMultichainCoreandMetaMaskConnectMultichainthat returns the runtime package version (#253) - Warn at runtime when an existing singleton has a different version than the newly requested instance, indicating duplicate
@metamask/connect-multichainresolutions (#253)
Changed
- This release promotes @metamask/connect-multichain to a stable 1.0. From here it follows semver strictly — 1.x minor and patch releases will be backward-compatible, and breaking changes will only land in a future major. This lets the ecosystem packages (connect-evm, connect-solana, any future ecosystem packages) depend on ^1.0.0 and pick up all future 1.x improvements without a coordinated re-release, and gives consumers a dependable compatibility contract. (#317)
- Rename the storage API methods for the persisted transport type from
getTransport,setTransport, andremoveTransporttogetTransportType,setTransportType, andremoveTransportType. The existingmultichain-transportstorage key is unchanged, so no persisted data migration is required. (#307) getVersion()now returns the real package version injected at build time via__PACKAGE_VERSION__, instead of a hardcoded'0.0.0'(#253)- Refactor
MWPTransport.connect()and other internals to replace deeply nestednew Promise()and event-callback patterns with deferred promises, reducing nesting and breakingconnect()into smaller helpers. No behavior change. (#305)
Removed
- BREAKING: Remove the
transport.onNotificationconstructor option fromcreateMultichainClient(). The option was a fan-out of every typed event already exposed viaclient.on(...). Migrate to the typed event API:client.on('stateChanged' | 'wallet_sessionChanged' | 'metamask_accountsChanged' | 'metamask_chainChanged' | 'display_uri', handler). (#318) - BREAKING: Remove the public
transportaccessor fromMultichainCoreandMetaMaskConnectMultichain. Consumers that previously reached the underlying transport to invoke EIP-1193 / legacy provider methods (wallet_addEthereumChain,wallet_switchEthereumChain,eth_accounts) should now go throughclient.invokeMethod({ scope, request: { method, params } }).RequestRouterrecognizes those methods as EIP-1193 passthroughs and forwards the raw payload to the active transport'ssendEip1193Message, so behavior is preserved. All other RPCs continue to flow throughinvokeMethodunchanged. (#318)
Fixed
- Restrict EIP-6963 extension detection to native MetaMask RDNS values so MMConnect-managed provider announcements do not select the browser-extension transport. (#304)
- Failed
createMultichainClient()singleton initialization now rethrows after clearing the stored singleton promise, preventing the cleanup path from resolving toundefinedand preserving retry behavior. (#306) MWPTransport.request()andsendEip1193Message()now reject wallet response errors returned asresult.error, matchingDefaultTransporterror handling and preserving wallet error codes. (#311)MetaMaskConnectMultichain.#headlessConnect()now removes thedappClientsession_requestlistener once the connection settles, preventing each headlessconnect()call from leaking a listener that would re-emitdisplay_uriwith stale deeplinks for every subsequent session request. (#314)
@metamask/connect-solana 2.0.0
Added
- Validate
@metamask/connect-multichainpeer version at runtime and warn on mismatch (#253)
Changed
- BREAKING:
@metamask/connect-multichainis now a peer dependency.
Add it to your owndependencies(e.g.npm install @metamask/connect-multichain)
— it is no longer installed transitively. - Bump workspace dependencies:
- @metamask/connect-multichain@1.0.0
@metamask/browser-playground 0.8.0
Added
- Add an EIP-6963 validation panel for observing provider announcements, dispatching
eip6963:requestProvider, manually re-announcing the legacy EVM SDK provider, and distinguishing the MMConnect-managed provider from native/provider-discovery entries. (#304)
Changed
- Opt the browser playground wagmi connector out of automatic EIP-6963 provider announcement to avoid duplicate MMConnect-managed announcements while validating the direct legacy EVM SDK path. (#304)
- Bump workspace dependencies:
- @metamask/connect-evm@2.0.0
- @metamask/connect-multichain@1.0.0
Fixed
- Fixed Connected Network cards not appearing automatically after refresh (#313)
@metamask/react-native-playground@0.5.0
Android playground APK for @metamask/react-native-playground@0.5.0
36.0.0
@metamask/analytics 0.6.0
Added
- Add
analytics.disable()to stop event collection and clear queued analytics events. (#303)
@metamask/connect-evm 1.4.0
Added
- Add an
analytics.enabledoption tocreateEVMClient(). Consumers can set it tofalseto disable dapp-side analytics events and wallet correlation metadata. (#303)
@metamask/connect-multichain 0.15.0
Added
- Add an
analytics.enabledoption tocreateMultichainClient(). Set it tofalseto disable dapp-side analytics events and omitanalytics.remote_session_idconnection metadata. (#303)
@metamask/connect-solana 1.2.0
Added
- Add an
analytics.enabledoption tocreateSolanaClient(). Set it tofalseto disable dapp-side analytics events and wallet correlation metadata. (#303)
@metamask/browser-playground 0.7.5
Added
- Added an MWP deeplink failure repros collapsible panel (
MwpDeeplinkReproCard) that surfaces onemetamask://connect/mwp?…deeplink per failure branch in the mobile app'sConnectionRegistry.handleConnectDeeplink. Lets QA reproducibly trigger each branch (parse failures, internal-origin block, decompression mismatch, payload-too-large, etc.) without needing a misconfigured dapp, and acts as the verification surface for the Sentry coverage added in MetaMask/metamask-mobile#30343.
Changed
- Bump workspace dependencies:
- @metamask/connect-evm@1.4.0
- @metamask/connect-multichain@0.15.0
@metamask/react-native-playground@0.4.5
Android playground APK for @metamask/react-native-playground@0.4.5
35.0.0
@metamask/connect-evm 1.3.1
Fixed
- Return method-specific values from intercepted EIP-1193 account requests:
eth_requestAccountsnow resolves to an accounts array, andeth_coinbasenow resolves to the selected account instead of the full accounts array. (#297)
@metamask/browser-playground 0.7.4
Changed
- Bump workspace dependencies:
- @metamask/connect-evm@1.3.1
@metamask/react-native-playground@0.4.4
Android playground APK for @metamask/react-native-playground@0.4.4