From d810c9e0de5bb566aecdf138c7f3f7103f4f3ec3 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Thu, 6 Aug 2026 18:52:27 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(frontend)=20drop=20resize=20listen?= =?UTF-8?q?er=20in=20useIsMobileBrowser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `isMobileBrowser()` only reads `navigator.userAgent`, which does not change during the lifetime of the document, so the previous `resize` listener never had anything meaningful to update. It did, however, dispatch `setIsMobile` on components rendered into a Document Picture-in-Picture window (e.g. the reactions toolbar). When the PiP window had already been closed, Firefox threw "can't access dead object". Compute the value once and skip the listener entirely. Fix 019cb315-d827-73f2-b1cc-74e4dd71e982 --- src/frontend/src/utils/useIsMobile.ts | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/frontend/src/utils/useIsMobile.ts b/src/frontend/src/utils/useIsMobile.ts index 63054573..01dda6db 100644 --- a/src/frontend/src/utils/useIsMobile.ts +++ b/src/frontend/src/utils/useIsMobile.ts @@ -1,20 +1,8 @@ import { isMobileBrowser } from '@livekit/components-core' -import { useEffect, useState } from 'react' +import { useState } from 'react' export const useIsMobile = () => { - const [isMobile, setIsMobile] = useState(isMobileBrowser()) - - useEffect(() => { - const handleResize = () => { - setIsMobile(isMobileBrowser()) - } - - window.addEventListener('resize', handleResize) - - return () => { - window.removeEventListener('resize', handleResize) - } - }, []) + const [isMobile] = useState(() => isMobileBrowser()) return isMobile }