Skip to content

Releases: MetaMask/connect-monorepo

39.0.0

Choose a tag to compare

@github-actions github-actions released this 08 Jul 15:25
d6b3f65

@metamask/connect-evm 2.1.1

Added

  • Resolve wallet_getCapabilities locally 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_getCapabilities locally from the cached session on the MWP (mobile deeplink) transport, avoiding a deeplink round-trip. When the wallet publishes EIP-5792 capabilities in sessionProperties.eip155Capabilities, RequestRouter answers wallet_getCapabilities from the transport's cached session (read cache-only via the new getCachedSession accessor, 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 getCachedSession to the exported ExtendedTransport type: a cache-only read of the stored wallet_getSession result that resolves undefined on 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 returns true when only Flask is installed, so connect() 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_rejected instead of mmconnect_connection_failed. Modal close is a user-driven cancellation; it previously rejected with a plain Error('User closed modal') that isRejectionError did not recognise, so user cancellations polluted the _failed bucket. The close handler now rejects with the canonical EIP-1193 4001 error (providerErrors.userRejectedRequest()). Genuine errors (transport timeouts/disconnects, wallet RPC errors) still emit mmconnect_connection_failed. (#333)

@metamask/connect-solana 2.1.1

Changed

  • Bump @metamask/connect-multichain to ^1.2.0 (#340)

@metamask/browser-playground 0.8.2

Added

  • Add a wallet_getCapabilities button 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

Choose a tag to compare

@github-actions github-actions released this 08 Jul 17:15
d6b3f65

Android playground APK for @metamask/react-native-playground@0.5.2

38.0.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 20:08
3336743

@metamask/connect-evm 2.1.0

Changed

  • @metamask/connect-multichain is no longer a peer dependency and will be installed transitively as a regular dependency (#323)

Fixed

  • EIP1193Provider.request() now preserves JSON-RPC error data on provider-facing errors when connect-multichain surfaces a wallet error through RPCInvokeMethodErr. Dapps can read revert reasons, custom-error bytes, and other wallet-provided error metadata from error.data alongside the original wallet error.code and error.message. (#312)

@metamask/connect-multichain 1.1.0

Fixed

  • Normalize invokeMethod() wallet errors across transports. Wallet-side JSON-RPC / EIP-1193 code, message, and data fields are now preserved in RPCInvokeMethodErr as rpcCode, rpcMessage, and rpcData whether the wallet error arrives as a resolved JSON-RPC error response or as a rejected transport error. Wrapped transport errors now walk a capped cause chain so wallet error details are not hidden by transport/API wrapper errors. (#312)
  • DefaultTransport and MWPTransport now preserve the wallet's JSON-RPC error data when parsing a failed wallet response. Previously both transports dropped data while constructing the rejected error, so revert reasons / custom-error bytes never reached RequestRouter (leaving RPCInvokeMethodErr.rpcData unset). (#312)

@metamask/connect-solana 2.1.0

Changed

  • @metamask/connect-multichain is 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

Choose a tag to compare

@github-actions github-actions released this 11 Jun 20:48
3336743

Android playground APK for @metamask/react-native-playground@0.5.1

37.0.0

Choose a tag to compare

@github-actions github-actions released this 05 Jun 21:27
c69a751

@metamask/connect-evm 2.0.0

Added

  • Validate @metamask/connect-multichain peer 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 skipAutoAnnounce and announceProvider() for manual control. (#304)

Changed

  • BREAKING: @metamask/connect-multichain is now a peer dependency.
    Add it to your own dependencies (e.g. npm install @metamask/connect-multichain)
    — it is no longer installed transitively.
  • Adopts breaking removal of the public transport accessor in @metamask/connect-multichain. (#318)

Removed

  • BREAKING Remove the transport.onNotification option from createEVMClient(). The option was a fan-out of typed events already exposed via the EIP-1193 provider (accountsChanged, chainChanged, connect, disconnect, display_uri) and via eventHandlers. 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_requestPermissions now resolves to requested permissions, while successful wallet_switchEthereumChain and wallet_addEthereumChain requests resolve to null. (#310)

@metamask/connect-multichain 1.0.0

Added

  • Add version getter to MultichainCore and MetaMaskConnectMultichain that 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-multichain resolutions (#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, and removeTransport to getTransportType, setTransportType, and removeTransportType. The existing multichain-transport storage 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 nested new Promise() and event-callback patterns with deferred promises, reducing nesting and breaking connect() into smaller helpers. No behavior change. (#305)

Removed

  • BREAKING: Remove the transport.onNotification constructor option from createMultichainClient(). The option was a fan-out of every typed event already exposed via client.on(...). Migrate to the typed event API: client.on('stateChanged' | 'wallet_sessionChanged' | 'metamask_accountsChanged' | 'metamask_chainChanged' | 'display_uri', handler). (#318)
  • BREAKING: Remove the public transport accessor from MultichainCore and MetaMaskConnectMultichain. Consumers that previously reached the underlying transport to invoke EIP-1193 / legacy provider methods (wallet_addEthereumChain, wallet_switchEthereumChain, eth_accounts) should now go through client.invokeMethod({ scope, request: { method, params } }). RequestRouter recognizes those methods as EIP-1193 passthroughs and forwards the raw payload to the active transport's sendEip1193Message, so behavior is preserved. All other RPCs continue to flow through invokeMethod unchanged. (#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 to undefined and preserving retry behavior. (#306)
  • MWPTransport.request() and sendEip1193Message() now reject wallet response errors returned as result.error, matching DefaultTransport error handling and preserving wallet error codes. (#311)
  • MetaMaskConnectMultichain.#headlessConnect() now removes the dappClient session_request listener once the connection settles, preventing each headless connect() call from leaking a listener that would re-emit display_uri with stale deeplinks for every subsequent session request. (#314)

@metamask/connect-solana 2.0.0

Added

  • Validate @metamask/connect-multichain peer version at runtime and warn on mismatch (#253)

Changed

  • BREAKING: @metamask/connect-multichain is now a peer dependency.
    Add it to your own dependencies (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

Choose a tag to compare

@github-actions github-actions released this 05 Jun 22:26
c69a751

Android playground APK for @metamask/react-native-playground@0.5.0

36.0.0

Choose a tag to compare

@github-actions github-actions released this 26 May 20:55
59961e1

@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.enabled option to createEVMClient(). Consumers can set it to false to disable dapp-side analytics events and wallet correlation metadata. (#303)

@metamask/connect-multichain 0.15.0

Added

  • Add an analytics.enabled option to createMultichainClient(). Set it to false to disable dapp-side analytics events and omit analytics.remote_session_id connection metadata. (#303)

@metamask/connect-solana 1.2.0

Added

  • Add an analytics.enabled option to createSolanaClient(). Set it to false to 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 one metamask://connect/mwp?… deeplink per failure branch in the mobile app's ConnectionRegistry.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

Choose a tag to compare

@github-actions github-actions released this 26 May 21:39
59961e1

Android playground APK for @metamask/react-native-playground@0.4.5

35.0.0

Choose a tag to compare

@github-actions github-actions released this 18 May 16:30
0aa0395

@metamask/connect-evm 1.3.1

Fixed

  • Return method-specific values from intercepted EIP-1193 account requests: eth_requestAccounts now resolves to an accounts array, and eth_coinbase now 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

Choose a tag to compare

@github-actions github-actions released this 18 May 17:14
0aa0395

Android playground APK for @metamask/react-native-playground@0.4.4