From b094194a19aec543bd55fcb0f3c8dff1f71be22d Mon Sep 17 00:00:00 2001 From: Alex Donesky Date: Fri, 20 Feb 2026 13:52:27 -0600 Subject: [PATCH 1/3] fix(connect-multichain): clean up MWP session on connection rejection When a user rejects a QR code connection in the wallet, the MWP handshake has already completed and stored a session in the KVStore. Without calling dappClient.disconnect(), the stale session persists and causes subsequent connection attempts to enter the resume path with a rejected session, resulting in a timeout. --- .../src/multichain/transports/mwp/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/connect-multichain/src/multichain/transports/mwp/index.ts b/packages/connect-multichain/src/multichain/transports/mwp/index.ts index dff178e1..9bf9ece3 100644 --- a/packages/connect-multichain/src/multichain/transports/mwp/index.ts +++ b/packages/connect-multichain/src/multichain/transports/mwp/index.ts @@ -494,7 +494,10 @@ export class MWPTransport implements ExtendedTransport { }); return connectionPromise - .catch((error) => { + .catch(async (error) => { + // Clean up the MWP session from the KVStore so stale sessions + // don't cause subsequent connect attempts to enter the resume path + await this.dappClient.disconnect() throw error; }) .finally(() => { From 991bb04851b806639148afb7d94b5e5247b1b24d Mon Sep 17 00:00:00 2001 From: Alex Donesky Date: Fri, 20 Feb 2026 14:06:33 -0600 Subject: [PATCH 2/3] lint + changelog --- packages/connect-multichain/CHANGELOG.md | 1 + .../connect-multichain/src/multichain/transports/mwp/index.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/connect-multichain/CHANGELOG.md b/packages/connect-multichain/CHANGELOG.md index 07e052c3..a2c62a4d 100644 --- a/packages/connect-multichain/CHANGELOG.md +++ b/packages/connect-multichain/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix `beforeunload` event listener not being properly removed on disconnect due to `.bind()` creating different function references, causing a listener leak on each connect/disconnect cycle ([#170](https://github.com/MetaMask/connect-monorepo/pull/170)) - Rename `StoreAdapterWeb.DB_NAME` from `mmsdk` to `mmconnect` to prevent IndexedDB collisions when the legacy MetaMask SDK and MM Connect run in the same browser context ([#177](https://github.com/MetaMask/connect-monorepo/pull/177)) +- Clean up stale MWP session from KVStore on connection rejection so subsequent QR code connection attempts are not blocked ## [0.5.3] diff --git a/packages/connect-multichain/src/multichain/transports/mwp/index.ts b/packages/connect-multichain/src/multichain/transports/mwp/index.ts index 9bf9ece3..3c30e903 100644 --- a/packages/connect-multichain/src/multichain/transports/mwp/index.ts +++ b/packages/connect-multichain/src/multichain/transports/mwp/index.ts @@ -497,7 +497,7 @@ export class MWPTransport implements ExtendedTransport { .catch(async (error) => { // Clean up the MWP session from the KVStore so stale sessions // don't cause subsequent connect attempts to enter the resume path - await this.dappClient.disconnect() + await this.dappClient.disconnect(); throw error; }) .finally(() => { From 3d17643f8d3f7fe5a76fed0b9457969906dfab1e Mon Sep 17 00:00:00 2001 From: Alex Donesky Date: Fri, 20 Feb 2026 14:10:50 -0600 Subject: [PATCH 3/3] more changelog --- packages/connect-multichain/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/connect-multichain/CHANGELOG.md b/packages/connect-multichain/CHANGELOG.md index a2c62a4d..c57fa49f 100644 --- a/packages/connect-multichain/CHANGELOG.md +++ b/packages/connect-multichain/CHANGELOG.md @@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix `beforeunload` event listener not being properly removed on disconnect due to `.bind()` creating different function references, causing a listener leak on each connect/disconnect cycle ([#170](https://github.com/MetaMask/connect-monorepo/pull/170)) - Rename `StoreAdapterWeb.DB_NAME` from `mmsdk` to `mmconnect` to prevent IndexedDB collisions when the legacy MetaMask SDK and MM Connect run in the same browser context ([#177](https://github.com/MetaMask/connect-monorepo/pull/177)) -- Clean up stale MWP session from KVStore on connection rejection so subsequent QR code connection attempts are not blocked +- Clean up stale MWP session from KVStore on connection rejection so subsequent QR code connection attempts are not blocked ([#180](https://github.com/MetaMask/connect-monorepo/pull/180)) ## [0.5.3]