diff --git a/frontend/src/context/ws-client-provider.tsx b/frontend/src/context/ws-client-provider.tsx index d08b0cc5e150..97ed51d68409 100644 --- a/frontend/src/context/ws-client-provider.tsx +++ b/frontend/src/context/ws-client-provider.tsx @@ -42,9 +42,6 @@ export function WsClientProvider({ }: React.PropsWithChildren) { const sioRef = React.useRef(null); const ghTokenRef = React.useRef(ghToken); - const disconnectRef = React.useRef | null>( - null, - ); const [status, setStatus] = React.useState( WsClientProviderStatus.DISCONNECTED, ); @@ -133,24 +130,16 @@ export function WsClientProvider({ }; }, [ghToken, conversationId]); - // Strict mode mounts and unmounts each component twice, so we have to wait in the destructor - // before actually disconnecting the socket and cancel the operation if the component gets remounted. - React.useEffect(() => { - const timeout = disconnectRef.current; - if (timeout != null) { - clearTimeout(timeout); - } - - return () => { - disconnectRef.current = setTimeout(() => { - const sio = sioRef.current; - if (sio) { - sio.off("disconnect", handleDisconnect); - sio.disconnect(); - } - }, 100); - }; - }, []); + React.useEffect( + () => () => { + const sio = sioRef.current; + if (sio) { + sio.off("disconnect", handleDisconnect); + sio.disconnect(); + } + }, + [], + ); const value = React.useMemo( () => ({