From 4c60b5f91101bc09d1ede4cefd0770d96de13f9a Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:55:22 -0300 Subject: [PATCH 1/3] fix: clear old uri before creating a new one on connecting view --- packages/appkit/src/views/w3m-connecting-view/index.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/appkit/src/views/w3m-connecting-view/index.tsx b/packages/appkit/src/views/w3m-connecting-view/index.tsx index 2dc718b0..8bd75503 100644 --- a/packages/appkit/src/views/w3m-connecting-view/index.tsx +++ b/packages/appkit/src/views/w3m-connecting-view/index.tsx @@ -107,6 +107,9 @@ export function ConnectingView() { }, [data, isInstalled]); useEffect(() => { + // Clear any stale URI from previous connection attempts + WcController.clearUri(); + initializeConnection(); let _interval: NodeJS.Timeout; From 78d3670fa0130033fa188bb524452df8db59ed98 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 14 Nov 2025 15:09:33 -0300 Subject: [PATCH 2/3] chore: moved lastRetry value to a ref --- .../appkit/src/views/w3m-connecting-view/index.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/appkit/src/views/w3m-connecting-view/index.tsx b/packages/appkit/src/views/w3m-connecting-view/index.tsx index 8bd75503..9b16dd25 100644 --- a/packages/appkit/src/views/w3m-connecting-view/index.tsx +++ b/packages/appkit/src/views/w3m-connecting-view/index.tsx @@ -1,5 +1,5 @@ import { useSnapshot } from 'valtio'; -import { useEffect, useLayoutEffect, useState } from 'react'; +import { useEffect, useLayoutEffect, useRef, useState } from 'react'; import { ErrorUtil, type Platform } from '@reown/appkit-common-react-native'; import { WcController, @@ -22,7 +22,7 @@ export function ConnectingView() { const { connect } = useInternalAppKit(); const { installed } = useSnapshot(ApiController.state); const { data } = RouterController.state; - const [lastRetry, setLastRetry] = useState(Date.now()); + const lastRetryRef = useRef(Date.now()); const isQr = !data?.wallet; const isInstalled = !!installed?.find(wallet => wallet.id === data?.wallet?.id); @@ -30,8 +30,8 @@ export function ConnectingView() { const [platforms, setPlatforms] = useState([]); const onRetry = () => { - if (CoreHelperUtil.isAllowedRetry(lastRetry)) { - setLastRetry(Date.now()); + if (CoreHelperUtil.isAllowedRetry(lastRetryRef.current)) { + lastRetryRef.current = Date.now(); initializeConnection(true); } else { SnackController.showError('Please wait a second before retrying'); @@ -73,10 +73,10 @@ export function ConnectingView() { } }); - const currentRetryTime = retryTimestamp ?? lastRetry; + const currentRetryTime = retryTimestamp ?? lastRetryRef.current; if (isQr && CoreHelperUtil.isAllowedRetry(currentRetryTime)) { const newRetryTime = Date.now(); - setLastRetry(newRetryTime); + lastRetryRef.current = newRetryTime; initializeConnection(true, newRetryTime); } } From 5cb1e29fc414e1ff38fdcd06a7c72ff7bd077537 Mon Sep 17 00:00:00 2001 From: nacho <25931366+ignaciosantise@users.noreply.github.com> Date: Fri, 14 Nov 2025 15:16:46 -0300 Subject: [PATCH 3/3] chore: improved logic --- .../src/views/w3m-connecting-view/index.tsx | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/packages/appkit/src/views/w3m-connecting-view/index.tsx b/packages/appkit/src/views/w3m-connecting-view/index.tsx index 9b16dd25..a6e5cc17 100644 --- a/packages/appkit/src/views/w3m-connecting-view/index.tsx +++ b/packages/appkit/src/views/w3m-connecting-view/index.tsx @@ -38,7 +38,7 @@ export function ConnectingView() { } }; - const initializeConnection = async (retry = false, retryTimestamp?: number) => { + const initializeConnection = async (retry = false) => { try { const { wcPairingExpiry } = WcController.state; const { data: routeData } = RouterController.state; @@ -73,11 +73,9 @@ export function ConnectingView() { } }); - const currentRetryTime = retryTimestamp ?? lastRetryRef.current; - if (isQr && CoreHelperUtil.isAllowedRetry(currentRetryTime)) { - const newRetryTime = Date.now(); - lastRetryRef.current = newRetryTime; - initializeConnection(true, newRetryTime); + if (isQr && CoreHelperUtil.isAllowedRetry(lastRetryRef.current)) { + lastRetryRef.current = Date.now(); + initializeConnection(true); } } }; @@ -107,10 +105,7 @@ export function ConnectingView() { }, [data, isInstalled]); useEffect(() => { - // Clear any stale URI from previous connection attempts - WcController.clearUri(); - - initializeConnection(); + initializeConnection(true); let _interval: NodeJS.Timeout; // Check if the pairing expired every 10 seconds. If expired, it will create a new uri.