From 7e1801e97a054f8db3b63cbb8fb797a4898ba5a9 Mon Sep 17 00:00:00 2001 From: Isaac Sanchez-Hawkins <266845420+isanchez404@users.noreply.github.com> Date: Tue, 12 May 2026 04:06:51 -0400 Subject: [PATCH] fix(push): mark visibility hidden on pagehide (#1189) Co-authored-by: Isaac Sanchez --- packages/ui/src/hooks/usePushVisibilityBeacon.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/hooks/usePushVisibilityBeacon.ts b/packages/ui/src/hooks/usePushVisibilityBeacon.ts index 5b6a6743..b23973a7 100644 --- a/packages/ui/src/hooks/usePushVisibilityBeacon.ts +++ b/packages/ui/src/hooks/usePushVisibilityBeacon.ts @@ -40,13 +40,17 @@ export const usePushVisibilityBeacon = (options?: { enabled?: boolean }) => { } }; + const reportPageHidden = () => { + sendVisibility(false); + }; + report(); // Heartbeat while visible so server TTL (30s) never expires. const interval = window.setInterval(reportVisibleOnly, HEARTBEAT_MS); document.addEventListener('visibilitychange', report); - window.addEventListener('pagehide', report); + window.addEventListener('pagehide', reportPageHidden); window.addEventListener('pageshow', report); window.addEventListener('focus', report); window.addEventListener('blur', report); @@ -54,7 +58,7 @@ export const usePushVisibilityBeacon = (options?: { enabled?: boolean }) => { return () => { window.clearInterval(interval); document.removeEventListener('visibilitychange', report); - window.removeEventListener('pagehide', report); + window.removeEventListener('pagehide', reportPageHidden); window.removeEventListener('pageshow', report); window.removeEventListener('focus', report); window.removeEventListener('blur', report);