diff --git a/src/hooks/useDocumentTitle.ts b/src/hooks/useDocumentTitle.ts index ec40ada435006..87e8991f1d8da 100644 --- a/src/hooks/useDocumentTitle.ts +++ b/src/hooks/useDocumentTitle.ts @@ -1,11 +1,12 @@ import {useFocusEffect} from '@react-navigation/native'; import {useCallback} from 'react'; -import {setPageTitle} from '@libs/UnreadIndicatorUpdater/updateUnread'; +import {clearPageTitle, setPageTitle} from '@libs/UnreadIndicatorUpdater/updateUnread'; function useDocumentTitle(title: string) { useFocusEffect( useCallback(() => { setPageTitle(title); + return () => clearPageTitle(); }, [title]), ); } diff --git a/src/libs/UnreadIndicatorUpdater/updateUnread/index.android.ts b/src/libs/UnreadIndicatorUpdater/updateUnread/index.android.ts index 3831a8b975794..8026d5be45660 100644 --- a/src/libs/UnreadIndicatorUpdater/updateUnread/index.android.ts +++ b/src/libs/UnreadIndicatorUpdater/updateUnread/index.android.ts @@ -7,5 +7,7 @@ const updateUnread: UpdateUnread = () => {}; // eslint-disable-next-line @typescript-eslint/no-unused-vars function setPageTitle(_title: string) {} +function clearPageTitle() {} + export default updateUnread; -export {setPageTitle}; +export {clearPageTitle, setPageTitle}; diff --git a/src/libs/UnreadIndicatorUpdater/updateUnread/index.ios.ts b/src/libs/UnreadIndicatorUpdater/updateUnread/index.ios.ts index 05aa541c8c6d8..e490222db8bdc 100644 --- a/src/libs/UnreadIndicatorUpdater/updateUnread/index.ios.ts +++ b/src/libs/UnreadIndicatorUpdater/updateUnread/index.ios.ts @@ -13,5 +13,7 @@ const updateUnread: UpdateUnread = (totalCount) => { // eslint-disable-next-line @typescript-eslint/no-unused-vars function setPageTitle(_title: string) {} +function clearPageTitle() {} + export default updateUnread; -export {setPageTitle}; +export {clearPageTitle, setPageTitle}; diff --git a/src/libs/UnreadIndicatorUpdater/updateUnread/index.ts b/src/libs/UnreadIndicatorUpdater/updateUnread/index.ts index 43218d4d880a2..5e5ad56b406d0 100644 --- a/src/libs/UnreadIndicatorUpdater/updateUnread/index.ts +++ b/src/libs/UnreadIndicatorUpdater/updateUnread/index.ts @@ -52,5 +52,14 @@ window.addEventListener('popstate', () => { updateUnread(unreadTotalCount); }); +/** + * Clear the page title without triggering a document title update. + * Used as cleanup in useDocumentTitle to avoid the "New Expensify" flash + * that occurs when setPageTitle('') queues an async updateDocumentTitle(). + */ +function clearPageTitle() { + currentPageTitle = ''; +} + export default updateUnread; -export {setPageTitle}; +export {clearPageTitle, setPageTitle};