From e386d63ddb8e472a70802d419d859ceae43f6d59 Mon Sep 17 00:00:00 2001
From: Wojciech Boman <wojciechboman@gmail.com>
Date: Mon, 15 Dec 2025 10:36:51 +0100
Subject: [PATCH] Revert "Merge pull request #75886 from
 software-mansion-labs/swrhp-v2"

This reverts commit 50f5b59dcf82c65269e276a5cf4a8cd1313991fc, reversing
changes made to 8df157ee61a823a95e9bf9a1992af99ccb345f59.
---
 src/ROUTES.ts                                 |  11 --
 src/SCREENS.ts                                |   5 +-
 src/components/MoneyReportHeader.tsx          |  18 +-
 .../MoneyRequestReportActionsList.tsx         |   4 +-
 .../MoneyRequestReportTransactionItem.tsx     |   4 +-
 .../MoneyRequestReportTransactionList.tsx     |   9 +-
 .../MoneyRequestReportView.tsx                | 114 +++++--------
 src/components/ParentNavigationSubtitle.tsx   |  60 +------
 .../MoneyRequestReceiptView.tsx               |   2 +-
 .../MoneyRequestReportPreviewContent.tsx      |  13 +-
 .../MoneyRequestReportPreview/index.tsx       |  13 +-
 src/components/Search/index.tsx               |  20 +--
 .../SplitListItem.tsx                         |  18 +-
 .../ReceiptPreview/index.tsx                  |   4 +-
 .../WIDE_RIGHT_MODALS.ts                      |  12 --
 .../WideRHPContextProvider/default.ts         |   9 +-
 .../getIsRHPDisplayedBelow.ts                 |  18 --
 .../getIsWideRHPOpenedBelow.ts                |  14 ++
 .../getVisibleRHPRouteKeys.ts                 |  46 +----
 .../WideRHPContextProvider/index.native.tsx   |  17 +-
 .../WideRHPContextProvider/index.tsx          | 113 ++++++-------
 .../WideRHPContextProvider/types.ts           |  23 +--
 .../useShowWideRHPVersion/index.ts            |  11 +-
 .../index.native.ts                           |  13 --
 .../useResponsiveLayoutOnWideRHP/index.ts     |  33 ----
 .../useResponsiveLayoutOnWideRHP/types.ts     |   8 -
 .../Navigation/AppNavigator/AuthScreens.tsx   |  28 +---
 .../ModalStackNavigators/index.tsx            | 157 +++++-------------
 .../Navigators/RightModalNavigator.tsx        |  91 +++-------
 .../Navigators/SearchFullscreenNavigator.tsx  |   5 +
 src/libs/Navigation/Navigation.ts             |  92 +++-------
 .../helpers/extractNavigationKeys.ts          |   8 +-
 .../Navigation/helpers/isReportOpenInRHP.ts   |   3 +-
 .../helpers/isReportOpenInSuperWideRHP.ts     |  17 --
 .../linkingConfig/RELATIONS/SEARCH_TO_RHP.ts  |   1 -
 src/libs/Navigation/linkingConfig/config.ts   |  13 +-
 src/libs/Navigation/types.ts                  |  27 +--
 src/libs/ReportUtils.ts                       |   5 +-
 src/libs/actions/IOU.ts                       |  16 +-
 src/pages/ReportAddApproverPage.tsx           |   2 +-
 src/pages/ReportChangeApproverPage.tsx        |   4 +-
 .../Search/SearchMoneyRequestReportPage.tsx   |  12 +-
 .../TransactionMerge/ConfirmationPage.tsx     |   2 +-
 src/pages/home/ReportScreen.tsx               |  11 +-
 .../AttachmentPickerWithMenuItems.tsx         |  23 +--
 src/pages/iou/SplitExpensePage.tsx            |  29 +---
 .../iou/request/step/IOURequestStepReport.tsx |   4 +-
 src/styles/index.ts                           |  25 +--
 src/styles/variables.ts                       |   1 -
 tests/actions/IOUTest.ts                      |   2 -
 .../ReportActionCompose.perf-test.tsx         |   1 -
 tests/utils/TestNavigationContainer.tsx       |   4 +
 52 files changed, 324 insertions(+), 871 deletions(-)
 delete mode 100644 src/components/WideRHPContextProvider/WIDE_RIGHT_MODALS.ts
 delete mode 100644 src/components/WideRHPContextProvider/getIsRHPDisplayedBelow.ts
 create mode 100644 src/components/WideRHPContextProvider/getIsWideRHPOpenedBelow.ts
 delete mode 100644 src/hooks/useResponsiveLayoutOnWideRHP/index.native.ts
 delete mode 100644 src/hooks/useResponsiveLayoutOnWideRHP/index.ts
 delete mode 100644 src/hooks/useResponsiveLayoutOnWideRHP/types.ts
 delete mode 100644 src/libs/Navigation/helpers/isReportOpenInSuperWideRHP.ts

diff --git a/src/ROUTES.ts b/src/ROUTES.ts
index a1cdab861e30..3b7d7253be31 100644
--- a/src/ROUTES.ts
+++ b/src/ROUTES.ts
@@ -85,17 +85,6 @@ const ROUTES = {
             return getUrlWithBackToParam(baseRoute, backTo);
         },
     },
-
-    EXPENSE_REPORT_RHP: {
-        route: 'e/:reportID',
-        getRoute: ({reportID, backTo}: {reportID: string; backTo?: string}) => {
-            const baseRoute = `e/${reportID}` as const;
-
-            // eslint-disable-next-line no-restricted-syntax -- Legacy route generation
-            return getUrlWithBackToParam(baseRoute, backTo);
-        },
-    },
-
     SEARCH_REPORT_VERIFY_ACCOUNT: {
         route: `search/view/:reportID/${VERIFY_ACCOUNT}`,
         getRoute: (reportID: string) => `search/view/${reportID}/${VERIFY_ACCOUNT}` as const,
diff --git a/src/SCREENS.ts b/src/SCREENS.ts
index 7d8973af5441..8ac4f48c7614 100644
--- a/src/SCREENS.ts
+++ b/src/SCREENS.ts
@@ -249,7 +249,10 @@ const SCREENS = {
         TRAVEL: 'Travel',
         SEARCH_REPORT: 'SearchReport',
         SEARCH_REPORT_ACTIONS: 'SearchReportActions',
+        // These two routes will be added in a separate PR adding Super Wide RHP routes
+        EXPENSE_REPORT: 'ExpenseReport',
         SEARCH_MONEY_REQUEST_REPORT: 'SearchMoneyRequestReport',
+
         SEARCH_ADVANCED_FILTERS: 'SearchAdvancedFilters',
         SEARCH_SAVED_SEARCH: 'SearchSavedSearch',
         SETTINGS_CATEGORIES: 'SettingsCategories',
@@ -267,10 +270,8 @@ const SCREENS = {
         MERGE_TRANSACTION: 'MergeTransaction',
         REPORT_CARD_ACTIVATE: 'Report_Card_Activate',
         DOMAIN: 'Domain',
-        EXPENSE_REPORT: 'ExpenseReport',
     },
     REPORT_CARD_ACTIVATE: 'Report_Card_Activate_Root',
-    EXPENSE_REPORT_RHP: 'Expense_Report_RHP',
     PUBLIC_CONSOLE_DEBUG: 'Console_Debug',
     SIGN_IN_WITH_APPLE_DESKTOP: 'AppleSignInDesktop',
     SIGN_IN_WITH_GOOGLE_DESKTOP: 'GoogleSignInDesktop',
diff --git a/src/components/MoneyReportHeader.tsx b/src/components/MoneyReportHeader.tsx
index 1b4627c2e91b..c97b6e6cc65e 100644
--- a/src/components/MoneyReportHeader.tsx
+++ b/src/components/MoneyReportHeader.tsx
@@ -24,7 +24,6 @@ import usePermissions from '@hooks/usePermissions';
 import usePolicy from '@hooks/usePolicy';
 import useReportIsArchived from '@hooks/useReportIsArchived';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
-import useResponsiveLayoutOnWideRHP from '@hooks/useResponsiveLayoutOnWideRHP';
 import useSearchShouldCalculateTotals from '@hooks/useSearchShouldCalculateTotals';
 import useSelectedTransactionsActions from '@hooks/useSelectedTransactionsActions';
 import useStrictPolicyRules from '@hooks/useStrictPolicyRules';
@@ -45,7 +44,7 @@ import Log from '@libs/Log';
 import {getThreadReportIDsForTransactions, getTotalAmountForIOUReportPreviewButton} from '@libs/MoneyRequestReportUtils';
 import Navigation from '@libs/Navigation/Navigation';
 import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types';
-import type {ReportsSplitNavigatorParamList, SearchMoneyRequestReportParamList, SearchReportParamList} from '@libs/Navigation/types';
+import type {ReportsSplitNavigatorParamList, SearchFullscreenNavigatorParamList, SearchReportParamList} from '@libs/Navigation/types';
 import {buildOptimisticNextStepForPreventSelfApprovalsEnabled, buildOptimisticNextStepForStrictPolicyRuleViolations} from '@libs/NextStepUtils';
 import type {KYCFlowEvent, TriggerKYCFlow} from '@libs/PaymentUtils';
 import {selectPaymentType} from '@libs/PaymentUtils';
@@ -152,6 +151,7 @@ import ProcessMoneyReportHoldMenu from './ProcessMoneyReportHoldMenu';
 import {useSearchContext} from './Search/SearchContext';
 import AnimatedSettlementButton from './SettlementButton/AnimatedSettlementButton';
 import Text from './Text';
+import {WideRHPContext} from './WideRHPContextProvider';
 
 type MoneyReportHeaderProps = {
     /** The report currently being looked at */
@@ -192,7 +192,7 @@ function MoneyReportHeader({
     const shouldDisplayNarrowVersion = shouldUseNarrowLayout || isMediumScreenWidth;
     const route = useRoute<
         | PlatformStackRouteProp<ReportsSplitNavigatorParamList, typeof SCREENS.REPORT>
-        | PlatformStackRouteProp<SearchMoneyRequestReportParamList, typeof SCREENS.SEARCH.MONEY_REQUEST_REPORT>
+        | PlatformStackRouteProp<SearchFullscreenNavigatorParamList, typeof SCREENS.SEARCH.MONEY_REQUEST_REPORT>
         | PlatformStackRouteProp<SearchReportParamList, typeof SCREENS.SEARCH.REPORT_RHP>
     >();
     const {login: currentUserLogin, accountID, email} = useCurrentUserPersonalDetails();
@@ -383,11 +383,9 @@ function MoneyReportHeader({
     const shouldCalculateTotals = useSearchShouldCalculateTotals(currentSearchKey, currentSearchQueryJSON?.similarSearchHash, true);
     const [currentSearchResults] = useOnyx(`${ONYXKEYS.COLLECTION.SNAPSHOT}${currentSearchQueryJSON?.hash}`, {canBeMissing: true});
 
+    const {wideRHPRouteKeys} = useContext(WideRHPContext);
     const [network] = useOnyx(ONYXKEYS.NETWORK, {canBeMissing: true});
-
-    const {isWideRHPDisplayedOnWideLayout, isSuperWideRHPDisplayedOnWideLayout} = useResponsiveLayoutOnWideRHP();
-
-    const shouldDisplayNarrowMoreButton = !shouldDisplayNarrowVersion || isWideRHPDisplayedOnWideLayout || isSuperWideRHPDisplayedOnWideLayout;
+    const shouldDisplayNarrowMoreButton = !shouldDisplayNarrowVersion || (wideRHPRouteKeys.length > 0 && !isSmallScreenWidth);
 
     const showExportProgressModal = useCallback(() => {
         return showConfirmModal({
@@ -1435,9 +1433,7 @@ function MoneyReportHeader({
                 const backToRoute = route.params?.backTo ?? (chatReport?.reportID ? ROUTES.REPORT_WITH_ID.getRoute(chatReport.reportID) : undefined);
                 Navigation.goBack(backToRoute);
             }
-            // It has been handled like the rest of the delete cases. It will be refactored along with other cases.
-            // eslint-disable-next-line @typescript-eslint/no-deprecated
-            InteractionManager.runAfterInteractions(() => handleDeleteTransactions());
+            handleDeleteTransactions();
         });
     }, [showConfirmModal, translate, selectedTransactionIDs.length, transactions, handleDeleteTransactions, route.params?.backTo, chatReport?.reportID]);
 
@@ -1619,7 +1615,7 @@ function MoneyReportHeader({
                     {isReportInSearch && (
                         <MoneyRequestReportNavigation
                             reportID={moneyRequestReport?.reportID}
-                            shouldDisplayNarrowVersion={!shouldDisplayNarrowMoreButton}
+                            shouldDisplayNarrowVersion={shouldDisplayNarrowVersion}
                         />
                     )}
                 </View>
diff --git a/src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx b/src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx
index 57952a16dc61..c60f6d9366cb 100644
--- a/src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx
+++ b/src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx
@@ -30,7 +30,7 @@ import useParentReportAction from '@hooks/useParentReportAction';
 import usePrevious from '@hooks/usePrevious';
 import useReportIsArchived from '@hooks/useReportIsArchived';
 import useReportScrollManager from '@hooks/useReportScrollManager';
-import useResponsiveLayoutOnWideRHP from '@hooks/useResponsiveLayoutOnWideRHP';
+import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useSelectedTransactionsActions from '@hooks/useSelectedTransactionsActions';
 import useThemeStyles from '@hooks/useThemeStyles';
 import useWindowDimensions from '@hooks/useWindowDimensions';
@@ -172,7 +172,7 @@ function MoneyRequestReportActionsList({
     const isReportArchived = useReportIsArchived(reportID);
     const canPerformWriteAction = canUserPerformWriteAction(report, isReportArchived);
 
-    const {shouldUseNarrowLayout} = useResponsiveLayoutOnWideRHP();
+    const {shouldUseNarrowLayout} = useResponsiveLayout();
 
     const [session] = useOnyx(ONYXKEYS.SESSION, {canBeMissing: false});
     const [offlineModalVisible, setOfflineModalVisible] = useState(false);
diff --git a/src/components/MoneyRequestReportView/MoneyRequestReportTransactionItem.tsx b/src/components/MoneyRequestReportView/MoneyRequestReportTransactionItem.tsx
index 5afafc34f251..0fca1ad076e6 100644
--- a/src/components/MoneyRequestReportView/MoneyRequestReportTransactionItem.tsx
+++ b/src/components/MoneyRequestReportView/MoneyRequestReportTransactionItem.tsx
@@ -9,7 +9,6 @@ import TransactionItemRow from '@components/TransactionItemRow';
 import useAnimatedHighlightStyle from '@hooks/useAnimatedHighlightStyle';
 import useLocalize from '@hooks/useLocalize';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
-import useResponsiveLayoutOnWideRHP from '@hooks/useResponsiveLayoutOnWideRHP';
 import useTheme from '@hooks/useTheme';
 import useThemeStyles from '@hooks/useThemeStyles';
 import ControlSelection from '@libs/ControlSelection';
@@ -85,8 +84,7 @@ function MoneyRequestReportTransactionItem({
     const {translate} = useLocalize();
     const styles = useThemeStyles();
     // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth
-    const {isSmallScreenWidth, isMediumScreenWidth} = useResponsiveLayout();
-    const {shouldUseNarrowLayout} = useResponsiveLayoutOnWideRHP();
+    const {isSmallScreenWidth, isMediumScreenWidth, shouldUseNarrowLayout} = useResponsiveLayout();
     const theme = useTheme();
     const isPendingDelete = isTransactionPendingDelete(transaction);
     const pendingAction = getTransactionPendingAction(transaction);
diff --git a/src/components/MoneyRequestReportView/MoneyRequestReportTransactionList.tsx b/src/components/MoneyRequestReportView/MoneyRequestReportTransactionList.tsx
index 0ffea030a4de..286103142f7e 100644
--- a/src/components/MoneyRequestReportView/MoneyRequestReportTransactionList.tsx
+++ b/src/components/MoneyRequestReportView/MoneyRequestReportTransactionList.tsx
@@ -5,6 +5,7 @@ import {View} from 'react-native';
 import type {TupleToUnion} from 'type-fest';
 import ButtonWithDropdownMenu from '@components/ButtonWithDropdownMenu';
 import Checkbox from '@components/Checkbox';
+import * as Expensicons from '@components/Icon/Expensicons';
 import MenuItem from '@components/MenuItem';
 import Modal from '@components/Modal';
 import OfflineWithFeedback from '@components/OfflineWithFeedback';
@@ -21,7 +22,6 @@ import useMobileSelectionMode from '@hooks/useMobileSelectionMode';
 import useOnyx from '@hooks/useOnyx';
 import useReportIsArchived from '@hooks/useReportIsArchived';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
-import useResponsiveLayoutOnWideRHP from '@hooks/useResponsiveLayoutOnWideRHP';
 import useStyleUtils from '@hooks/useStyleUtils';
 import useThemeStyles from '@hooks/useThemeStyles';
 import {turnOnMobileSelectionMode} from '@libs/actions/MobileSelectionMode';
@@ -167,8 +167,7 @@ function MoneyRequestReportTransactionList({
     const expensifyIcons = useMemoizedLazyExpensifyIcons(['Location'] as const);
     const {translate, localeCompare} = useLocalize();
     // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth
-    const {isSmallScreenWidth, isMediumScreenWidth} = useResponsiveLayout();
-    const {shouldUseNarrowLayout} = useResponsiveLayoutOnWideRHP();
+    const {shouldUseNarrowLayout, isSmallScreenWidth, isMediumScreenWidth} = useResponsiveLayout();
     const {markReportIDAsExpense} = useContext(WideRHPContext);
     const [isModalVisible, setIsModalVisible] = useState(false);
     const [selectedTransactionID, setSelectedTransactionID] = useState<string>('');
@@ -186,8 +185,6 @@ function MoneyRequestReportTransactionList({
     const [reportLayoutGroupBy] = useOnyx(ONYXKEYS.NVP_REPORT_LAYOUT_GROUP_BY, {canBeMissing: true});
     const shouldShowGroupedTransactions = isExpenseReport(report) && !isIOUReport(report);
 
-    const icons = useMemoizedLazyExpensifyIcons(['CheckSquare'] as const);
-
     const addExpenseDropdownOptions = useMemo(
         () => getAddExpenseDropdownOptions(expensifyIcons, report?.reportID, policy, undefined, undefined, lastDistanceExpenseType),
         [report?.reportID, policy, lastDistanceExpenseType, expensifyIcons],
@@ -638,7 +635,7 @@ function MoneyRequestReportTransactionList({
             >
                 <MenuItem
                     title={translate('common.select')}
-                    icon={icons.CheckSquare}
+                    icon={Expensicons.CheckSquare}
                     onPress={() => {
                         if (!isMobileSelectionModeEnabled) {
                             turnOnMobileSelectionMode();
diff --git a/src/components/MoneyRequestReportView/MoneyRequestReportView.tsx b/src/components/MoneyRequestReportView/MoneyRequestReportView.tsx
index 6d8d7bfaf07f..20871244f352 100644
--- a/src/components/MoneyRequestReportView/MoneyRequestReportView.tsx
+++ b/src/components/MoneyRequestReportView/MoneyRequestReportView.tsx
@@ -1,15 +1,11 @@
 import {PortalHost} from '@gorhom/portal';
 import React, {useCallback, useEffect, useMemo} from 'react';
-// We use Animated for all functionality related to wide RHP to make it easier
-// to interact with react-navigation components (e.g., CardContainer, interpolator), which also use Animated.
-// eslint-disable-next-line no-restricted-imports
-import {Animated, InteractionManager, ScrollView, View} from 'react-native';
+import {InteractionManager, View} from 'react-native';
 import type {OnyxEntry} from 'react-native-onyx';
 import HeaderGap from '@components/HeaderGap';
 import MoneyReportHeader from '@components/MoneyReportHeader';
 import MoneyRequestHeader from '@components/MoneyRequestHeader';
 import OfflineWithFeedback from '@components/OfflineWithFeedback';
-import MoneyRequestReceiptView from '@components/ReportActionItem/MoneyRequestReceiptView';
 import ReportActionsSkeletonView from '@components/ReportActionsSkeletonView';
 import ReportHeaderSkeletonView from '@components/ReportHeaderSkeletonView';
 import useNetwork from '@hooks/useNetwork';
@@ -17,7 +13,6 @@ import useNewTransactions from '@hooks/useNewTransactions';
 import useOnyx from '@hooks/useOnyx';
 import usePaginatedReportActions from '@hooks/usePaginatedReportActions';
 import useParentReportAction from '@hooks/useParentReportAction';
-import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useThemeStyles from '@hooks/useThemeStyles';
 import useTransactionsAndViolationsForReport from '@hooks/useTransactionsAndViolationsForReport';
 import {removeFailedReport} from '@libs/actions/Report';
@@ -62,16 +57,6 @@ function goBackFromSearchMoneyRequest() {
     const rootState = navigationRef.getRootState();
     const lastRoute = rootState.routes.at(-1);
 
-    if (!lastRoute) {
-        Log.hmmm('[goBackFromSearchMoneyRequest()] No last route found in root state.');
-        return;
-    }
-
-    if (lastRoute?.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR) {
-        Navigation.goBack();
-        return;
-    }
-
     if (lastRoute?.name !== NAVIGATORS.SEARCH_FULLSCREEN_NAVIGATOR) {
         Log.hmmm('[goBackFromSearchMoneyRequest()] goBackFromSearchMoneyRequest was called from a different navigator than SearchFullscreenNavigator.');
         return;
@@ -100,10 +85,6 @@ function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayRe
     const styles = useThemeStyles();
     const {isOffline} = useNetwork();
 
-    // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth
-    const {isSmallScreenWidth} = useResponsiveLayout();
-
-    const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {canBeMissing: false});
     const reportID = report?.reportID;
     const [isLoadingApp] = useOnyx(ONYXKEYS.IS_LOADING_APP, {canBeMissing: true});
     const [isComposerFullSize = false] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_IS_COMPOSER_FULL_SIZE}${reportID}`, {canBeMissing: true});
@@ -149,9 +130,6 @@ function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayRe
     const isEmptyTransactionReport = visibleTransactions && visibleTransactions.length === 0 && transactionThreadReportID === undefined;
     const shouldDisplayMoneyRequestActionsList = !!isEmptyTransactionReport || shouldDisplayReportTableView(report, visibleTransactions ?? []);
 
-    const [transactionThreadReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${transactionThreadReportID}`, {canBeMissing: true});
-    const shouldShowWideRHPReceipt = visibleTransactions.length === 1 && !isSmallScreenWidth && !!transactionThreadReport;
-
     const reportHeaderView = useMemo(
         () =>
             isTransactionThreadView ? (
@@ -239,62 +217,48 @@ function MoneyRequestReportView({report, policy, reportMetadata, shouldDisplayRe
             >
                 <HeaderGap />
                 {reportHeaderView}
-                <View style={[styles.flex1, styles.flexRow]}>
-                    {shouldShowWideRHPReceipt && (
-                        <Animated.View style={styles.wideRHPMoneyRequestReceiptViewContainer}>
-                            <ScrollView contentContainerStyle={styles.wideRHPMoneyRequestReceiptViewScrollViewContainer}>
-                                <MoneyRequestReceiptView
-                                    allReports={allReports}
-                                    report={transactionThreadReport}
-                                    fillSpace
-                                    isDisplayedInWideRHP
-                                />
-                            </ScrollView>
-                        </Animated.View>
+                <View style={[styles.overflowHidden, styles.justifyContentEnd, styles.flex1]}>
+                    {shouldDisplayMoneyRequestActionsList ? (
+                        <MoneyRequestReportActionsList
+                            report={report}
+                            policy={policy}
+                            transactions={visibleTransactions}
+                            hasPendingDeletionTransaction={hasPendingDeletionTransaction}
+                            newTransactions={newTransactions}
+                            reportActions={reportActions}
+                            violations={allReportViolations}
+                            hasOlderActions={hasOlderActions}
+                            hasNewerActions={hasNewerActions}
+                            showReportActionsLoadingState={isLoadingInitialReportActions && !reportMetadata?.hasOnceLoadedReportActions}
+                            reportPendingAction={reportPendingAction}
+                        />
+                    ) : (
+                        <ReportActionsView
+                            report={report}
+                            reportActions={reportActions}
+                            isLoadingInitialReportActions={reportMetadata?.isLoadingInitialReportActions}
+                            hasNewerActions={hasNewerActions}
+                            hasOlderActions={hasOlderActions}
+                            parentReportAction={parentReportAction}
+                            transactionThreadReportID={transactionThreadReportID}
+                        />
                     )}
-                    <View style={[styles.overflowHidden, styles.justifyContentEnd, styles.flex1]}>
-                        {shouldDisplayMoneyRequestActionsList ? (
-                            <MoneyRequestReportActionsList
+                    {shouldDisplayReportFooter ? (
+                        <>
+                            <ReportFooter
                                 report={report}
+                                reportMetadata={reportMetadata}
                                 policy={policy}
-                                transactions={visibleTransactions}
-                                hasPendingDeletionTransaction={hasPendingDeletionTransaction}
-                                newTransactions={newTransactions}
-                                reportActions={reportActions}
-                                violations={allReportViolations}
-                                hasOlderActions={hasOlderActions}
-                                hasNewerActions={hasNewerActions}
-                                showReportActionsLoadingState={isLoadingInitialReportActions && !reportMetadata?.hasOnceLoadedReportActions}
-                                reportPendingAction={reportPendingAction}
-                            />
-                        ) : (
-                            <ReportActionsView
-                                report={report}
-                                reportActions={reportActions}
-                                isLoadingInitialReportActions={reportMetadata?.isLoadingInitialReportActions}
-                                hasNewerActions={hasNewerActions}
-                                hasOlderActions={hasOlderActions}
-                                parentReportAction={parentReportAction}
-                                transactionThreadReportID={transactionThreadReportID}
+                                pendingAction={reportPendingAction}
+                                isComposerFullSize={!!isComposerFullSize}
+                                lastReportAction={lastReportAction}
+                                reportTransactions={transactions}
+                                // If the report is from the 'Send Money' flow, we add the comment to the `iou` report because for these we don't combine reportActions even if there is a single transaction (they always have a single transaction)
+                                transactionThreadReportID={isSentMoneyReport ? undefined : transactionThreadReportID}
                             />
-                        )}
-                        {shouldDisplayReportFooter ? (
-                            <>
-                                <ReportFooter
-                                    report={report}
-                                    reportMetadata={reportMetadata}
-                                    policy={policy}
-                                    pendingAction={reportPendingAction}
-                                    isComposerFullSize={!!isComposerFullSize}
-                                    lastReportAction={lastReportAction}
-                                    reportTransactions={transactions}
-                                    // If the report is from the 'Send Money' flow, we add the comment to the `iou` report because for these we don't combine reportActions even if there is a single transaction (they always have a single transaction)
-                                    transactionThreadReportID={isSentMoneyReport ? undefined : transactionThreadReportID}
-                                />
-                                <PortalHost name="suggestions" />
-                            </>
-                        ) : null}
-                    </View>
+                            <PortalHost name="suggestions" />
+                        </>
+                    ) : null}
                 </View>
             </OfflineWithFeedback>
         </View>
diff --git a/src/components/ParentNavigationSubtitle.tsx b/src/components/ParentNavigationSubtitle.tsx
index 1a76495535e0..b9dde7fdb0da 100644
--- a/src/components/ParentNavigationSubtitle.tsx
+++ b/src/components/ParentNavigationSubtitle.tsx
@@ -12,7 +12,7 @@ import useTheme from '@hooks/useTheme';
 import useThemeStyles from '@hooks/useThemeStyles';
 import {isFullScreenName} from '@libs/Navigation/helpers/isNavigatorName';
 import Navigation from '@libs/Navigation/Navigation';
-import type {SearchMoneyRequestReportParamList} from '@libs/Navigation/types';
+import type {SearchFullscreenNavigatorParamList} from '@libs/Navigation/types';
 import {getReportAction, shouldReportActionBeVisible} from '@libs/ReportActionsUtils';
 import {canUserPerformWriteAction as canUserPerformWriteActionReportUtils, isMoneyRequestReport} from '@libs/ReportUtils';
 import CONST from '@src/CONST';
@@ -91,23 +91,8 @@ function ParentNavigationSubtitle({
     const isReportArchived = useReportIsArchived(report?.reportID);
     const canUserPerformWriteAction = canUserPerformWriteActionReportUtils(report, isReportArchived);
     const isReportInRHP = currentRoute.name === SCREENS.SEARCH.REPORT_RHP;
+    const currentFullScreenRoute = useRootNavigationState((state) => state?.routes?.findLast((route) => isFullScreenName(route.name)));
     const hasAccessToParentReport = currentReport?.hasParentAccess !== false;
-    const {currentFullScreenRoute, currentFocusedNavigator} = useRootNavigationState((state) => {
-        const fullScreenRoute = state?.routes?.findLast((route) => isFullScreenName(route.name));
-
-        // We need to track which navigator is focused to handle parent report navigation correctly:
-        // if we are in RHP, and parent report is opened in RHP, we want to go back to the parent report
-        const focusedNavigator = state?.routes
-            ? state.routes.findLast((route) => {
-                  return route.state?.routes && route.state.routes.length > 0;
-              })
-            : undefined;
-
-        return {
-            currentFullScreenRoute: fullScreenRoute,
-            currentFocusedNavigator: focusedNavigator,
-        };
-    });
 
     // We should not display the parent navigation subtitle if the user does not have access to the parent chat (the reportName is empty in this case)
     if (!reportName) {
@@ -123,7 +108,7 @@ function ParentNavigationSubtitle({
             if (currentFullScreenRoute?.name === NAVIGATORS.SEARCH_FULLSCREEN_NAVIGATOR && isMoneyRequestReport(report)) {
                 const lastRoute = currentFullScreenRoute?.state?.routes.at(-1);
                 if (lastRoute?.name === SCREENS.SEARCH.MONEY_REQUEST_REPORT) {
-                    const moneyRequestReportID = (lastRoute?.params as SearchMoneyRequestReportParamList[typeof SCREENS.SEARCH.MONEY_REQUEST_REPORT])?.reportID;
+                    const moneyRequestReportID = (lastRoute?.params as SearchFullscreenNavigatorParamList[typeof SCREENS.SEARCH.MONEY_REQUEST_REPORT])?.reportID;
                     // If the parent report is already displayed underneath RHP, simply dismiss the modal
                     if (moneyRequestReportID === parentReportID) {
                         Navigation.dismissModal();
@@ -131,23 +116,6 @@ function ParentNavigationSubtitle({
                     }
                 }
 
-                const focusedNavigatorState = currentFocusedNavigator?.state;
-                const currentReportIndex = focusedNavigatorState?.index;
-                // Dismiss wide RHP and go back to already opened super wide RHP if the parent report is already opened there
-                if (currentFocusedNavigator?.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR && currentReportIndex && currentReportIndex > 0) {
-                    const previousRoute = focusedNavigatorState.routes[currentReportIndex - 1];
-
-                    if (previousRoute?.name === SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT) {
-                        const lastPreviousRoute = previousRoute.state?.routes.at(-1);
-                        const moneyRequestReportID = (lastPreviousRoute?.params as SearchMoneyRequestReportParamList[typeof SCREENS.SEARCH.MONEY_REQUEST_REPORT])?.reportID;
-
-                        if (moneyRequestReportID === parentReportID && lastPreviousRoute?.name === SCREENS.SEARCH.MONEY_REQUEST_REPORT) {
-                            Navigation.goBack();
-                            return;
-                        }
-                    }
-                }
-
                 Navigation.navigate(ROUTES.SEARCH_MONEY_REQUEST_REPORT.getRoute({reportID: parentReportID}));
                 return;
             }
@@ -161,28 +129,12 @@ function ParentNavigationSubtitle({
 
         // When viewing a money request in the search navigator, open the parent report in a right-hand pane (RHP)
         // to preserve the search context instead of navigating away.
-        if (openParentReportInCurrentTab && currentFocusedNavigator?.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR) {
-            const lastRoute = currentFocusedNavigator?.state?.routes.at(-1);
-            if (lastRoute?.name === SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT) {
+        if (openParentReportInCurrentTab && currentFullScreenRoute?.name === NAVIGATORS.SEARCH_FULLSCREEN_NAVIGATOR) {
+            const lastRoute = currentFullScreenRoute?.state?.routes.at(-1);
+            if (lastRoute?.name === SCREENS.SEARCH.MONEY_REQUEST_REPORT) {
                 Navigation.navigate(ROUTES.SEARCH_REPORT.getRoute({reportID: parentReportID, reportActionID: parentReportActionID}));
                 return;
             }
-
-            // Specific case: when opening expense report from search report (chat RHP),
-            // avoid stacking RHPs by going back to the search report if it's already there
-            const previousRoute = currentFocusedNavigator?.state?.routes.at(-2);
-
-            if (previousRoute?.name === SCREENS.RIGHT_MODAL.SEARCH_REPORT && lastRoute?.name === SCREENS.RIGHT_MODAL.EXPENSE_REPORT) {
-                const lastPreviousRoute = previousRoute.state?.routes.at(-1);
-                if (lastPreviousRoute?.name === SCREENS.SEARCH.REPORT_RHP && lastPreviousRoute.params && 'reportID' in lastPreviousRoute.params) {
-                    const reportIDFromParams = lastPreviousRoute.params.reportID;
-
-                    if (reportIDFromParams === parentReportID) {
-                        Navigation.goBack();
-                        return;
-                    }
-                }
-            }
         }
 
         if (isVisibleAction) {
diff --git a/src/components/ReportActionItem/MoneyRequestReceiptView.tsx b/src/components/ReportActionItem/MoneyRequestReceiptView.tsx
index e9778e58d0d6..576ca6c81206 100644
--- a/src/components/ReportActionItem/MoneyRequestReceiptView.tsx
+++ b/src/components/ReportActionItem/MoneyRequestReceiptView.tsx
@@ -163,7 +163,7 @@ function MoneyRequestReceiptView({
 
     const transactionToCheck = updatedTransaction ?? transaction;
     const doesTransactionHaveReceipt = !!transactionToCheck?.receipt && !isEmptyObject(transactionToCheck?.receipt);
-    const shouldShowReceiptEmptyState = !hasReceipt && !!transaction && !doesTransactionHaveReceipt;
+    const shouldShowReceiptEmptyState = !isInvoice && !hasReceipt && !!transaction && !doesTransactionHaveReceipt;
 
     const [receiptImageViolations, receiptViolations] = useMemo(() => {
         const imageViolations = [];
diff --git a/src/components/ReportActionItem/MoneyRequestReportPreview/MoneyRequestReportPreviewContent.tsx b/src/components/ReportActionItem/MoneyRequestReportPreview/MoneyRequestReportPreviewContent.tsx
index fec0de283a76..776fb12468ad 100644
--- a/src/components/ReportActionItem/MoneyRequestReportPreview/MoneyRequestReportPreviewContent.tsx
+++ b/src/components/ReportActionItem/MoneyRequestReportPreview/MoneyRequestReportPreviewContent.tsx
@@ -141,8 +141,7 @@ function MoneyRequestReportPreviewContent({
     const StyleUtils = useStyleUtils();
     const {translate, formatPhoneNumber} = useLocalize();
     const {isOffline} = useNetwork();
-    // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth
-    const {shouldUseNarrowLayout, isSmallScreenWidth} = useResponsiveLayout();
+    const {shouldUseNarrowLayout} = useResponsiveLayout();
     const currentUserDetails = useCurrentUserPersonalDetails();
     const expensifyIcons = useMemoizedLazyExpensifyIcons(['ArrowRight', 'BackArrow', 'Location'] as const);
 
@@ -488,14 +487,8 @@ function MoneyRequestReportPreviewContent({
             name: 'MoneyRequestReportPreviewContent',
             op: CONST.TELEMETRY.SPAN_OPEN_REPORT,
         });
-        // Small screens navigate to full report view since super wide RHP
-        // is not available on narrow layouts and would break the navigation logic.
-        if (isSmallScreenWidth) {
-            Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(iouReportID, undefined, undefined, Navigation.getActiveRoute()));
-        } else {
-            Navigation.navigate(ROUTES.EXPENSE_REPORT_RHP.getRoute({reportID: iouReportID, backTo: Navigation.getActiveRoute()}));
-        }
-    }, [iouReportID, isSmallScreenWidth]);
+        Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(iouReportID, undefined, undefined, Navigation.getActiveRoute()));
+    }, [iouReportID]);
 
     const reportPreviewAction = useMemo(() => {
         return getReportPreviewAction(
diff --git a/src/components/ReportActionItem/MoneyRequestReportPreview/index.tsx b/src/components/ReportActionItem/MoneyRequestReportPreview/index.tsx
index 6450b633cd89..e0cbaf0c33e3 100644
--- a/src/components/ReportActionItem/MoneyRequestReportPreview/index.tsx
+++ b/src/components/ReportActionItem/MoneyRequestReportPreview/index.tsx
@@ -41,8 +41,7 @@ function MoneyRequestReportPreview({
 }: MoneyRequestReportPreviewProps) {
     const styles = useThemeStyles();
     const StyleUtils = useStyleUtils();
-    // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth
-    const {shouldUseNarrowLayout, isSmallScreenWidth} = useResponsiveLayout();
+    const {shouldUseNarrowLayout} = useResponsiveLayout();
     const personalDetailsList = usePersonalDetails();
     const chatReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${chatReportID}`];
     const invoiceReceiverPolicy =
@@ -111,14 +110,8 @@ function MoneyRequestReportPreview({
             name: 'MoneyRequestReportPreview',
             op: CONST.TELEMETRY.SPAN_OPEN_REPORT,
         });
-        // Small screens navigate to full report view since super wide RHP
-        // is not available on narrow layouts and would break the navigation logic.
-        if (isSmallScreenWidth) {
-            Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(iouReportID, undefined, undefined, Navigation.getActiveRoute()));
-        } else {
-            Navigation.navigate(ROUTES.EXPENSE_REPORT_RHP.getRoute({reportID: iouReportID, backTo: Navigation.getActiveRoute()}));
-        }
-    }, [iouReportID, isSmallScreenWidth]);
+        Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(iouReportID, undefined, undefined, Navigation.getActiveRoute()));
+    }, [iouReportID]);
 
     const renderItem: ListRenderItem<Transaction> = ({item}) => (
         <TransactionPreview
diff --git a/src/components/Search/index.tsx b/src/components/Search/index.tsx
index 508b3f61b2cc..5c8482a536fb 100644
--- a/src/components/Search/index.tsx
+++ b/src/components/Search/index.tsx
@@ -283,9 +283,7 @@ function Search({
     const [violations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS, {canBeMissing: true});
     const {accountID, email} = useCurrentUserPersonalDetails();
     const [isActionLoadingSet = new Set<string>()] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_METADATA}`, {canBeMissing: true, selector: isActionLoadingSetSelector});
-
     const isExpenseReportType = type === CONST.SEARCH.DATA_TYPES.EXPENSE_REPORT;
-    const {markReportIDAsMultiTransactionExpense, unmarkReportIDAsMultiTransactionExpense} = useContext(WideRHPContext);
 
     // Filter violations based on user visibility
     const filteredViolations = useMemo(() => {
@@ -801,13 +799,6 @@ function Search({
                         setOptimisticDataForTransactionThreadPreview(firstTransaction, transactionPreviewData, firstTransaction?.reportAction?.childReportID);
                     }
                 }
-
-                if (item.transactions.length > 1) {
-                    markReportIDAsMultiTransactionExpense(reportID);
-                } else {
-                    unmarkReportIDAsMultiTransactionExpense(reportID);
-                }
-
                 requestAnimationFrame(() => Navigation.navigate(ROUTES.SEARCH_MONEY_REQUEST_REPORT.getRoute({reportID, backTo})));
                 return;
             }
@@ -826,16 +817,7 @@ function Search({
 
             requestAnimationFrame(() => Navigation.navigate(ROUTES.SEARCH_REPORT.getRoute({reportID, backTo})));
         },
-        [
-            isMobileSelectionModeEnabled,
-            markReportIDAsExpense,
-            toggleTransaction,
-            queryJSON,
-            handleSearch,
-            searchKey,
-            markReportIDAsMultiTransactionExpense,
-            unmarkReportIDAsMultiTransactionExpense,
-        ],
+        [isMobileSelectionModeEnabled, toggleTransaction, queryJSON, handleSearch, searchKey, markReportIDAsExpense],
     );
 
     const currentColumns = useMemo(() => {
diff --git a/src/components/SelectionListWithSections/SplitListItem.tsx b/src/components/SelectionListWithSections/SplitListItem.tsx
index 5c2b2161f235..a138ca5ddd71 100644
--- a/src/components/SelectionListWithSections/SplitListItem.tsx
+++ b/src/components/SelectionListWithSections/SplitListItem.tsx
@@ -1,5 +1,5 @@
-import React, {useCallback, useEffect, useRef} from 'react';
-import {InteractionManager, View} from 'react-native';
+import React, {useCallback, useLayoutEffect, useRef} from 'react';
+import {View} from 'react-native';
 import Icon from '@components/Icon';
 // eslint-disable-next-line no-restricted-imports
 import * as Expensicons from '@components/Icon/Expensicons';
@@ -72,19 +72,13 @@ function SplitListItem<TItem extends ListItem>({
     }, [onInputFocus, index]);
 
     // Auto-focus input when item is selected and screen transition ends
-    useEffect(() => {
-        if (!didScreenTransitionEnd || !splitItem.isSelected || !splitItem.isEditable || !inputRef.current) {
+    useLayoutEffect(() => {
+        if (!splitItem.isSelected || !splitItem.isEditable || !didScreenTransitionEnd || !inputRef.current) {
             return;
         }
 
-        // Use InteractionManager to ensure input focus happens after all animations/interactions complete.
-        // This prevents focus from interrupting modal close/open animations which would cause UI glitches
-        // and "jumping" behavior when quickly navigating between screens.
-        // eslint-disable-next-line @typescript-eslint/no-deprecated
-        InteractionManager.runAfterInteractions(() => {
-            inputRef.current?.focus();
-        });
-    }, [didScreenTransitionEnd, splitItem.isSelected, splitItem.isEditable]);
+        inputRef.current.focus();
+    }, [splitItem.isSelected, splitItem.isEditable, didScreenTransitionEnd]);
 
     const inputCallbackRef = (ref: BaseTextInputRef | null) => {
         inputRef.current = ref;
diff --git a/src/components/TransactionItemRow/ReceiptPreview/index.tsx b/src/components/TransactionItemRow/ReceiptPreview/index.tsx
index 2418d07af333..444bab895c4a 100644
--- a/src/components/TransactionItemRow/ReceiptPreview/index.tsx
+++ b/src/components/TransactionItemRow/ReceiptPreview/index.tsx
@@ -8,7 +8,7 @@ import DistanceEReceipt from '@components/DistanceEReceipt';
 import EReceiptWithSizeCalculation from '@components/EReceiptWithSizeCalculation';
 import type {ImageOnLoadEvent} from '@components/Image/types';
 import useDebouncedState from '@hooks/useDebouncedState';
-import useResponsiveLayoutOnWideRHP from '@hooks/useResponsiveLayoutOnWideRHP';
+import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useThemeStyles from '@hooks/useThemeStyles';
 import useWindowDimensions from '@hooks/useWindowDimensions';
 import {hasReceiptSource, isDistanceRequest, isManualDistanceRequest, isPerDiemRequest} from '@libs/TransactionUtils';
@@ -40,7 +40,7 @@ function ReceiptPreview({source, hovered, isEReceipt = false, transactionItem}:
     const [imageAspectRatio, setImageAspectRatio] = useState<string | number | undefined>(undefined);
     const [distanceEReceiptAspectRatio, setDistanceEReceiptAspectRatio] = useState<string | number | undefined>(undefined);
     const [shouldShow, debounceShouldShow, setShouldShow] = useDebouncedState(false, CONST.TIMING.SHOW_HOVER_PREVIEW_DELAY);
-    const {shouldUseNarrowLayout} = useResponsiveLayoutOnWideRHP();
+    const {shouldUseNarrowLayout} = useResponsiveLayout();
     const hasMeasured = useRef(false);
     const {windowHeight} = useWindowDimensions();
     const [isLoading, setIsLoading] = useState(true);
diff --git a/src/components/WideRHPContextProvider/WIDE_RIGHT_MODALS.ts b/src/components/WideRHPContextProvider/WIDE_RIGHT_MODALS.ts
deleted file mode 100644
index 504226d36265..000000000000
--- a/src/components/WideRHPContextProvider/WIDE_RIGHT_MODALS.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-// These sets contain the names of wide and super wide right modals.
-import SCREENS from '@src/SCREENS';
-
-// Wide right modals: modals that can be either wide or regular RHP size
-// Super wide right modals: modals that can be super wide size
-// All wide right modals: all modals that can be wide size (combination of wide and super wide)
-
-const WIDE_RIGHT_MODALS = new Set<string>([SCREENS.RIGHT_MODAL.SEARCH_REPORT]);
-const SUPER_WIDE_RIGHT_MODALS = new Set<string>([SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT, SCREENS.RIGHT_MODAL.EXPENSE_REPORT]);
-const ALL_WIDE_RIGHT_MODALS = new Set<string>([...WIDE_RIGHT_MODALS, ...SUPER_WIDE_RIGHT_MODALS]);
-
-export {WIDE_RIGHT_MODALS, SUPER_WIDE_RIGHT_MODALS, ALL_WIDE_RIGHT_MODALS};
diff --git a/src/components/WideRHPContextProvider/default.ts b/src/components/WideRHPContextProvider/default.ts
index 08b70c3a08f1..add24e5f1c90 100644
--- a/src/components/WideRHPContextProvider/default.ts
+++ b/src/components/WideRHPContextProvider/default.ts
@@ -2,9 +2,7 @@ import type {WideRHPContextType} from './types';
 
 const defaultWideRHPContextValue: WideRHPContextType = {
     wideRHPRouteKeys: [],
-    shouldRenderSecondaryOverlayForWideRHP: false,
-    shouldRenderSecondaryOverlayForRHPOnWideRHP: false,
-    shouldRenderSecondaryOverlayForRHPOnSuperWideRHP: false,
+    shouldRenderSecondaryOverlay: false,
     showWideRHPVersion: () => {},
     removeWideRHPRouteKey: () => {},
     markReportIDAsExpense: () => {},
@@ -12,12 +10,15 @@ const defaultWideRHPContextValue: WideRHPContextType = {
     unmarkReportIDAsMultiTransactionExpense: () => {},
     isReportIDMarkedAsExpense: () => false,
     isReportIDMarkedAsMultiTransactionExpense: () => false,
+    isWideRHPClosing: false,
+    setIsWideRHPClosing: () => {},
     isWideRHPFocused: false,
     shouldRenderTertiaryOverlay: false,
     superWideRHPRouteKeys: [],
     showSuperWideRHPVersion: () => {},
     removeSuperWideRHPRouteKey: () => {},
-    syncRHPKeys: () => {},
+    syncWideRHPKeys: () => {},
+    syncSuperWideRHPKeys: () => {},
     clearWideRHPKeys: () => {},
 };
 
diff --git a/src/components/WideRHPContextProvider/getIsRHPDisplayedBelow.ts b/src/components/WideRHPContextProvider/getIsRHPDisplayedBelow.ts
deleted file mode 100644
index a8ea22c43b40..000000000000
--- a/src/components/WideRHPContextProvider/getIsRHPDisplayedBelow.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import getVisibleRHPKeys from './getVisibleRHPRouteKeys';
-
-// Helper function to determine if wide or super wide RHP is displayed below the currently focused route
-export default function getIsRHPDisplayedBelow(focusedRouteKey: string | undefined, allSuperWideRHPRouteKeys: string[], allWideRHPRouteKeys: string[]) {
-    const {visibleSuperWideRHPRouteKeys, visibleWideRHPRouteKeys} = getVisibleRHPKeys(allSuperWideRHPRouteKeys, allWideRHPRouteKeys);
-
-    if (!focusedRouteKey) {
-        return {
-            isWideRHPBelow: false,
-            isSuperWideRHPBelow: false,
-        };
-    }
-
-    return {
-        isWideRHPBelow: visibleWideRHPRouteKeys.length > 0 && !visibleWideRHPRouteKeys.includes(focusedRouteKey),
-        isSuperWideRHPBelow: visibleSuperWideRHPRouteKeys.length > 0 && !visibleSuperWideRHPRouteKeys.includes(focusedRouteKey),
-    };
-}
diff --git a/src/components/WideRHPContextProvider/getIsWideRHPOpenedBelow.ts b/src/components/WideRHPContextProvider/getIsWideRHPOpenedBelow.ts
new file mode 100644
index 000000000000..0b69c05e2751
--- /dev/null
+++ b/src/components/WideRHPContextProvider/getIsWideRHPOpenedBelow.ts
@@ -0,0 +1,14 @@
+import type {NavigationRoute} from '@libs/Navigation/types';
+import getVisibleWideRHPKeys from './getVisibleRHPRouteKeys';
+
+function getIsWideRHPOpenedBelow(focusedRoute: NavigationRoute | undefined, allWideRHPKeys: string[]) {
+    // Shouldn't ever happen but for type safety
+    if (!focusedRoute?.key) {
+        return false;
+    }
+
+    const visibleWideRHPRouteKeys = getVisibleWideRHPKeys(allWideRHPKeys);
+    return visibleWideRHPRouteKeys.length > 0 && !visibleWideRHPRouteKeys.includes(focusedRoute.key);
+}
+
+export default getIsWideRHPOpenedBelow;
diff --git a/src/components/WideRHPContextProvider/getVisibleRHPRouteKeys.ts b/src/components/WideRHPContextProvider/getVisibleRHPRouteKeys.ts
index a34c3cb1ca83..de3740c3782c 100644
--- a/src/components/WideRHPContextProvider/getVisibleRHPRouteKeys.ts
+++ b/src/components/WideRHPContextProvider/getVisibleRHPRouteKeys.ts
@@ -2,61 +2,29 @@ import extractNavigationKeys from '@libs/Navigation/helpers/extractNavigationKey
 import getLastVisibleRHPRouteKey from '@libs/Navigation/helpers/getLastVisibleRHPRouteKey';
 import {navigationRef} from '@libs/Navigation/Navigation';
 
-type VisibleRHPKeys = {
-    visibleWideRHPRouteKeys: string[];
-    visibleSuperWideRHPRouteKeys: string[];
-};
-
 /**
  * Extracts the keys of the screens that are currently displayed from the array of all Wide/Super Wide RHP keys
  *
  * @param allWideRHPKeys - an array of all Wide/Super Wide RHP keys
  */
-function getVisibleRHPKeys(allSuperWideRHPKeys: string[], allWideRHPKeys: string[]): VisibleRHPKeys {
+function getVisibleWideRHPKeys(allWideRHPKeys: string[]) {
     const rootState = navigationRef.getRootState();
 
     if (!rootState) {
-        return {
-            visibleWideRHPRouteKeys: [],
-            visibleSuperWideRHPRouteKeys: [],
-        };
+        return [];
     }
 
     const lastVisibleRHPRouteKey = getLastVisibleRHPRouteKey(rootState);
     const lastRHPRoute = rootState.routes.find((route) => route.key === lastVisibleRHPRouteKey);
 
     if (!lastRHPRoute) {
-        return {
-            visibleWideRHPRouteKeys: [],
-            visibleSuperWideRHPRouteKeys: [],
-        };
+        return [];
     }
 
-    const superWideRHPIndex =
-        lastRHPRoute.state?.routes.findLastIndex((route) => {
-            const focusedRouteKey = route.state?.routes?.at(0)?.key;
-            return focusedRouteKey && allSuperWideRHPKeys.includes(focusedRouteKey);
-        }) ?? -1;
-
-    const wideRHPIndex =
-        lastRHPRoute.state?.routes.findLastIndex((route) => {
-            const focusedRouteKey = route.state?.routes?.at(0)?.key;
-            return focusedRouteKey && allWideRHPKeys.includes(focusedRouteKey);
-        }) ?? -1;
-
-    let visibleRHPKeys;
-    if (superWideRHPIndex > -1) {
-        visibleRHPKeys = extractNavigationKeys(lastRHPRoute.state?.routes.slice(superWideRHPIndex));
-    } else if (wideRHPIndex > -1) {
-        visibleRHPKeys = extractNavigationKeys(lastRHPRoute.state?.routes.slice(wideRHPIndex));
-    } else {
-        visibleRHPKeys = extractNavigationKeys(lastRHPRoute.state?.routes);
-    }
+    const lastRHPKeys = extractNavigationKeys(lastRHPRoute.state);
+    const currentKeys = allWideRHPKeys.filter((key) => lastRHPKeys.has(key));
 
-    return {
-        visibleWideRHPRouteKeys: allWideRHPKeys.filter((key) => visibleRHPKeys.has(key)),
-        visibleSuperWideRHPRouteKeys: allSuperWideRHPKeys.filter((key) => visibleRHPKeys.has(key)),
-    };
+    return currentKeys;
 }
 
-export default getVisibleRHPKeys;
+export default getVisibleWideRHPKeys;
diff --git a/src/components/WideRHPContextProvider/index.native.tsx b/src/components/WideRHPContextProvider/index.native.tsx
index 4e7d3ef8c494..fd00b173faa9 100644
--- a/src/components/WideRHPContextProvider/index.native.tsx
+++ b/src/components/WideRHPContextProvider/index.native.tsx
@@ -3,12 +3,11 @@ import React, {createContext} from 'react';
 // to interact with react-navigation components (e.g., CardContainer, interpolator), which also use Animated.
 // eslint-disable-next-line no-restricted-imports
 import {Animated} from 'react-native';
+import SCREENS from '@src/SCREENS';
 import defaultWideRHPContextValue from './default';
 import type {WideRHPContextType} from './types';
 
-const secondOverlayWideRHPProgress = new Animated.Value(0);
-const secondOverlayRHPOnWideRHPProgress = new Animated.Value(0);
-const secondOverlayRHPOnSuperWideRHPProgress = new Animated.Value(0);
+const secondOverlayProgress = new Animated.Value(0);
 const thirdOverlayProgress = new Animated.Value(0);
 
 const animatedReceiptPaneRHPWidth = new Animated.Value(0);
@@ -23,6 +22,10 @@ const innerRHPProgress = new Animated.Value(0);
 
 const WideRHPContext = createContext<WideRHPContextType>(defaultWideRHPContextValue);
 
+const WIDE_RIGHT_MODALS = new Set<string>([SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT, SCREENS.RIGHT_MODAL.EXPENSE_REPORT, SCREENS.RIGHT_MODAL.SEARCH_REPORT]);
+
+const SUPER_WIDE_RIGHT_MODALS = new Set<string>([SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT, SCREENS.RIGHT_MODAL.EXPENSE_REPORT]);
+
 function WideRHPContextProvider({children}: React.PropsWithChildren) {
     return <WideRHPContext.Provider value={defaultWideRHPContextValue}>{children}</WideRHPContext.Provider>;
 }
@@ -30,6 +33,7 @@ function WideRHPContextProvider({children}: React.PropsWithChildren) {
 WideRHPContextProvider.displayName = 'WideRHPContextProvider';
 
 export default WideRHPContextProvider;
+export type {WideRHPContextType};
 export {
     animatedReceiptPaneRHPWidth,
     animatedSuperWideRHPWidth,
@@ -38,10 +42,9 @@ export {
     innerRHPProgress,
     modalStackOverlaySuperWideRHPPositionLeft,
     modalStackOverlayWideRHPPositionLeft,
-    secondOverlayRHPOnSuperWideRHPProgress,
-    secondOverlayRHPOnWideRHPProgress,
-    secondOverlayWideRHPProgress,
+    secondOverlayProgress,
     thirdOverlayProgress,
     WideRHPContext,
+    WIDE_RIGHT_MODALS,
+    SUPER_WIDE_RIGHT_MODALS,
 };
-export type {WideRHPContextType};
diff --git a/src/components/WideRHPContextProvider/index.tsx b/src/components/WideRHPContextProvider/index.tsx
index b030bf0baf60..5d9ad18c84ca 100644
--- a/src/components/WideRHPContextProvider/index.tsx
+++ b/src/components/WideRHPContextProvider/index.tsx
@@ -13,21 +13,24 @@ import type {NavigationRoute} from '@libs/Navigation/types';
 import variables from '@styles/variables';
 import CONST from '@src/CONST';
 import ONYXKEYS from '@src/ONYXKEYS';
+import SCREENS from '@src/SCREENS';
 import type {Report} from '@src/types/onyx';
 import defaultWideRHPContextValue from './default';
-import getIsRHPDisplayedBelow from './getIsRHPDisplayedBelow';
-import getVisibleRHPKeys from './getVisibleRHPRouteKeys';
+import getIsWideRHPOpenedBelow from './getIsWideRHPOpenedBelow';
+import getVisibleWideRHPKeys from './getVisibleRHPRouteKeys';
 import type {WideRHPContextType} from './types';
 import useShouldRenderOverlay from './useShouldRenderOverlay';
 
 // 0 is folded/hidden, 1 is expanded/shown
 const expandedRHPProgress = new Animated.Value(0);
 const innerRHPProgress = new Animated.Value(0);
-const secondOverlayWideRHPProgress = new Animated.Value(0);
-const secondOverlayRHPOnWideRHPProgress = new Animated.Value(0);
-const secondOverlayRHPOnSuperWideRHPProgress = new Animated.Value(0);
+const secondOverlayProgress = new Animated.Value(0);
 const thirdOverlayProgress = new Animated.Value(0);
 
+// This array contains the names of wide and super wide right modals.
+const WIDE_RIGHT_MODALS = new Set<string>([SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT, SCREENS.RIGHT_MODAL.EXPENSE_REPORT, SCREENS.RIGHT_MODAL.SEARCH_REPORT]);
+const SUPER_WIDE_RIGHT_MODALS = new Set<string>([SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT, SCREENS.RIGHT_MODAL.EXPENSE_REPORT]);
+
 // The width of the left panel in Wide RHP where the receipt is displayed
 const receiptPaneRHPWidth = calculateReceiptPaneRHPWidth(Dimensions.get('window').width);
 
@@ -95,48 +98,52 @@ function WideRHPContextProvider({children}: React.PropsWithChildren) {
     const [expenseReportIDs, setExpenseReportIDs] = useState<Set<string>>(new Set());
     const [multiTransactionExpenseReportIDs, setMultiTransactionExpenseReportIDs] = useState<Set<string>>(new Set());
 
+    // When closing Wide RHP, it is no longer the focused screen, this variable helps to determine the moment when Wide RHP is still visible on the screen but no longer focused
+    const [isWideRHPClosing, setIsWideRHPClosing] = useState(false);
+
     const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {selector: expenseReportSelector, canBeMissing: true});
 
     const focusedRoute = useRootNavigationState((state) => (state ? findFocusedRoute(state) : undefined));
 
     const isWideRHPFocused = useMemo(() => {
-        return !!focusedRoute?.key && allWideRHPRouteKeys.includes(focusedRoute.key);
-    }, [focusedRoute?.key, allWideRHPRouteKeys]);
+        return !!focusedRoute?.key && wideRHPRouteKeys.includes(focusedRoute.key);
+    }, [focusedRoute?.key, wideRHPRouteKeys]);
 
     // Whether Wide RHP is displayed below the currently displayed screen
-    const {isWideRHPBelow, isSuperWideRHPBelow} = getIsRHPDisplayedBelow(focusedRoute?.key, allSuperWideRHPRouteKeys, allWideRHPRouteKeys);
+    const isWideRHPBelow = useMemo(() => getIsWideRHPOpenedBelow(focusedRoute, allWideRHPRouteKeys), [allWideRHPRouteKeys, focusedRoute]);
+
+    // Whether Super Wide RHP is displayed below the currently displayed screen
+    const isSuperWideRHPBelow = useMemo(() => getIsWideRHPOpenedBelow(focusedRoute, allSuperWideRHPRouteKeys), [allSuperWideRHPRouteKeys, focusedRoute]);
 
     // Updates the Wide RHP visible keys table from the all keys table
-    const syncRHPKeys = useCallback(() => {
-        const {visibleSuperWideRHPRouteKeys, visibleWideRHPRouteKeys} = getVisibleRHPKeys(allSuperWideRHPRouteKeys, allWideRHPRouteKeys);
-        setWideRHPRouteKeys(visibleWideRHPRouteKeys);
-        setSuperWideRHPRouteKeys(visibleSuperWideRHPRouteKeys);
-    }, [allSuperWideRHPRouteKeys, allWideRHPRouteKeys]);
+    const syncWideRHPKeys = useCallback(() => {
+        setWideRHPRouteKeys(getVisibleWideRHPKeys(allWideRHPRouteKeys));
+    }, [allWideRHPRouteKeys]);
+
+    // Updates the Super Wide RHP visible keys table from the all keys table
+    const syncSuperWideRHPKeys = useCallback(() => {
+        setSuperWideRHPRouteKeys(getVisibleWideRHPKeys(allSuperWideRHPRouteKeys));
+    }, [allSuperWideRHPRouteKeys]);
 
     const clearWideRHPKeys = useCallback(() => {
         setWideRHPRouteKeys([]);
         setSuperWideRHPRouteKeys([]);
     }, []);
 
-    // Once we have updated the array of all Super Wide RHP keys, we should sync it with the array of RHP keys visible on the screen
+    // Once we have updated the array of all Wide RHP keys, we should sync it with the array of RHP keys visible on the screen
     useEffect(() => {
-        syncRHPKeys();
-    }, [allSuperWideRHPRouteKeys, allWideRHPRouteKeys, syncRHPKeys]);
-
-    /**
-     * Effect that manages the secondary overlay animation for single RHP displayed on Super Wide RHP and rendering state.
-     */
-    const shouldRenderSecondaryOverlayForRHPOnSuperWideRHP = useShouldRenderOverlay(isSuperWideRHPBelow && !isWideRHPBelow && !isWideRHPFocused, secondOverlayRHPOnSuperWideRHPProgress);
+        syncWideRHPKeys();
+    }, [allWideRHPRouteKeys, syncWideRHPKeys]);
 
-    /**
-     * Effect that manages the secondary overlay animation for single RHP displayed on Wide RHP and rendering state.
-     */
-    const shouldRenderSecondaryOverlayForRHPOnWideRHP = useShouldRenderOverlay(isWideRHPBelow && !isWideRHPFocused, secondOverlayRHPOnWideRHPProgress);
+    // Once we have updated the array of all Super Wide RHP keys, we should sync it with the array of RHP keys visible on the screen
+    useEffect(() => {
+        syncSuperWideRHPKeys();
+    }, [allSuperWideRHPRouteKeys, syncSuperWideRHPKeys]);
 
     /**
-     * Effect that manages the secondary overlay animation for Wide RHP displayed on Super Wide RHP and rendering state.
+     * Effect that manages the secondary overlay animation and rendering state.
      */
-    const shouldRenderSecondaryOverlayForWideRHP = useShouldRenderOverlay(isSuperWideRHPBelow && (!!isWideRHPFocused || isWideRHPBelow), secondOverlayWideRHPProgress);
+    const shouldRenderSecondaryOverlay = useShouldRenderOverlay(isWideRHPBelow || isSuperWideRHPBelow, secondOverlayProgress);
 
     /**
      * Effect that manages the tertiary overlay animation and rendering state.
@@ -149,6 +156,7 @@ function WideRHPContextProvider({children}: React.PropsWithChildren) {
     useEffect(() => {
         const numberOfSuperWideRoutes = superWideRHPRouteKeys.length;
         const numberOfWideRoutes = wideRHPRouteKeys.length;
+
         if (numberOfSuperWideRoutes > 0) {
             expandedRHPProgress.setValue(2);
             innerRHPProgress.setValue(numberOfWideRoutes > 0 ? 1 : 0);
@@ -162,36 +170,24 @@ function WideRHPContextProvider({children}: React.PropsWithChildren) {
     }, [superWideRHPRouteKeys.length, wideRHPRouteKeys.length]);
 
     /**
-     * Removes a route from the super wide RHP route keys list, disabling wide RHP display for that route.
+     * Adds a route to the wide RHP route keys list, enabling wide RHP display for that route.
      */
-    const removeSuperWideRHPRouteKey = useCallback((route: NavigationRoute) => removeWideRHPRoute(route, setAllSuperWideRHPRouteKeys), []);
+    const showWideRHPVersion = useCallback((route: NavigationRoute) => showWideRHPRoute(route, setAllWideRHPRouteKeys), []);
 
     /**
-     * Removes a route from the wide RHP route keys list, disabling wide RHP display for that route.
+     * Adds a route to the super wide RHP route keys list, enabling wide RHP display for that route.
      */
-    const removeWideRHPRouteKey = useCallback((route: NavigationRoute) => removeWideRHPRoute(route, setAllWideRHPRouteKeys), []);
+    const showSuperWideRHPVersion = useCallback((route: NavigationRoute) => showWideRHPRoute(route, setAllSuperWideRHPRouteKeys), []);
 
     /**
-     * Adds a route to the wide RHP route keys list, enabling wide RHP display for that route.
+     * Removes a route from the super wide RHP route keys list, disabling wide RHP display for that route.
      */
-    const showWideRHPVersion = useCallback(
-        (route: NavigationRoute) => {
-            removeSuperWideRHPRouteKey(route);
-            showWideRHPRoute(route, setAllWideRHPRouteKeys);
-        },
-        [removeSuperWideRHPRouteKey],
-    );
+    const removeSuperWideRHPRouteKey = useCallback((route: NavigationRoute) => removeWideRHPRoute(route, setAllSuperWideRHPRouteKeys), []);
 
     /**
-     * Adds a route to the super wide RHP route keys list, enabling super wide RHP display for that route.
+     * Removes a route from the wide RHP route keys list, disabling wide RHP display for that route.
      */
-    const showSuperWideRHPVersion = useCallback(
-        (route: NavigationRoute) => {
-            removeWideRHPRouteKey(route);
-            showWideRHPRoute(route, setAllSuperWideRHPRouteKeys);
-        },
-        [removeWideRHPRouteKey],
-    );
+    const removeWideRHPRouteKey = useCallback((route: NavigationRoute) => removeWideRHPRoute(route, setAllWideRHPRouteKeys), []);
 
     /**
      * Marks a report ID as an expense report, adding it to the expense reports set.
@@ -301,9 +297,7 @@ function WideRHPContextProvider({children}: React.PropsWithChildren) {
             showSuperWideRHPVersion,
             removeWideRHPRouteKey,
             removeSuperWideRHPRouteKey,
-            shouldRenderSecondaryOverlayForRHPOnSuperWideRHP,
-            shouldRenderSecondaryOverlayForRHPOnWideRHP,
-            shouldRenderSecondaryOverlayForWideRHP,
+            shouldRenderSecondaryOverlay,
             shouldRenderTertiaryOverlay,
             markReportIDAsExpense,
             markReportIDAsMultiTransactionExpense,
@@ -311,7 +305,10 @@ function WideRHPContextProvider({children}: React.PropsWithChildren) {
             isReportIDMarkedAsExpense,
             isReportIDMarkedAsMultiTransactionExpense,
             isWideRHPFocused,
-            syncRHPKeys,
+            isWideRHPClosing,
+            setIsWideRHPClosing,
+            syncWideRHPKeys,
+            syncSuperWideRHPKeys,
             clearWideRHPKeys,
         }),
         [
@@ -321,9 +318,7 @@ function WideRHPContextProvider({children}: React.PropsWithChildren) {
             showSuperWideRHPVersion,
             removeWideRHPRouteKey,
             removeSuperWideRHPRouteKey,
-            shouldRenderSecondaryOverlayForRHPOnSuperWideRHP,
-            shouldRenderSecondaryOverlayForRHPOnWideRHP,
-            shouldRenderSecondaryOverlayForWideRHP,
+            shouldRenderSecondaryOverlay,
             shouldRenderTertiaryOverlay,
             markReportIDAsExpense,
             markReportIDAsMultiTransactionExpense,
@@ -331,7 +326,9 @@ function WideRHPContextProvider({children}: React.PropsWithChildren) {
             isReportIDMarkedAsExpense,
             isReportIDMarkedAsMultiTransactionExpense,
             isWideRHPFocused,
-            syncRHPKeys,
+            isWideRHPClosing,
+            syncWideRHPKeys,
+            syncSuperWideRHPKeys,
             clearWideRHPKeys,
         ],
     );
@@ -351,9 +348,9 @@ export {
     innerRHPProgress,
     modalStackOverlaySuperWideRHPPositionLeft,
     modalStackOverlayWideRHPPositionLeft,
-    secondOverlayWideRHPProgress,
-    secondOverlayRHPOnWideRHPProgress,
-    secondOverlayRHPOnSuperWideRHPProgress,
+    secondOverlayProgress,
+    SUPER_WIDE_RIGHT_MODALS,
     thirdOverlayProgress,
+    WIDE_RIGHT_MODALS,
     WideRHPContext,
 };
diff --git a/src/components/WideRHPContextProvider/types.ts b/src/components/WideRHPContextProvider/types.ts
index 76f6d2df7adc..9925c5a4aa1f 100644
--- a/src/components/WideRHPContextProvider/types.ts
+++ b/src/components/WideRHPContextProvider/types.ts
@@ -7,14 +7,8 @@ type WideRHPContextType = {
     // Route keys of screens that should be displayed in super wide format
     superWideRHPRouteKeys: string[];
 
-    // If the secondary overlay for wide RHP on super wide RHP should be rendered. This value takes into account the delay of closing transition.
-    shouldRenderSecondaryOverlayForWideRHP: boolean;
-
-    // If the secondary overlay for single RHP on wide RHP should be rendered. This value takes into account the delay of closing transition.
-    shouldRenderSecondaryOverlayForRHPOnWideRHP: boolean;
-
-    // If the secondary overlay for single RHP on super wide RHP should be rendered. This value takes into account the delay of closing transition.
-    shouldRenderSecondaryOverlayForRHPOnSuperWideRHP: boolean;
+    // If the secondary overlay should be rendered. This value takes into account the delay of closing transition.
+    shouldRenderSecondaryOverlay: boolean;
 
     // If the tertiary overlay should be rendered. This value takes into account the delay of closing transition.
     shouldRenderTertiaryOverlay: boolean;
@@ -49,8 +43,17 @@ type WideRHPContextType = {
     // Whether the currently focused route is inside the wide RHP set
     isWideRHPFocused: boolean;
 
-    // Sync super wide and wide RHP keys with the visible RHP screens
-    syncRHPKeys: () => void;
+    // Whether the wide rhp modal is closing
+    isWideRHPClosing: boolean;
+
+    // Mark that wide rhp is being closed
+    setIsWideRHPClosing: (isClosing: boolean) => void;
+
+    // Sync wide RHP keys with the visible RHP screens
+    syncWideRHPKeys: () => void;
+
+    // Sync super wide RHP keys with the visible RHP screens
+    syncSuperWideRHPKeys: () => void;
 
     // Clear the arrays of wide and super wide rhp keys
     clearWideRHPKeys: () => void;
diff --git a/src/components/WideRHPContextProvider/useShowWideRHPVersion/index.ts b/src/components/WideRHPContextProvider/useShowWideRHPVersion/index.ts
index 4955746560dc..f018f2171845 100644
--- a/src/components/WideRHPContextProvider/useShowWideRHPVersion/index.ts
+++ b/src/components/WideRHPContextProvider/useShowWideRHPVersion/index.ts
@@ -14,18 +14,25 @@ import {WideRHPContext} from '..';
 function useShowWideRHPVersion(condition: boolean) {
     const route = useRoute();
     const reportID = route.params && 'reportID' in route.params && typeof route.params.reportID === 'string' ? route.params.reportID : '';
-    const {showWideRHPVersion, removeWideRHPRouteKey, isReportIDMarkedAsExpense} = useContext(WideRHPContext);
+    const {showWideRHPVersion, removeWideRHPRouteKey, isReportIDMarkedAsExpense, setIsWideRHPClosing} = useContext(WideRHPContext);
+
+    // When switching between reports using the arrow keys, the transition is completed when the new report screen is mounted.
+    useEffect(() => {
+        setIsWideRHPClosing(false);
+    }, [setIsWideRHPClosing]);
 
     // beforeRemove event is not called when closing nested Wide RHP using the browser back button.
     // This hook removes the route key from the array in the following case.
     useEffect(() => () => removeWideRHPRouteKey(route), [removeWideRHPRouteKey, route]);
 
     const onWideRHPClose = useCallback(() => {
+        setIsWideRHPClosing(true);
         // eslint-disable-next-line @typescript-eslint/no-deprecated
         InteractionManager.runAfterInteractions(() => {
             removeWideRHPRouteKey(route);
+            setIsWideRHPClosing(false);
         });
-    }, [removeWideRHPRouteKey, route]);
+    }, [removeWideRHPRouteKey, route, setIsWideRHPClosing]);
 
     /**
      * Effect that sets up cleanup when the screen is about to be removed.
diff --git a/src/hooks/useResponsiveLayoutOnWideRHP/index.native.ts b/src/hooks/useResponsiveLayoutOnWideRHP/index.native.ts
deleted file mode 100644
index 505b966964c1..000000000000
--- a/src/hooks/useResponsiveLayoutOnWideRHP/index.native.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import useResponsiveLayout from '@hooks/useResponsiveLayout';
-import type ResponsiveLayoutOnWideRHPResult from './types';
-
-// Super Wide and Wide RHPs are not displayed on native platforms.
-export default function useResponsiveLayoutOnWideRHP(): ResponsiveLayoutOnWideRHPResult {
-    const responsiveLayoutValues = useResponsiveLayout();
-
-    return {
-        ...responsiveLayoutValues,
-        isWideRHPDisplayedOnWideLayout: false,
-        isSuperWideRHPDisplayedOnWideLayout: false,
-    };
-}
diff --git a/src/hooks/useResponsiveLayoutOnWideRHP/index.ts b/src/hooks/useResponsiveLayoutOnWideRHP/index.ts
deleted file mode 100644
index 8919d15bdfe6..000000000000
--- a/src/hooks/useResponsiveLayoutOnWideRHP/index.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import {useRoute} from '@react-navigation/native';
-import {useContext} from 'react';
-import {WideRHPContext} from '@components/WideRHPContextProvider';
-import useResponsiveLayout from '@hooks/useResponsiveLayout';
-import type ResponsiveLayoutOnWideRHPResult from './types';
-
-/**
- * useResponsiveLayoutOnWideRHP is a wrapper on useResponsiveLayout. shouldUseNarrowLayout on a wide screen is true when the screen is displayed in RHP.
- * In this hook this value is modified when the screen is displayed in Wide/Super Wide RHP, then in wide screen this value is false.
- */
-export default function useResponsiveLayoutOnWideRHP(): ResponsiveLayoutOnWideRHPResult {
-    const route = useRoute();
-
-    const responsiveLayoutValues = useResponsiveLayout();
-
-    // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth
-    const {isSmallScreenWidth, isInNarrowPaneModal} = responsiveLayoutValues;
-
-    const {superWideRHPRouteKeys, wideRHPRouteKeys} = useContext(WideRHPContext);
-
-    const isWideRHPDisplayedOnWideLayout = !isSmallScreenWidth && wideRHPRouteKeys.includes(route?.key);
-
-    const isSuperWideRHPDisplayedOnWideLayout = !isSmallScreenWidth && superWideRHPRouteKeys.includes(route?.key);
-
-    const shouldUseNarrowLayout = (isSmallScreenWidth || isInNarrowPaneModal) && !isSuperWideRHPDisplayedOnWideLayout && !isWideRHPDisplayedOnWideLayout;
-
-    return {
-        ...responsiveLayoutValues,
-        shouldUseNarrowLayout,
-        isWideRHPDisplayedOnWideLayout,
-        isSuperWideRHPDisplayedOnWideLayout,
-    };
-}
diff --git a/src/hooks/useResponsiveLayoutOnWideRHP/types.ts b/src/hooks/useResponsiveLayoutOnWideRHP/types.ts
deleted file mode 100644
index ca889fb4b263..000000000000
--- a/src/hooks/useResponsiveLayoutOnWideRHP/types.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import type ResponsiveLayoutResult from '@hooks/useResponsiveLayout/types';
-
-type ResponsiveLayoutOnWideRHPResult = ResponsiveLayoutResult & {
-    isWideRHPDisplayedOnWideLayout: boolean;
-    isSuperWideRHPDisplayedOnWideLayout: boolean;
-};
-
-export default ResponsiveLayoutOnWideRHPResult;
diff --git a/src/libs/Navigation/AppNavigator/AuthScreens.tsx b/src/libs/Navigation/AppNavigator/AuthScreens.tsx
index 50b2f73993ec..0c165af53842 100644
--- a/src/libs/Navigation/AppNavigator/AuthScreens.tsx
+++ b/src/libs/Navigation/AppNavigator/AuthScreens.tsx
@@ -155,8 +155,7 @@ function AuthScreens() {
     const {initialURL, isAuthenticatedAtStartup, setIsAuthenticatedAtStartup} = useContext(InitialURLContext);
     const modalCardStyleInterpolator = useModalCardStyleInterpolator();
     const archivedReportsIdSet = useArchivedReportsIdSet();
-    const {shouldRenderSecondaryOverlayForWideRHP, shouldRenderSecondaryOverlayForRHPOnWideRHP, shouldRenderSecondaryOverlayForRHPOnSuperWideRHP, shouldRenderTertiaryOverlay} =
-        useContext(WideRHPContext);
+    const {shouldRenderSecondaryOverlay, shouldRenderTertiaryOverlay} = useContext(WideRHPContext);
 
     // State to track whether the delegator's authentication is completed before displaying data
     const [isDelegatorFromOldDotIsReady, setIsDelegatorFromOldDotIsReady] = useState(false);
@@ -343,23 +342,13 @@ function AuthScreens() {
                     return;
                 }
 
-                if (shouldRenderSecondaryOverlayForWideRHP) {
-                    Navigation.closeRHPFlow();
-                    return;
-                }
-
-                if (shouldRenderSecondaryOverlayForRHPOnSuperWideRHP) {
-                    Navigation.dismissToSuperWideRHP();
-                    return;
-                }
-
-                if (shouldRenderSecondaryOverlayForRHPOnWideRHP) {
-                    Navigation.dismissToPreviousRHP();
+                if (shouldRenderSecondaryOverlay) {
+                    Navigation.dismissToFirstRHP();
                     return;
                 }
 
                 if (shouldRenderTertiaryOverlay) {
-                    Navigation.dismissToPreviousRHP();
+                    Navigation.dismissToSecondRHP();
                     return;
                 }
 
@@ -371,14 +360,7 @@ function AuthScreens() {
             true,
         );
         return () => unsubscribeEscapeKey();
-    }, [
-        modal?.disableDismissOnEscape,
-        modal?.willAlertModalBecomeVisible,
-        shouldRenderSecondaryOverlayForWideRHP,
-        shouldRenderSecondaryOverlayForRHPOnWideRHP,
-        shouldRenderSecondaryOverlayForRHPOnSuperWideRHP,
-        shouldRenderTertiaryOverlay,
-    ]);
+    }, [modal?.disableDismissOnEscape, modal?.willAlertModalBecomeVisible, shouldRenderSecondaryOverlay, shouldRenderTertiaryOverlay]);
 
     // Animation is disabled when navigating to the sidebar screen
     const getWorkspaceOrDomainSplitNavigatorOptions = ({route}: {route: RouteProp<AuthScreensParamList>}) => {
diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx
index cf99a87b6dad..4d664d831c9c 100644
--- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx
+++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx
@@ -1,21 +1,18 @@
-import {useFocusEffect, useRoute} from '@react-navigation/native';
+import {useIsFocused, useRoute} from '@react-navigation/native';
 import type {ParamListBase} from '@react-navigation/routers';
-import React, {useCallback, useContext} from 'react';
+import React, {useCallback, useContext, useMemo} from 'react';
 import {View} from 'react-native';
 import {
     animatedReceiptPaneRHPWidth,
     modalStackOverlaySuperWideRHPPositionLeft,
     modalStackOverlayWideRHPPositionLeft,
-    secondOverlayRHPOnSuperWideRHPProgress,
-    secondOverlayRHPOnWideRHPProgress,
-    secondOverlayWideRHPProgress,
+    secondOverlayProgress,
     thirdOverlayProgress,
     WideRHPContext,
 } from '@components/WideRHPContextProvider';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useThemeStyles from '@hooks/useThemeStyles';
 import Overlay from '@libs/Navigation/AppNavigator/Navigators/Overlay';
-import {navigationRef} from '@libs/Navigation/Navigation';
 import createPlatformStackNavigator from '@libs/Navigation/PlatformStackNavigation/createPlatformStackNavigator';
 import Animations from '@libs/Navigation/PlatformStackNavigation/navigationOptions/animation';
 import type {PlatformStackNavigationOptions} from '@libs/Navigation/PlatformStackNavigation/types';
@@ -26,7 +23,6 @@ import type {
     DebugParamList,
     EditRequestNavigatorParamList,
     EnablePaymentsNavigatorParamList,
-    ExpenseReportNavigatorParamList,
     FlagCommentNavigatorParamList,
     MergeTransactionNavigatorParamList,
     MissingPersonalDetailsParamList,
@@ -48,7 +44,6 @@ import type {
     RoomMembersNavigatorParamList,
     ScheduleCallParamList,
     SearchAdvancedFiltersParamList,
-    SearchMoneyRequestReportParamList,
     SearchReportActionsParamList,
     SearchReportParamList,
     SearchSavedSearchParamList,
@@ -65,7 +60,6 @@ import type {
     WorkspaceDuplicateNavigatorParamList,
     WorkspacesDomainModalNavigatorParamList,
 } from '@navigation/types';
-import NAVIGATORS from '@src/NAVIGATORS';
 import type {Screen} from '@src/SCREENS';
 import SCREENS from '@src/SCREENS';
 import type ReactComponentModule from '@src/types/utils/ReactComponentModule';
@@ -113,78 +107,6 @@ function isWideRHPRouteName(routeName: string) {
     return routeName === SCREENS.RIGHT_MODAL.SEARCH_REPORT;
 }
 
-function getModalStackLastRoute(modalStackRouteKey: string) {
-    const rootState = navigationRef.getRootState();
-    const lastRHPState = rootState?.routes?.findLast((route) => route.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR)?.state;
-    const modalStackRoute = lastRHPState?.routes?.find((innerRoute) => innerRoute.key === modalStackRouteKey);
-    return modalStackRoute?.state?.routes?.at(-1)?.key;
-}
-
-function SecondaryOverlay() {
-    const {shouldRenderSecondaryOverlayForRHPOnSuperWideRHP, shouldRenderSecondaryOverlayForRHPOnWideRHP, shouldRenderSecondaryOverlayForWideRHP, superWideRHPRouteKeys, wideRHPRouteKeys} =
-        useContext(WideRHPContext);
-    const modalStackRoute = useRoute();
-    const routeKey = getModalStackLastRoute(modalStackRoute?.key);
-
-    const isWide = !!routeKey && wideRHPRouteKeys.includes(routeKey);
-    const isSuperWide = !!routeKey && superWideRHPRouteKeys.includes(routeKey);
-
-    const isRHPDisplayedOnWideRHP = shouldRenderSecondaryOverlayForRHPOnWideRHP && isWide;
-
-    const isRHPDisplayedOnSuperWideRHP = shouldRenderSecondaryOverlayForRHPOnSuperWideRHP && isSuperWide;
-
-    const isWideRHPDisplayedOnSuperWideRHP = shouldRenderSecondaryOverlayForWideRHP && isSuperWide;
-
-    if (isRHPDisplayedOnWideRHP) {
-        return (
-            <Overlay
-                progress={secondOverlayRHPOnWideRHPProgress}
-                // If RHP is displayed on Wide RHP which is displayed above the Super Wide RHP, the secondary overlay's position left should be calculated from the left edge of the super wide RHP.
-                positionLeftValue={superWideRHPRouteKeys.length > 0 ? modalStackOverlayWideRHPPositionLeft : animatedReceiptPaneRHPWidth}
-            />
-        );
-    }
-
-    if (isWideRHPDisplayedOnSuperWideRHP) {
-        return (
-            <Overlay
-                progress={secondOverlayWideRHPProgress}
-                positionLeftValue={modalStackOverlayWideRHPPositionLeft}
-            />
-        );
-    }
-
-    if (isRHPDisplayedOnSuperWideRHP) {
-        return (
-            <Overlay
-                progress={secondOverlayRHPOnSuperWideRHPProgress}
-                positionLeftValue={modalStackOverlaySuperWideRHPPositionLeft}
-            />
-        );
-    }
-
-    return null;
-}
-
-function TertiaryOverlay() {
-    const {shouldRenderTertiaryOverlay, wideRHPRouteKeys} = useContext(WideRHPContext);
-    const modalStackRoute = useRoute();
-    const routeKey = getModalStackLastRoute(modalStackRoute?.key);
-
-    const isWide = routeKey && wideRHPRouteKeys.includes(routeKey);
-
-    if (isWide && shouldRenderTertiaryOverlay) {
-        return (
-            <Overlay
-                progress={thirdOverlayProgress}
-                positionLeftValue={modalStackOverlaySuperWideRHPPositionLeft}
-            />
-        );
-    }
-
-    return null;
-}
-
 /**
  * Create a modal stack navigator with an array of sub-screens.
  *
@@ -196,29 +118,10 @@ function createModalStackNavigator<ParamList extends ParamListBase>(screens: Scr
     function ModalStack() {
         const styles = useThemeStyles();
         const screenOptions = useModalStackScreenOptions();
-        const {syncRHPKeys} = useContext(WideRHPContext);
+        const {shouldRenderSecondaryOverlay, shouldRenderTertiaryOverlay, isWideRHPFocused, superWideRHPRouteKeys, isWideRHPClosing} = useContext(WideRHPContext);
         const route = useRoute();
 
-        // This hook handles the case when a wider RHP is displayed above a narrower one.
-        // In this situation, we need to synchronize the keys, as superWideRHPKeys and wideRHPKeys store the keys of the screens that are visible.
-        useFocusEffect(
-            useCallback(
-                () => () => {
-                    if (!isWideRHPRouteName(route.name) && !isSuperWideRHPRouteName(route.name)) {
-                        return;
-                    }
-
-                    // Synchronization after RHP unmount is handled in RightModalNavigator.tsx.
-                    const isRHPOpened = navigationRef?.getRootState()?.routes?.at(-1)?.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR;
-                    if (!isRHPOpened) {
-                        return;
-                    }
-
-                    syncRHPKeys();
-                },
-                [route.name, syncRHPKeys],
-            ),
-        );
+        const isFocused = useIsFocused();
 
         // We have to use the isSmallScreenWidth instead of shouldUseNarrow layout, because we want to have information about screen width without the context of side modal.
         // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth
@@ -235,6 +138,16 @@ function createModalStackNavigator<ParamList extends ParamListBase>(screens: Scr
             [screenOptions],
         );
 
+        const isRHPDisplayedOnWideRHP = useMemo(
+            () => !isSmallScreenWidth && !isWideRHPFocused && !isWideRHPClosing && shouldRenderSecondaryOverlay && (isSuperWideRHPRouteName(route.name) || isWideRHPRouteName(route.name)),
+            [isSmallScreenWidth, isWideRHPClosing, isWideRHPFocused, route.name, shouldRenderSecondaryOverlay],
+        );
+
+        const isWideRHPDisplayedOnSuperWideRHP = useMemo(
+            () => !isSmallScreenWidth && !isFocused && !!isWideRHPFocused && shouldRenderSecondaryOverlay && isSuperWideRHPRouteName(route.name),
+            [isFocused, isSmallScreenWidth, isWideRHPFocused, route.name, shouldRenderSecondaryOverlay],
+        );
+
         return (
             // This container is necessary to hide card translation during transition. Without it the user would see un-clipped cards.
             <View style={[styles.modalStackNavigatorContainer, styles.modalStackNavigatorContainerWidth(isSmallScreenWidth)]}>
@@ -254,14 +167,29 @@ function createModalStackNavigator<ParamList extends ParamListBase>(screens: Scr
                 {/* The width of the window for which we calculate the overlay positions is the width of the RHP window, for example for Super Wide RHP it will be 1260 px on a wide layout. */}
                 {/* We need to move the overlay left from the left edge of the RHP below to the left edge of the RHP above. */}
                 {/* To calculate this, subtract the width of the widest RHP from the width of the RHP above. */}
-                {/* Three cases were described for the secondary overlay: */}
-                {/* 1. Single RHP is displayed on Wide RHP */}
-                {/* 2. Single RHP is displayed on Super Wide RHP */}
-                {/* 3. Wide RHP is displayed on Super Wide RHP route. */}
+                {/* Two cases were described for the secondary overlay: */}
+                {/* 1. Single RHP is displayed on Wide RHP (Super Wide or Wide) - here we additionally check the length of superWideRHPRouteKeys because Super Wide RHP route can also be displayed in Wide RHP when the number of visible transactions is less than 2.  */}
+                {/* 2. Wide RHP is displayed on Super Wide RHP route. */}
                 {/* Please note that in these cases, the overlay is rendered from the RHP screen displayed below. For example, if we display RHP on Wide RHP, the secondary overlay is rendered from Wide RHP, etc. */}
                 {/* There is also a special case where three different RHP widths are displayed at the same time. In this case, an overlay under RHP should be rendered from Wide RHP. */}
-                {!isSmallScreenWidth && <SecondaryOverlay />}
-                {!isSmallScreenWidth && <TertiaryOverlay />}
+                {isRHPDisplayedOnWideRHP ? (
+                    <Overlay
+                        progress={secondOverlayProgress}
+                        positionLeftValue={superWideRHPRouteKeys.length > 0 ? modalStackOverlaySuperWideRHPPositionLeft : animatedReceiptPaneRHPWidth}
+                    />
+                ) : null}
+                {isWideRHPDisplayedOnSuperWideRHP ? (
+                    <Overlay
+                        progress={secondOverlayProgress}
+                        positionLeftValue={modalStackOverlayWideRHPPositionLeft}
+                    />
+                ) : null}
+                {!isSmallScreenWidth && shouldRenderTertiaryOverlay && isWideRHPRouteName(route.name) ? (
+                    <Overlay
+                        progress={thirdOverlayProgress}
+                        positionLeftValue={modalStackOverlaySuperWideRHPPositionLeft}
+                    />
+                ) : null}
             </View>
         );
     }
@@ -996,11 +924,6 @@ const SearchReportModalStackNavigator = createModalStackNavigator<SearchReportPa
     [SCREENS.SEARCH.REPORT_RHP]: () => require<ReactComponentModule>('../../../../pages/home/ReportScreen').default,
 });
 
-// // This navigator is reserved for the screen that can be displayed as Super Wide RHP, other screens should not be added here.
-const SearchMoneyRequestReportModalStackNavigator = createModalStackNavigator<SearchMoneyRequestReportParamList>({
-    [SCREENS.SEARCH.MONEY_REQUEST_REPORT]: () => require<ReactComponentModule>('../../../../pages/Search/SearchMoneyRequestReportPage').default,
-});
-
 const SearchAdvancedFiltersModalStackNavigator = createModalStackNavigator<SearchAdvancedFiltersParamList>({
     [SCREENS.SEARCH.ADVANCED_FILTERS_RHP]: () => require<ReactComponentModule>('../../../../pages/Search/SearchAdvancedFiltersPage').default,
     [SCREENS.SEARCH.ADVANCED_FILTERS_TYPE_RHP]: () => require<ReactComponentModule>('../../../../pages/Search/SearchAdvancedFiltersPage/SearchFiltersTypePage').default,
@@ -1085,10 +1008,6 @@ const ScheduleCallModalStackNavigator = createModalStackNavigator<ScheduleCallPa
     [SCREENS.SCHEDULE_CALL.CONFIRMATION]: () => require<ReactComponentModule>('../../../../pages/ScheduleCall/ScheduleCallConfirmationPage').default,
 });
 
-const ExpenseReportModalStackNavigator = createModalStackNavigator<ExpenseReportNavigatorParamList>({
-    [SCREENS.EXPENSE_REPORT_RHP]: () => require<ReactComponentModule>('../../../../pages/Search/SearchMoneyRequestReportPage').default,
-});
-
 const WorkspacesDomainModalStackNavigator = createModalStackNavigator<WorkspacesDomainModalNavigatorParamList>({
     [SCREENS.WORKSPACES_VERIFY_DOMAIN]: () => require<ReactComponentModule>('../../../../pages/domain/WorkspacesVerifyDomainPage').default,
     [SCREENS.WORKSPACES_DOMAIN_VERIFIED]: () => require<ReactComponentModule>('../../../../pages/domain/WorkspacesDomainVerifiedPage').default,
@@ -1131,6 +1050,7 @@ export {
     ReportVerifyAccountModalStackNavigator,
     WalletStatementStackNavigator,
     TransactionDuplicateStackNavigator,
+    SearchReportActionsModalStackNavigator,
     SearchReportModalStackNavigator,
     RestrictedActionModalStackNavigator,
     SearchAdvancedFiltersModalStackNavigator,
@@ -1146,7 +1066,4 @@ export {
     MergeTransactionStackNavigator,
     ReportCardActivateStackNavigator,
     WorkspacesDomainModalStackNavigator,
-    SearchMoneyRequestReportModalStackNavigator,
-    ExpenseReportModalStackNavigator,
-    SearchReportActionsModalStackNavigator,
 };
diff --git a/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx b/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx
index bd841d4af960..597293716f4b 100644
--- a/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx
+++ b/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx
@@ -1,20 +1,11 @@
 import type {NavigatorScreenParams} from '@react-navigation/native';
-import {useFocusEffect, useIsFocused} from '@react-navigation/native';
+import {useFocusEffect} from '@react-navigation/native';
 import type {StackCardInterpolationProps} from '@react-navigation/stack';
 import React, {useCallback, useContext, useEffect, useMemo, useRef} from 'react';
 // eslint-disable-next-line no-restricted-imports
 import {Animated, DeviceEventEmitter, InteractionManager} from 'react-native';
 import NoDropZone from '@components/DragAndDrop/NoDropZone';
-import {
-    animatedWideRHPWidth,
-    expandedRHPProgress,
-    innerRHPProgress,
-    secondOverlayRHPOnSuperWideRHPProgress,
-    secondOverlayRHPOnWideRHPProgress,
-    secondOverlayWideRHPProgress,
-    thirdOverlayProgress,
-    WideRHPContext,
-} from '@components/WideRHPContextProvider';
+import {animatedWideRHPWidth, expandedRHPProgress, innerRHPProgress, secondOverlayProgress, thirdOverlayProgress, WideRHPContext} from '@components/WideRHPContextProvider';
 import useResponsiveLayout from '@hooks/useResponsiveLayout';
 import useThemeStyles from '@hooks/useThemeStyles';
 import useWindowDimensions from '@hooks/useWindowDimensions';
@@ -45,54 +36,16 @@ const Stack = createPlatformStackNavigator<RightModalNavigatorParamList, string>
 const singleRHPWidth = variables.sideBarWidth;
 const getWideRHPWidth = (windowWidth: number) => variables.sideBarWidth + calculateReceiptPaneRHPWidth(windowWidth);
 
-function SecondaryOverlay() {
-    const {shouldRenderSecondaryOverlayForWideRHP, shouldRenderSecondaryOverlayForRHPOnWideRHP, shouldRenderSecondaryOverlayForRHPOnSuperWideRHP} = useContext(WideRHPContext);
-
-    if (shouldRenderSecondaryOverlayForWideRHP) {
-        return (
-            <Overlay
-                progress={secondOverlayWideRHPProgress}
-                positionRightValue={animatedWideRHPWidth}
-                onPress={() => Navigation.closeRHPFlow()}
-            />
-        );
-    }
-
-    if (shouldRenderSecondaryOverlayForRHPOnWideRHP) {
-        return (
-            <Overlay
-                progress={secondOverlayRHPOnWideRHPProgress}
-                positionRightValue={variables.sideBarWidth}
-                onPress={Navigation.dismissToPreviousRHP}
-            />
-        );
-    }
-
-    if (shouldRenderSecondaryOverlayForRHPOnSuperWideRHP) {
-        return (
-            <Overlay
-                progress={secondOverlayRHPOnSuperWideRHPProgress}
-                positionRightValue={variables.sideBarWidth}
-                onPress={Navigation.dismissToSuperWideRHP}
-            />
-        );
-    }
-
-    return null;
-}
-
 function RightModalNavigator({navigation, route}: RightModalNavigatorProps) {
     // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth
     const {shouldUseNarrowLayout, isSmallScreenWidth} = useResponsiveLayout();
     const isExecutingRef = useRef<boolean>(false);
     const screenOptions = useRHPScreenOptions();
-    const {shouldRenderTertiaryOverlay, clearWideRHPKeys, syncRHPKeys} = useContext(WideRHPContext);
+    const {shouldRenderSecondaryOverlay, isWideRHPFocused, shouldRenderTertiaryOverlay, isWideRHPClosing, clearWideRHPKeys, syncWideRHPKeys, syncSuperWideRHPKeys} =
+        useContext(WideRHPContext);
     const {windowWidth} = useWindowDimensions();
     const modalCardStyleInterpolator = useModalCardStyleInterpolator();
     const styles = useThemeStyles();
-    const isFocused = useIsFocused();
-
-    const shouldDisplayOverlay = useMemo(() => isFocused && !shouldUseNarrowLayout, [isFocused, shouldUseNarrowLayout]);
 
     const animatedWidth = expandedRHPProgress.interpolate({
         inputRange: [0, 1, 2],
@@ -151,12 +104,11 @@ function RightModalNavigator({navigation, route}: RightModalNavigatorProps) {
 
     useFocusEffect(
         useCallback(() => {
-            // When we open a second RightModalNavigator while the previous one is covered by a fullscreen navigator, we need to synchronize the keys.
-            syncRHPKeys();
+            syncWideRHPKeys();
+            syncSuperWideRHPKeys();
 
-            // Super wide and wide route keys have to be cleared when the RightModalNavigator is not closed and a new navigator is opened above it.
             return () => clearWideRHPKeysAfterTabChanged();
-        }, [syncRHPKeys, clearWideRHPKeysAfterTabChanged]),
+        }, [syncWideRHPKeys, syncSuperWideRHPKeys, clearWideRHPKeysAfterTabChanged]),
     );
 
     useEffect(() => () => DeviceEventEmitter.emit(CONST.MODAL_EVENTS.CLOSED), []);
@@ -164,7 +116,7 @@ function RightModalNavigator({navigation, route}: RightModalNavigatorProps) {
     return (
         <NarrowPaneContextProvider>
             <NoDropZone>
-                {shouldDisplayOverlay && (
+                {!shouldUseNarrowLayout && (
                     <Overlay
                         positionLeftValue={overlayPositionLeft}
                         onPress={handleOverlayPress}
@@ -357,10 +309,6 @@ function RightModalNavigator({navigation, route}: RightModalNavigatorProps) {
                                 },
                             }}
                         />
-                        <Stack.Screen
-                            name={SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT}
-                            component={ModalStackNavigators.SearchMoneyRequestReportModalStackNavigator}
-                        />
                         <Stack.Screen
                             name={SCREENS.RIGHT_MODAL.RESTRICTED_ACTION}
                             component={ModalStackNavigators.RestrictedActionModalStackNavigator}
@@ -385,10 +333,6 @@ function RightModalNavigator({navigation, route}: RightModalNavigatorProps) {
                             name={SCREENS.RIGHT_MODAL.SCHEDULE_CALL}
                             component={ModalStackNavigators.ScheduleCallModalStackNavigator}
                         />
-                        <Stack.Screen
-                            name={SCREENS.RIGHT_MODAL.EXPENSE_REPORT}
-                            component={ModalStackNavigators.ExpenseReportModalStackNavigator}
-                        />
                         <Stack.Screen
                             name={SCREENS.RIGHT_MODAL.DOMAIN}
                             component={ModalStackNavigators.WorkspacesDomainModalStackNavigator}
@@ -398,12 +342,25 @@ function RightModalNavigator({navigation, route}: RightModalNavigatorProps) {
                 {/* The third and second overlays are displayed here to cover RHP screens wider than the currently focused screen. */}
                 {/* Clicking on these overlays redirects you to the RHP screen below them. */}
                 {/* The width of these overlays is equal to the width of the screen minus the width of the currently focused RHP screen (positionRightValue) */}
-                {shouldDisplayOverlay && <SecondaryOverlay />}
-                {shouldRenderTertiaryOverlay && shouldDisplayOverlay && (
+                {shouldRenderSecondaryOverlay && !shouldUseNarrowLayout && !isWideRHPFocused && !isWideRHPClosing && (
+                    <Overlay
+                        progress={secondOverlayProgress}
+                        positionRightValue={variables.sideBarWidth}
+                        onPress={Navigation.dismissToFirstRHP}
+                    />
+                )}
+                {shouldRenderSecondaryOverlay && !shouldUseNarrowLayout && !!isWideRHPFocused && (
+                    <Overlay
+                        progress={secondOverlayProgress}
+                        positionRightValue={animatedWideRHPWidth}
+                        onPress={Navigation.dismissToFirstRHP}
+                    />
+                )}
+                {shouldRenderTertiaryOverlay && !shouldUseNarrowLayout && (
                     <Overlay
                         progress={thirdOverlayProgress}
                         positionRightValue={variables.sideBarWidth}
-                        onPress={Navigation.dismissToPreviousRHP}
+                        onPress={Navigation.dismissToSecondRHP}
                     />
                 )}
             </NoDropZone>
diff --git a/src/libs/Navigation/AppNavigator/Navigators/SearchFullscreenNavigator.tsx b/src/libs/Navigation/AppNavigator/Navigators/SearchFullscreenNavigator.tsx
index f988fae0a49e..437208bd36db 100644
--- a/src/libs/Navigation/AppNavigator/Navigators/SearchFullscreenNavigator.tsx
+++ b/src/libs/Navigation/AppNavigator/Navigators/SearchFullscreenNavigator.tsx
@@ -12,6 +12,7 @@ import SCREENS from '@src/SCREENS';
 import type ReactComponentModule from '@src/types/utils/ReactComponentModule';
 
 const loadSearchPage = () => require<ReactComponentModule>('@pages/Search/SearchPage').default;
+const loadSearchMoneyReportPage = () => require<ReactComponentModule>('@pages/Search/SearchMoneyRequestReportPage').default;
 
 const Stack = createSearchFullscreenNavigator<SearchFullscreenNavigatorParamList>();
 
@@ -35,6 +36,10 @@ function SearchFullscreenNavigator({route}: PlatformStackScreenProps<AuthScreens
                     initialParams={{q: SearchQueryUtils.buildSearchQueryString()}}
                     options={{animation: Animations.NONE}}
                 />
+                <Stack.Screen
+                    name={SCREENS.SEARCH.MONEY_REQUEST_REPORT}
+                    getComponent={loadSearchMoneyReportPage}
+                />
             </Stack.Navigator>
         </FreezeWrapper>
     );
diff --git a/src/libs/Navigation/Navigation.ts b/src/libs/Navigation/Navigation.ts
index 95535d0684dd..46b717d0302f 100644
--- a/src/libs/Navigation/Navigation.ts
+++ b/src/libs/Navigation/Navigation.ts
@@ -8,7 +8,7 @@ import {DeviceEventEmitter, InteractionManager} from 'react-native';
 import type {OnyxEntry} from 'react-native-onyx';
 import Onyx from 'react-native-onyx';
 import type {Writable} from 'type-fest';
-import {ALL_WIDE_RIGHT_MODALS, SUPER_WIDE_RIGHT_MODALS} from '@components/WideRHPContextProvider/WIDE_RIGHT_MODALS';
+import {SUPER_WIDE_RIGHT_MODALS, WIDE_RIGHT_MODALS} from '@components/WideRHPContextProvider';
 import getIsNarrowLayout from '@libs/getIsNarrowLayout';
 import Log from '@libs/Log';
 import {shallowCompare} from '@libs/ObjectUtils';
@@ -35,17 +35,7 @@ import setNavigationActionToMicrotaskQueue from './helpers/setNavigationActionTo
 import {linkingConfig} from './linkingConfig';
 import {SPLIT_TO_SIDEBAR} from './linkingConfig/RELATIONS';
 import navigationRef from './navigationRef';
-import type {
-    ExpenseReportNavigatorParamList,
-    NavigationPartialRoute,
-    NavigationRef,
-    NavigationRoute,
-    NavigationStateRoute,
-    ReportsSplitNavigatorParamList,
-    RootNavigatorParamList,
-    SearchMoneyRequestReportParamList,
-    State,
-} from './types';
+import type {NavigationPartialRoute, NavigationRef, NavigationRoute, NavigationStateRoute, ReportsSplitNavigatorParamList, RootNavigatorParamList, State} from './types';
 
 // Routes which are part of the flow to set up 2FA
 const SET_UP_2FA_ROUTES = new Set<Route>([
@@ -209,20 +199,15 @@ function navigate(route: Route, options?: LinkToOptions) {
     }
 
     // Start a Sentry span for report navigation
-    if (route.startsWith('r/') || route.startsWith('search/r/') || route.startsWith('e/')) {
+    if (route.startsWith('r/') || route.startsWith('search/r/')) {
         const routePath = Str.cutAfter(route, '?');
-        const reportIDMatch = route.match(/^(?:search\/)?(?:r|e)\/(\w+)/);
+        const reportIDMatch = routePath.match(/^(?:search\/)?r\/(\d+)(?:\/\d+)?$/);
         const reportID = reportIDMatch?.at(1);
         if (reportID) {
             const spanId = `${CONST.TELEMETRY.SPAN_OPEN_REPORT}_${reportID}`;
             let span = getSpan(spanId);
             if (!span) {
-                let spanName = '/r/*';
-                if (route.startsWith('search/r/')) {
-                    spanName = '/search/r/*';
-                } else if (route.startsWith('e/')) {
-                    spanName = '/e/*';
-                }
+                const spanName = route.startsWith('r/') ? '/r/*' : '/search/r/*';
                 span = startSpan(spanId, {
                     name: spanName,
                     op: CONST.TELEMETRY.SPAN_OPEN_REPORT,
@@ -235,8 +220,10 @@ function navigate(route: Route, options?: LinkToOptions) {
             });
         }
     }
+
     linkTo(navigationRef.current, route, options);
 }
+
 /**
  * When routes are compared to determine whether the fallback route passed to the goUp function is in the state,
  * these parameters shouldn't be included in the comparison.
@@ -580,37 +567,6 @@ function getReportRouteByID(reportID?: string, routes: NavigationRoute[] = navig
     return null;
 }
 
-/**
- * Get the report ID from the topmost Super Wide RHP modal in the navigation stack.
- */
-function getTopmostSuperWideRHPReportID(state: NavigationState = navigationRef.getRootState()): string | undefined {
-    if (!state) {
-        return;
-    }
-
-    const topmostRightModalNavigator = state.routes?.at(-1);
-
-    if (!topmostRightModalNavigator || topmostRightModalNavigator.name !== NAVIGATORS.RIGHT_MODAL_NAVIGATOR) {
-        return;
-    }
-
-    const topmostSuperWideRHPModalStack = topmostRightModalNavigator.state?.routes.findLast((route) => SUPER_WIDE_RIGHT_MODALS.has(route.name));
-
-    if (!topmostSuperWideRHPModalStack) {
-        return;
-    }
-
-    const topmostSuperWideRHP = topmostSuperWideRHPModalStack.state?.routes.findLast(
-        (route) => route.name === SCREENS.EXPENSE_REPORT_RHP || route.name === SCREENS.SEARCH.MONEY_REQUEST_REPORT,
-    );
-    const topmostReportParams = topmostSuperWideRHP?.params as
-        | SearchMoneyRequestReportParamList[typeof SCREENS.SEARCH.MONEY_REQUEST_REPORT]
-        | ExpenseReportNavigatorParamList[typeof SCREENS.EXPENSE_REPORT_RHP]
-        | undefined;
-
-    return topmostReportParams?.reportID;
-}
-
 /**
  * Closes the modal navigator (RHP, onboarding).
  *
@@ -642,16 +598,8 @@ const dismissModal = ({ref = navigationRef, callback}: {ref?: NavigationRef; cal
  */
 const dismissModalWithReport = ({reportID, reportActionID, referrer, backTo}: ReportsSplitNavigatorParamList[typeof SCREENS.REPORT], ref = navigationRef) => {
     isNavigationReady().then(() => {
-        const topmostSuperWideRHPReportID = getTopmostSuperWideRHPReportID();
-        let areReportsIDsDefined = !!topmostSuperWideRHPReportID && !!reportID;
-
-        if (topmostSuperWideRHPReportID === reportID && areReportsIDsDefined) {
-            dismissToPreviousRHP();
-            return;
-        }
-
         const topmostReportID = getTopmostReportId();
-        areReportsIDsDefined = !!topmostReportID && !!reportID;
+        const areReportsIDsDefined = !!topmostReportID && !!reportID;
         const isReportsSplitTopmostFullScreen = ref.getRootState().routes.findLast((route) => isFullScreenName(route.name))?.name === NAVIGATORS.REPORTS_SPLIT_NAVIGATOR;
         if (topmostReportID === reportID && areReportsIDsDefined && isReportsSplitTopmostFullScreen) {
             dismissModal();
@@ -775,7 +723,7 @@ function dismissToModalStack(modalStackNames: Set<string>) {
         return;
     }
 
-    const lastFoundModalStackIndex = rhpState.routes.slice(0, -1).findLastIndex((route) => modalStackNames.has(route.name));
+    const lastFoundModalStackIndex = rhpState.routes.findLastIndex((route) => modalStackNames.has(route.name));
     const routesToPop = rhpState.routes.length - lastFoundModalStackIndex - 1;
 
     if (routesToPop <= 0 || lastFoundModalStackIndex === -1) {
@@ -789,18 +737,16 @@ function dismissToModalStack(modalStackNames: Set<string>) {
 /**
  * Dismiss top layer modal and go back to the Wide/Super Wide RHP.
  */
-function dismissToPreviousRHP() {
-    return dismissToModalStack(ALL_WIDE_RIGHT_MODALS);
+function dismissToFirstRHP() {
+    const wideOrSuperWideModalStackNames = new Set([...SUPER_WIDE_RIGHT_MODALS, ...WIDE_RIGHT_MODALS]);
+    return dismissToModalStack(wideOrSuperWideModalStackNames);
 }
 
-function dismissToSuperWideRHP() {
-    // On narrow layouts (mobile), Super Wide RHP doesn't exist, so just dismiss the modal completely
-    if (getIsNarrowLayout()) {
-        dismissModal();
-        return;
-    }
-    // On wide layouts, dismiss back to the Super Wide RHP modal stack
-    return dismissToModalStack(SUPER_WIDE_RIGHT_MODALS);
+/**
+ * Dismiss top layer modal and go back to the Wide RHP.
+ */
+function dismissToSecondRHP() {
+    return dismissToModalStack(WIDE_RIGHT_MODALS);
 }
 
 export default {
@@ -838,8 +784,8 @@ export default {
     isOnboardingFlow,
     clearPreloadedRoutes,
     isValidateLoginFlow,
-    dismissToPreviousRHP,
-    dismissToSuperWideRHP,
+    dismissToFirstRHP,
+    dismissToSecondRHP,
 };
 
 export {navigationRef};
diff --git a/src/libs/Navigation/helpers/extractNavigationKeys.ts b/src/libs/Navigation/helpers/extractNavigationKeys.ts
index c893960b7265..0f78e2b6fe9e 100644
--- a/src/libs/Navigation/helpers/extractNavigationKeys.ts
+++ b/src/libs/Navigation/helpers/extractNavigationKeys.ts
@@ -1,4 +1,4 @@
-import type {NavigationRoute} from '@libs/Navigation/types';
+import type {NavigationState, PartialState} from '@react-navigation/native';
 
 /**
  * Utility function that extracts all unique navigation keys from a React Navigation state.
@@ -7,13 +7,13 @@ import type {NavigationRoute} from '@libs/Navigation/types';
  * @param state - The React Navigation state (can be partial or complete)
  * @returns Set of unique route keys found in the navigation state
  */
-function extractNavigationKeys(routes: NavigationRoute[] | undefined): Set<string> {
-    if (!routes) {
+function extractNavigationKeys(state: NavigationState | PartialState<NavigationState> | undefined): Set<string> {
+    if (!state || !state.routes) {
         return new Set();
     }
 
     const keys = new Set<string>();
-    const routesToProcess = [...routes];
+    const routesToProcess = [...state.routes];
 
     while (routesToProcess.length > 0) {
         const route = routesToProcess.pop();
diff --git a/src/libs/Navigation/helpers/isReportOpenInRHP.ts b/src/libs/Navigation/helpers/isReportOpenInRHP.ts
index fde83327e71b..51e8a95bb66b 100644
--- a/src/libs/Navigation/helpers/isReportOpenInRHP.ts
+++ b/src/libs/Navigation/helpers/isReportOpenInRHP.ts
@@ -1,5 +1,4 @@
 import type {NavigationState} from '@react-navigation/native';
-import {ALL_WIDE_RIGHT_MODALS} from '@components/WideRHPContextProvider/WIDE_RIGHT_MODALS';
 import NAVIGATORS from '@src/NAVIGATORS';
 import SCREENS from '@src/SCREENS';
 
@@ -12,7 +11,7 @@ const isReportOpenInRHP = (state: NavigationState | undefined): boolean => {
     if (params && 'screen' in params && typeof params.screen === 'string' && params.screen === SCREENS.RIGHT_MODAL.SEARCH_REPORT) {
         return true;
     }
-    return !!(lastRoute.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR && lastRoute.state?.routes?.some((route) => ALL_WIDE_RIGHT_MODALS.has(route.name)));
+    return !!(lastRoute.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR && lastRoute.state?.routes?.some((route) => route?.name === SCREENS.RIGHT_MODAL.SEARCH_REPORT));
 };
 
 export default isReportOpenInRHP;
diff --git a/src/libs/Navigation/helpers/isReportOpenInSuperWideRHP.ts b/src/libs/Navigation/helpers/isReportOpenInSuperWideRHP.ts
deleted file mode 100644
index 71084ffcdb12..000000000000
--- a/src/libs/Navigation/helpers/isReportOpenInSuperWideRHP.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import type {NavigationState} from '@react-navigation/native';
-import {SUPER_WIDE_RIGHT_MODALS, WIDE_RIGHT_MODALS} from '@components/WideRHPContextProvider/WIDE_RIGHT_MODALS';
-import NAVIGATORS from '@src/NAVIGATORS';
-
-const isReportOpenInSuperWideRHP = (state: NavigationState | undefined): boolean => {
-    const lastRoute = state?.routes?.at(-1);
-    if (!lastRoute) {
-        return false;
-    }
-    const params = lastRoute.params;
-    if (params && 'screen' in params && typeof params.screen === 'string' && WIDE_RIGHT_MODALS.has(params.screen)) {
-        return true;
-    }
-    return !!(lastRoute.name === NAVIGATORS.RIGHT_MODAL_NAVIGATOR && lastRoute.state?.routes?.some((route) => SUPER_WIDE_RIGHT_MODALS.has(route.name)));
-};
-
-export default isReportOpenInSuperWideRHP;
diff --git a/src/libs/Navigation/linkingConfig/RELATIONS/SEARCH_TO_RHP.ts b/src/libs/Navigation/linkingConfig/RELATIONS/SEARCH_TO_RHP.ts
index 91e4f4aedf3a..05caeb60b3de 100644
--- a/src/libs/Navigation/linkingConfig/RELATIONS/SEARCH_TO_RHP.ts
+++ b/src/libs/Navigation/linkingConfig/RELATIONS/SEARCH_TO_RHP.ts
@@ -50,7 +50,6 @@ const SEARCH_TO_RHP: Partial<Record<keyof SearchFullscreenNavigatorParamList, st
         SCREENS.SEARCH.ADVANCED_FILTERS_PURCHASE_CURRENCY_RHP,
         SCREENS.SEARCH.ADVANCED_FILTERS_REPORT_FIELD_RHP,
         SCREENS.SEARCH.SAVED_SEARCH_RENAME_RHP,
-        SCREENS.SEARCH.MONEY_REQUEST_REPORT,
     ],
 };
 
diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts
index 29d043b12d7d..a7e5f5530599 100644
--- a/src/libs/Navigation/linkingConfig/config.ts
+++ b/src/libs/Navigation/linkingConfig/config.ts
@@ -1608,11 +1608,6 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
                         [SCREENS.SEARCH.TRANSACTIONS_CHANGE_REPORT_SEARCH_RHP]: ROUTES.MOVE_TRANSACTIONS_SEARCH_RHP,
                     },
                 },
-                [SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT]: {
-                    screens: {
-                        [SCREENS.SEARCH.MONEY_REQUEST_REPORT]: ROUTES.SEARCH_MONEY_REQUEST_REPORT.route,
-                    },
-                },
                 [SCREENS.RIGHT_MODAL.SEARCH_ADVANCED_FILTERS]: {
                     screens: {
                         [SCREENS.SEARCH.ADVANCED_FILTERS_RHP]: ROUTES.SEARCH_ADVANCED_FILTERS.getRoute(),
@@ -1783,11 +1778,6 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
                         [SCREENS.REPORT_CHANGE_APPROVER.ADD_APPROVER]: ROUTES.REPORT_CHANGE_APPROVER_ADD_APPROVER.route,
                     },
                 },
-                [SCREENS.RIGHT_MODAL.EXPENSE_REPORT]: {
-                    screens: {
-                        [SCREENS.EXPENSE_REPORT_RHP]: ROUTES.EXPENSE_REPORT_RHP.route,
-                    },
-                },
                 [SCREENS.RIGHT_MODAL.DOMAIN]: {
                     screens: {
                         [SCREENS.WORKSPACES_VERIFY_DOMAIN]: {
@@ -1943,6 +1933,9 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
                 [SCREENS.SEARCH.ROOT]: {
                     path: ROUTES.SEARCH_ROOT.route,
                 },
+                [SCREENS.SEARCH.MONEY_REQUEST_REPORT]: {
+                    path: ROUTES.SEARCH_MONEY_REQUEST_REPORT.route,
+                },
             },
         },
         [NAVIGATORS.SHARE_MODAL_NAVIGATOR]: {
diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts
index f3e06b46419e..1ca59f3f441a 100644
--- a/src/libs/Navigation/types.ts
+++ b/src/libs/Navigation/types.ts
@@ -2166,7 +2166,6 @@ type RightModalNavigatorParamList = {
     [SCREENS.RIGHT_MODAL.TRAVEL]: NavigatorScreenParams<TravelNavigatorParamList>;
     [SCREENS.RIGHT_MODAL.SEARCH_REPORT_ACTIONS]: NavigatorScreenParams<SearchReportActionsParamList>;
     [SCREENS.RIGHT_MODAL.SEARCH_REPORT]: NavigatorScreenParams<SearchReportParamList>;
-    [SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT]: NavigatorScreenParams<SearchMoneyRequestReportParamList>;
     [SCREENS.RIGHT_MODAL.RESTRICTED_ACTION]: NavigatorScreenParams<RestrictedActionParamList>;
     [SCREENS.RIGHT_MODAL.SEARCH_ADVANCED_FILTERS]: NavigatorScreenParams<SearchAdvancedFiltersParamList>;
     [SCREENS.RIGHT_MODAL.SEARCH_SAVED_SEARCH]: NavigatorScreenParams<SearchSavedSearchParamList>;
@@ -2178,7 +2177,6 @@ type RightModalNavigatorParamList = {
     [SCREENS.RIGHT_MODAL.SCHEDULE_CALL]: NavigatorScreenParams<ScheduleCallParamList>;
     [SCREENS.RIGHT_MODAL.REPORT_CHANGE_APPROVER]: NavigatorScreenParams<ReportChangeApproverParamList>;
     [SCREENS.RIGHT_MODAL.MERGE_TRANSACTION]: NavigatorScreenParams<MergeTransactionNavigatorParamList>;
-    [SCREENS.RIGHT_MODAL.EXPENSE_REPORT]: NavigatorScreenParams<ExpenseReportNavigatorParamList>;
     [SCREENS.RIGHT_MODAL.DOMAIN]: NavigatorScreenParams<WorkspacesDomainModalNavigatorParamList>;
 };
 
@@ -2690,14 +2688,6 @@ type SearchReportParamList = {
     };
 };
 
-type SearchMoneyRequestReportParamList = {
-    [SCREENS.SEARCH.MONEY_REQUEST_REPORT]: {
-        reportID: string;
-        // eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md
-        backTo?: Routes;
-    };
-};
-
 type SearchFullscreenNavigatorParamList = {
     [SCREENS.SEARCH.ROOT]: {
         q: SearchQueryString;
@@ -2705,6 +2695,11 @@ type SearchFullscreenNavigatorParamList = {
         name?: string;
         groupBy?: string;
     };
+    [SCREENS.SEARCH.MONEY_REQUEST_REPORT]: {
+        reportID: string;
+        // eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md
+        backTo?: Routes;
+    };
 };
 
 type SearchAdvancedFiltersParamList = {
@@ -2812,14 +2807,6 @@ type TestToolsModalModalNavigatorParamList = {
     };
 };
 
-type ExpenseReportNavigatorParamList = {
-    [SCREENS.EXPENSE_REPORT_RHP]: {
-        reportID: string;
-        // eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md
-        backTo?: Routes;
-    };
-};
-
 type RootNavigatorParamList = PublicScreensParamList & AuthScreensParamList & SearchFullscreenNavigatorParamList;
 
 type OnboardingFlowName = keyof OnboardingModalNavigatorParamList;
@@ -2891,6 +2878,7 @@ export type {
     RoomMembersNavigatorParamList,
     RootNavigatorParamList,
     SearchAdvancedFiltersParamList,
+    SearchReportActionsParamList,
     SearchReportParamList,
     SearchSavedSearchParamList,
     SearchFullscreenNavigatorParamList,
@@ -2928,10 +2916,7 @@ export type {
     MergeTransactionNavigatorParamList,
     AttachmentModalScreensParamList,
     ReportCardActivateNavigatorParamList,
-    SearchMoneyRequestReportParamList,
-    ExpenseReportNavigatorParamList,
     WorkspacesDomainModalNavigatorParamList,
     DomainSplitNavigatorParamList,
     DomainScreenName,
-    SearchReportActionsParamList,
 };
diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index 8cd4237b531a..e46e8390d14f 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -6333,12 +6333,11 @@ function navigateBackOnDeleteTransaction(backRoute: Route | undefined, isFromRHP
     const rootState = navigationRef.current?.getRootState();
     const lastFullScreenRoute = rootState?.routes.findLast((route) => isFullScreenName(route.name));
     if (lastFullScreenRoute?.name === NAVIGATORS.SEARCH_FULLSCREEN_NAVIGATOR) {
-        // When deleting from search, go back to Super Wide RHP to maintain search context
-        Navigation.dismissToSuperWideRHP();
+        Navigation.dismissModal();
         return;
     }
     if (isFromRHP) {
-        Navigation.dismissToSuperWideRHP();
+        Navigation.dismissModal();
     }
     Navigation.isNavigationReady().then(() => {
         Navigation.goBack(backRoute);
diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts
index 3456d99b66ed..99826765d39c 100644
--- a/src/libs/actions/IOU.ts
+++ b/src/libs/actions/IOU.ts
@@ -54,7 +54,6 @@ import DateUtils from '@libs/DateUtils';
 import DistanceRequestUtils from '@libs/DistanceRequestUtils';
 import {getMicroSecondOnyxErrorObject, getMicroSecondOnyxErrorWithTranslationKey} from '@libs/ErrorUtils';
 import {readFileAsync} from '@libs/fileDownload/FileUtils';
-import getIsNarrowLayout from '@libs/getIsNarrowLayout';
 import GoogleTagManager from '@libs/GoogleTagManager';
 import {
     calculateAmount as calculateIOUAmount,
@@ -69,7 +68,6 @@ import * as Localize from '@libs/Localize';
 import Log from '@libs/Log';
 import {validateAmount} from '@libs/MoneyRequestUtils';
 import isReportOpenInRHP from '@libs/Navigation/helpers/isReportOpenInRHP';
-import isReportOpenInSuperWideRHP from '@libs/Navigation/helpers/isReportOpenInSuperWideRHP';
 import isSearchTopmostFullScreenRoute from '@libs/Navigation/helpers/isSearchTopmostFullScreenRoute';
 import Navigation, {navigationRef} from '@libs/Navigation/Navigation';
 // eslint-disable-next-line @typescript-eslint/no-deprecated
@@ -991,11 +989,6 @@ function dismissModalAndOpenReportInInboxTab(reportID?: string) {
         const rhpKey = rootState.routes.at(-1)?.state?.key;
         if (rhpKey) {
             const hasMultipleTransactions = Object.values(allTransactions).filter((transaction) => transaction?.reportID === reportID).length > 0;
-            // When a report is opened in the super wide RHP, we need to dismiss to the first RHP to show the same report with new expense.
-            if (isReportOpenInSuperWideRHP(rootState)) {
-                Navigation.dismissToPreviousRHP();
-                return;
-            }
             // When a report with one expense is opened in the wide RHP and the user adds another expense, RHP should be dismissed and ROUTES.SEARCH_MONEY_REQUEST_REPORT should be displayed.
             if (hasMultipleTransactions && reportID) {
                 Navigation.dismissModal();
@@ -8873,12 +8866,7 @@ function getNavigationUrlOnMoneyRequestDelete(
 
     // Determine which report to navigate back to
     if (iouReport && isSingleTransactionView && shouldDeleteTransactionThread && !shouldDeleteIOUReport) {
-        // On narrow layouts (mobile), navigate to the full report screen
-        if (getIsNarrowLayout()) {
-            return ROUTES.REPORT_WITH_ID.getRoute(iouReport.reportID);
-        }
-        // On wide layouts, navigate to the Super Wide RHP version of the expense report
-        return ROUTES.EXPENSE_REPORT_RHP.getRoute({reportID: iouReport.reportID});
+        return ROUTES.REPORT_WITH_ID.getRoute(iouReport.reportID);
     }
 
     if (iouReport?.chatReportID && shouldDeleteIOUReport) {
@@ -14925,7 +14913,7 @@ function updateSplitTransactionsFromSplitExpensesFlow(params: UpdateSplitTransac
     params?.searchContext?.clearSelectedTransactions?.(undefined, true);
 
     if (isSearchPageTopmostFullScreenRoute || !transactionReport?.parentReportID) {
-        Navigation.dismissToSuperWideRHP();
+        Navigation.dismissModal();
 
         // After the modal is dismissed, remove the transaction thread report screen
         // to avoid navigating back to a report removed by the split transaction.
diff --git a/src/pages/ReportAddApproverPage.tsx b/src/pages/ReportAddApproverPage.tsx
index cc45c9b187f3..198b27e5a5f4 100644
--- a/src/pages/ReportAddApproverPage.tsx
+++ b/src/pages/ReportAddApproverPage.tsx
@@ -100,7 +100,7 @@ function ReportAddApproverPage({report, isLoadingReportData, policy}: ReportAddA
             isASAPSubmitBetaEnabled,
             reportNextStep,
         );
-        Navigation.dismissToPreviousRHP();
+        Navigation.dismissModal();
     }, [allApprovers, selectedApproverEmail, report, currentUserDetails.accountID, currentUserDetails.email, policy, hasViolations, isASAPSubmitBetaEnabled, reportNextStep]);
 
     const button = useMemo(() => {
diff --git a/src/pages/ReportChangeApproverPage.tsx b/src/pages/ReportChangeApproverPage.tsx
index 6c491fdcc007..755d2db5dc52 100644
--- a/src/pages/ReportChangeApproverPage.tsx
+++ b/src/pages/ReportChangeApproverPage.tsx
@@ -73,8 +73,8 @@ function ReportChangeApproverPage({report, policy, isLoadingReportData}: ReportC
             return;
         }
         assignReportToMe(report, currentUserDetails.accountID, currentUserDetails.email ?? '', policy, hasViolations, isASAPSubmitBetaEnabled, reportNextStep);
-        Navigation.dismissToPreviousRHP();
-    }, [selectedApproverType, report, currentUserDetails.accountID, currentUserDetails.email, policy, hasViolations, isASAPSubmitBetaEnabled, reportNextStep]);
+        Navigation.goBack(ROUTES.REPORT_WITH_ID.getRoute(reportID));
+    }, [selectedApproverType, report, currentUserDetails.accountID, currentUserDetails.email, policy, hasViolations, isASAPSubmitBetaEnabled, reportNextStep, reportID]);
 
     const approverTypes = useMemo(() => {
         const data: Array<ListItem<ApproverType>> = [
diff --git a/src/pages/Search/SearchMoneyRequestReportPage.tsx b/src/pages/Search/SearchMoneyRequestReportPage.tsx
index e5df9049bfd8..7f6543bc10de 100644
--- a/src/pages/Search/SearchMoneyRequestReportPage.tsx
+++ b/src/pages/Search/SearchMoneyRequestReportPage.tsx
@@ -8,7 +8,6 @@ import DragAndDropProvider from '@components/DragAndDrop/Provider';
 import MoneyRequestReportView from '@components/MoneyRequestReportView/MoneyRequestReportView';
 import ScreenWrapper from '@components/ScreenWrapper';
 import {useSearchContext} from '@components/Search/SearchContext';
-import useShowSuperWideRHPVersion from '@components/WideRHPContextProvider/useShowSuperWideRHPVersion';
 import useIsReportReadyToDisplay from '@hooks/useIsReportReadyToDisplay';
 import useNetwork from '@hooks/useNetwork';
 import useOnyx from '@hooks/useOnyx';
@@ -20,7 +19,7 @@ import useTransactionsAndViolationsForReport from '@hooks/useTransactionsAndViol
 import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID';
 import {getAllNonDeletedTransactions} from '@libs/MoneyRequestReportUtils';
 import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
-import type {ExpenseReportNavigatorParamList, SearchMoneyRequestReportParamList} from '@libs/Navigation/types';
+import type {SearchFullscreenNavigatorParamList} from '@libs/Navigation/types';
 import {getFilteredReportActionsForReportView, getIOUActionForTransactionID, getOneTransactionThreadReportID, getOriginalMessage, isMoneyRequestAction} from '@libs/ReportActionsUtils';
 import {isValidReportIDFromPath} from '@libs/ReportUtils';
 import Navigation from '@navigation/Navigation';
@@ -34,9 +33,7 @@ import type SCREENS from '@src/SCREENS';
 import type {Policy, Transaction, TransactionViolations} from '@src/types/onyx';
 import {getEmptyObject} from '@src/types/utils/EmptyObject';
 
-type SearchMoneyRequestPageProps =
-    | PlatformStackScreenProps<SearchMoneyRequestReportParamList, typeof SCREENS.SEARCH.MONEY_REQUEST_REPORT>
-    | PlatformStackScreenProps<ExpenseReportNavigatorParamList, typeof SCREENS.EXPENSE_REPORT_RHP>;
+type SearchMoneyRequestPageProps = PlatformStackScreenProps<SearchFullscreenNavigatorParamList, typeof SCREENS.SEARCH.MONEY_REQUEST_REPORT>;
 
 const defaultReportMetadata = {
     isLoadingInitialReportActions: true,
@@ -120,11 +117,6 @@ function SearchMoneyRequestReportPage({route}: SearchMoneyRequestPageProps) {
         return {snapshotTransaction: transaction, snapshotViolations: violations};
     }, [snapshot?.data, allReportTransactions]);
 
-    // If there is more than one transaction, display the report in Super Wide RHP, otherwise it will be shown in Wide RHP
-    const shouldShowSuperWideRHP = visibleTransactions.length > 1;
-
-    useShowSuperWideRHPVersion(shouldShowSuperWideRHP);
-
     useEffect(() => {
         if (transactionThreadReportID === CONST.FAKE_REPORT_ID && oneTransactionID) {
             const iouAction = getIOUActionForTransactionID(reportActions, oneTransactionID);
diff --git a/src/pages/TransactionMerge/ConfirmationPage.tsx b/src/pages/TransactionMerge/ConfirmationPage.tsx
index d12c29faa925..1be16a85a8d1 100644
--- a/src/pages/TransactionMerge/ConfirmationPage.tsx
+++ b/src/pages/TransactionMerge/ConfirmationPage.tsx
@@ -110,7 +110,7 @@ function ConfirmationPage({route}: ConfirmationPageProps) {
         if (reportID !== targetTransaction.reportID && reportIDToDismiss) {
             Navigation.dismissModalWithReport({reportID: reportIDToDismiss});
         } else {
-            Navigation.dismissToPreviousRHP();
+            Navigation.dismissModal();
         }
     }, [
         targetTransaction,
diff --git a/src/pages/home/ReportScreen.tsx b/src/pages/home/ReportScreen.tsx
index 9e9151484e2a..2cad7de04660 100644
--- a/src/pages/home/ReportScreen.tsx
+++ b/src/pages/home/ReportScreen.tsx
@@ -2,7 +2,7 @@ import {PortalHost} from '@gorhom/portal';
 import {useIsFocused} from '@react-navigation/native';
 import {accountIDSelector} from '@selectors/Session';
 import {deepEqual} from 'fast-equals';
-import React, {memo, useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react';
+import React, {memo, useCallback, useEffect, useMemo, useRef, useState} from 'react';
 import type {FlatList, ViewStyle} from 'react-native';
 // We use Animated for all functionality related to wide RHP to make it easier
 // to interact with react-navigation components (e.g., CardContainer, interpolator), which also use Animated.
@@ -20,7 +20,6 @@ import MoneyRequestReceiptView from '@components/ReportActionItem/MoneyRequestRe
 import ReportActionsSkeletonView from '@components/ReportActionsSkeletonView';
 import ScreenWrapper from '@components/ScreenWrapper';
 import ScrollView from '@components/ScrollView';
-import {WideRHPContext} from '@components/WideRHPContextProvider';
 import useShowWideRHPVersion from '@components/WideRHPContextProvider/useShowWideRHPVersion';
 import useAppFocusEvent from '@hooks/useAppFocusEvent';
 import useCurrentReportID from '@hooks/useCurrentReportID';
@@ -168,10 +167,6 @@ function ReportScreen({route, navigation}: ReportScreenProps) {
     const {isBetaEnabled} = usePermissions();
     const {isOffline} = useNetwork();
     const {shouldUseNarrowLayout, isInNarrowPaneModal} = useResponsiveLayout();
-
-    const {wideRHPRouteKeys, superWideRHPRouteKeys} = useContext(WideRHPContext);
-    const isDisplayedInWidePaneModal = wideRHPRouteKeys.includes(route.key) || superWideRHPRouteKeys.includes(route.key);
-    const isWideRHPOpened = wideRHPRouteKeys.length > 0 || superWideRHPRouteKeys.length > 0;
     const currentReportIDValue = useCurrentReportID();
 
     const [isComposerFullSize = false] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_IS_COMPOSER_FULL_SIZE}${reportIDFromRoute}`, {canBeMissing: true});
@@ -377,7 +372,7 @@ function ReportScreen({route, navigation}: ReportScreenProps) {
     const backTo = route?.params?.backTo as string;
     const onBackButtonPress = useCallback(
         (prioritizeBackTo = false) => {
-            if (backTo === SCREENS.SEARCH.REPORT_RHP || isDisplayedInWidePaneModal || isWideRHPOpened) {
+            if (backTo === SCREENS.SEARCH.REPORT_RHP) {
                 Navigation.goBack();
                 return;
             }
@@ -399,7 +394,7 @@ function ReportScreen({route, navigation}: ReportScreenProps) {
             }
             Navigation.goBack();
         },
-        [backTo, isDisplayedInWidePaneModal, isWideRHPOpened, isInNarrowPaneModal],
+        [isInNarrowPaneModal, backTo],
     );
 
     let headerView = (
diff --git a/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx b/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx
index 7649b51064f7..713005358853 100644
--- a/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx
+++ b/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx
@@ -1,4 +1,4 @@
-import {useIsFocused, useRoute} from '@react-navigation/native';
+import {useIsFocused} from '@react-navigation/native';
 import {accountIDSelector} from '@selectors/Session';
 import React, {useCallback, useContext, useEffect, useMemo, useRef} from 'react';
 import {View} from 'react-native';
@@ -13,7 +13,6 @@ import type {PopoverMenuItem} from '@components/PopoverMenu';
 import PopoverMenu from '@components/PopoverMenu';
 import PressableWithFeedback from '@components/Pressable/PressableWithFeedback';
 import Tooltip from '@components/Tooltip/PopoverAnchorTooltip';
-import {WideRHPContext} from '@components/WideRHPContextProvider';
 import useCreateEmptyReportConfirmation from '@hooks/useCreateEmptyReportConfirmation';
 import useEnvironment from '@hooks/useEnvironment';
 import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
@@ -167,12 +166,6 @@ function AttachmentPickerWithMenuItems({
         [accountID, hasDismissedEmptyReportsConfirmation, report?.policyID, reportSummaries],
     );
 
-    const route = useRoute();
-    const {superWideRHPRouteKeys, wideRHPRouteKeys} = useContext(WideRHPContext);
-
-    const isSuperWideRHPFocused = superWideRHPRouteKeys.includes(route?.key);
-    const isWideRHPFocused = wideRHPRouteKeys.includes(route?.key);
-
     const selectOption = useCallback(
         (onSelected: () => void, shouldRestrictAction: boolean) => {
             if (shouldRestrictAction && policy && policy.type !== CONST.POLICY.TYPE.PERSONAL && shouldRestrictUserBillableActions(policy.id)) {
@@ -372,18 +365,6 @@ function AttachmentPickerWithMenuItems({
     // 4. And the Create button is at the bottom.
     const createButtonContainerStyles = [styles.flexGrow0, styles.flexShrink0];
 
-    const anchorPosition = useMemo(() => {
-        if (isSuperWideRHPFocused) {
-            return styles.createMenuPositionSuperWideRHPReportActionCompose(shouldUseNarrowLayout, windowHeight, windowWidth);
-        }
-
-        if (isWideRHPFocused) {
-            return styles.createMenuPositionWideRHPReportActionCompose(shouldUseNarrowLayout, windowHeight, windowWidth);
-        }
-
-        return styles.createMenuPositionReportActionCompose(shouldUseNarrowLayout, windowHeight, windowWidth);
-    }, [isSuperWideRHPFocused, isWideRHPFocused, styles, shouldUseNarrowLayout, windowHeight, windowWidth]);
-
     return (
         <AttachmentPicker
             allowMultiple
@@ -523,7 +504,7 @@ function AttachmentPickerWithMenuItems({
                                     });
                                 }
                             }}
-                            anchorPosition={anchorPosition}
+                            anchorPosition={styles.createMenuPositionReportActionCompose(shouldUseNarrowLayout, windowHeight, windowWidth)}
                             anchorAlignment={{
                                 horizontal: CONST.MODAL.ANCHOR_ORIGIN_HORIZONTAL.LEFT,
                                 vertical: CONST.MODAL.ANCHOR_ORIGIN_VERTICAL.BOTTOM,
diff --git a/src/pages/iou/SplitExpensePage.tsx b/src/pages/iou/SplitExpensePage.tsx
index 30d2d6b7eb58..067fa7108528 100644
--- a/src/pages/iou/SplitExpensePage.tsx
+++ b/src/pages/iou/SplitExpensePage.tsx
@@ -7,6 +7,7 @@ import Button from '@components/Button';
 import ConfirmModal from '@components/ConfirmModal';
 import FormHelpMessage from '@components/FormHelpMessage';
 import HeaderWithBackButton from '@components/HeaderWithBackButton';
+import * as Expensicons from '@components/Icon/Expensicons';
 import MenuItem from '@components/MenuItem';
 import ScreenWrapper from '@components/ScreenWrapper';
 import {useSearchContext} from '@components/Search/SearchContext';
@@ -16,7 +17,6 @@ import useAllTransactions from '@hooks/useAllTransactions';
 import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails';
 import useDisplayFocusedInputUnderKeyboard from '@hooks/useDisplayFocusedInputUnderKeyboard';
 import useGetIOUReportFromReportAction from '@hooks/useGetIOUReportFromReportAction';
-import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
 import useLocalize from '@hooks/useLocalize';
 import useOnyx from '@hooks/useOnyx';
 import usePermissions from '@hooks/usePermissions';
@@ -114,8 +114,6 @@ function SplitExpensePage({route}: SplitExpensePageProps) {
 
     const {isBetaEnabled} = usePermissions();
 
-    const icons = useMemoizedLazyExpensifyIcons(['Plus', 'ArrowsLeftRight'] as const);
-
     useEffect(() => {
         const errorString = getLatestErrorMessage(draftTransaction ?? {});
 
@@ -148,12 +146,12 @@ function SplitExpensePage({route}: SplitExpensePageProps) {
             const splitExpenseWithoutID = {...splitExpenses.at(0), transactionID: ''};
             // When we try to save one split during splits creation and if the data is identical to the original transaction we should close the split flow
             if (!childTransactions.length && deepEqual(splitFieldDataFromOriginalTransactionWithoutID, splitExpenseWithoutID)) {
-                Navigation.dismissToPreviousRHP();
+                Navigation.dismissModal();
                 return;
             }
             // When we try to save splits during editing splits and if the data is identical to the already created transactions we should close the split flow
             if (childTransactions.length && deepEqual(splitFieldDataFromChildTransactions, splitExpenses)) {
-                Navigation.dismissToPreviousRHP();
+                Navigation.dismissModal();
                 return;
             }
             // When we try to save one split during splits creation and if the data is not identical to the original transaction we should show the error
@@ -181,7 +179,7 @@ function SplitExpensePage({route}: SplitExpensePageProps) {
 
         // When we try to save splits during editing splits and if the data is identical to the already created transactions we should close the split flow
         if (deepEqual(splitFieldDataFromChildTransactions, splitExpenses)) {
-            Navigation.dismissToPreviousRHP();
+            Navigation.dismissModal();
             return;
         }
 
@@ -315,33 +313,20 @@ function SplitExpensePage({route}: SplitExpensePageProps) {
                 <MenuItem
                     onPress={onAddSplitExpense}
                     title={translate('iou.addSplit')}
-                    icon={icons.Plus}
+                    icon={Expensicons.Plus}
                     style={[styles.ph4]}
                 />
                 {shouldShowMakeSplitsEven && (
                     <MenuItem
                         onPress={onMakeSplitsEven}
                         title={translate('iou.makeSplitsEven')}
-                        icon={icons.ArrowsLeftRight}
+                        icon={Expensicons.ArrowsLeftRight}
                         style={[styles.ph4]}
                     />
                 )}
             </View>
         );
-    }, [
-        childTransactions.length,
-        styles.w100,
-        styles.flexColumn,
-        styles.mt1,
-        styles.mb3,
-        styles.ph4,
-        shouldUseNarrowLayout,
-        onAddSplitExpense,
-        translate,
-        icons.Plus,
-        icons.ArrowsLeftRight,
-        onMakeSplitsEven,
-    ]);
+    }, [onAddSplitExpense, onMakeSplitsEven, translate, childTransactions.length, shouldUseNarrowLayout, styles.w100, styles.ph4, styles.flexColumn, styles.mt1, styles.mb3]);
 
     const footerContent = useMemo(() => {
         const shouldShowWarningMessage = sumOfSplitExpenses < transactionDetailsAmount;
diff --git a/src/pages/iou/request/step/IOURequestStepReport.tsx b/src/pages/iou/request/step/IOURequestStepReport.tsx
index c3225e22fdb9..7aa1449e3627 100644
--- a/src/pages/iou/request/step/IOURequestStepReport.tsx
+++ b/src/pages/iou/request/step/IOURequestStepReport.tsx
@@ -67,7 +67,7 @@ function IOURequestStepReport({route, transaction}: IOURequestStepReportProps) {
 
     const handleGoBack = () => {
         if (isEditing) {
-            Navigation.dismissToSuperWideRHP();
+            Navigation.dismissModal();
         } else {
             Navigation.goBack(backTo);
         }
@@ -166,7 +166,7 @@ function IOURequestStepReport({route, transaction}: IOURequestStepReportProps) {
         if (!transaction) {
             return;
         }
-        Navigation.dismissToSuperWideRHP();
+        Navigation.dismissModal();
         // eslint-disable-next-line @typescript-eslint/no-deprecated
         InteractionManager.runAfterInteractions(() => {
             changeTransactionsReport([transaction.transactionID], isASAPSubmitBetaEnabled, session?.accountID ?? CONST.DEFAULT_NUMBER_ID, session?.email ?? '');
diff --git a/src/styles/index.ts b/src/styles/index.ts
index 815536b71f8e..9f67829dab3e 100644
--- a/src/styles/index.ts
+++ b/src/styles/index.ts
@@ -8,8 +8,8 @@ import type {LineLayer} from 'react-map-gl';
 import type {Animated, ImageStyle, TextStyle, ViewStyle} from 'react-native';
 import {Platform, StyleSheet} from 'react-native';
 import type {PickerStyle} from 'react-native-picker-select';
-import type {SharedValue} from 'react-native-reanimated';
 import {interpolate} from 'react-native-reanimated';
+import type {SharedValue} from 'react-native-reanimated';
 import type {MixedStyleDeclaration, MixedStyleRecord} from 'react-native-render-html';
 import type {ValueOf} from 'type-fest';
 import type DotLottieAnimation from '@components/LottieAnimations/types';
@@ -17,8 +17,6 @@ import {ACTIVE_LABEL_SCALE} from '@components/TextInput/styleConst';
 import {animatedReceiptPaneRHPWidth, animatedSuperWideRHPWidth, animatedWideRHPWidth} from '@components/WideRHPContextProvider';
 import {getBrowser, isMobile, isMobileSafari, isSafari} from '@libs/Browser';
 import getPlatform from '@libs/getPlatform';
-import calculateReceiptPaneRHPWidth from '@libs/Navigation/helpers/calculateReceiptPaneRHPWidth';
-import calculateSuperWideRHPWidth from '@libs/Navigation/helpers/calculateSuperWideRHPWidth';
 import CONST from '@src/CONST';
 import type {Dimensions} from '@src/types/utils/Layout';
 import {defaultTheme} from './theme';
@@ -5674,26 +5672,7 @@ const dynamicStyles = (theme: ThemeColors) =>
         createMenuPositionReportActionCompose: (shouldUseNarrowLayout: boolean, windowHeight: number, windowWidth: number) =>
             ({
                 // On a narrow layout the menu is displayed in ReportScreen in RHP, so it must be moved from the right side of the screen
-                horizontal: (shouldUseNarrowLayout ? windowWidth - variables.sideBarWithLHBWidth : variables.sideBarWithLHBWidth + variables.navigationTabBarSize) + variables.popoverMargin,
-                vertical: windowHeight - CONST.MENU_POSITION_REPORT_ACTION_COMPOSE_BOTTOM,
-            }) satisfies AnchorPosition,
-
-        createMenuPositionWideRHPReportActionCompose: (shouldUseNarrowLayout: boolean, windowHeight: number, windowWidth: number) =>
-            ({
-                // On a narrow layout the menu is displayed in ReportScreen in RHP, so it must be moved from the right side of the screen
-                horizontal:
-                    (shouldUseNarrowLayout
-                        ? windowWidth - calculateReceiptPaneRHPWidth(windowWidth) - variables.sideBarWidth
-                        : variables.sideBarWithLHBWidth + variables.navigationTabBarSize) + variables.popoverMargin,
-                vertical: windowHeight - CONST.MENU_POSITION_REPORT_ACTION_COMPOSE_BOTTOM,
-            }) satisfies AnchorPosition,
-
-        createMenuPositionSuperWideRHPReportActionCompose: (shouldUseNarrowLayout: boolean, windowHeight: number, windowWidth: number) =>
-            ({
-                // On a narrow layout the menu is displayed in ReportScreen in RHP, so it must be moved from the right side of the screen
-                horizontal:
-                    (shouldUseNarrowLayout ? windowWidth - calculateSuperWideRHPWidth(windowWidth) : variables.sideBarWithLHBWidth + variables.navigationTabBarSize) +
-                    variables.popoverMargin,
+                horizontal: (shouldUseNarrowLayout ? windowWidth - variables.sideBarWithLHBWidth : variables.sideBarWithLHBWidth + variables.navigationTabBarSize) + 18,
                 vertical: windowHeight - CONST.MENU_POSITION_REPORT_ACTION_COMPOSE_BOTTOM,
             }) satisfies AnchorPosition,
 
diff --git a/src/styles/variables.ts b/src/styles/variables.ts
index 85f2f8706ed2..49e33bcd2101 100644
--- a/src/styles/variables.ts
+++ b/src/styles/variables.ts
@@ -109,7 +109,6 @@ export default {
     chooseFilesViewMargin: 8,
     sideBarWithLHBWidth: 320,
     navigationTabBarSize: 72,
-    popoverMargin: 18,
     pdfPageMaxWidth: 992,
     tooltipZIndex: 10050,
     gutterWidth: 12,
diff --git a/tests/actions/IOUTest.ts b/tests/actions/IOUTest.ts
index 9f0683163a85..c67d079be66c 100644
--- a/tests/actions/IOUTest.ts
+++ b/tests/actions/IOUTest.ts
@@ -121,8 +121,6 @@ const topMostReportID = '23423423';
 jest.mock('@src/libs/Navigation/Navigation', () => ({
     navigate: jest.fn(),
     dismissModal: jest.fn(),
-    dismissToPreviousRHP: jest.fn(),
-    dismissToSuperWideRHP: jest.fn(),
     dismissModalWithReport: jest.fn(),
     goBack: jest.fn(),
     getTopmostReportId: jest.fn(() => topMostReportID),
diff --git a/tests/perf-test/ReportActionCompose.perf-test.tsx b/tests/perf-test/ReportActionCompose.perf-test.tsx
index 4496f145ef57..92c7b77456e8 100644
--- a/tests/perf-test/ReportActionCompose.perf-test.tsx
+++ b/tests/perf-test/ReportActionCompose.perf-test.tsx
@@ -48,7 +48,6 @@ jest.mock('@react-navigation/native', () => {
         useIsFocused: () => true,
         useNavigationState: () => {},
         useFocusEffect: jest.fn(),
-        useRoute: () => jest.fn(),
     };
 });
 
diff --git a/tests/utils/TestNavigationContainer.tsx b/tests/utils/TestNavigationContainer.tsx
index 37476a42bd19..0c3370f12de0 100644
--- a/tests/utils/TestNavigationContainer.tsx
+++ b/tests/utils/TestNavigationContainer.tsx
@@ -114,6 +114,10 @@ function TestSearchFullscreenNavigator() {
                 name={SCREENS.SEARCH.ROOT}
                 getComponent={getEmptyComponent()}
             />
+            <SearchStack.Screen
+                name={SCREENS.SEARCH.MONEY_REQUEST_REPORT}
+                getComponent={getEmptyComponent()}
+            />
         </SearchStack.Navigator>
     );
 }
