Skip to content

Reapply "Add a More menu option to switch single-expense reports between expense view and table view" - #103703

Merged
Beamanator merged 24 commits into
mainfrom
claude-reapplySingleExpenseReportViewToggle
Oct 21, 2026
Merged

Beamanator merged 24 commits into
mainfrom
claude-reapplySingleExpenseReportViewToggle

Conversation

@MelvinBot

@MelvinBot MelvinBot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Explanation of Change

This PR brings back Add a More menu option to switch single-expense reports between expense view and table view, which was reverted in Revert "Add a More menu option to switch single-expense reports between expense view and table view" after QA found deploy blockers. It reverts the revert commit. The C+ reviewer asked to restore the feature here and then fix the blockers one by one in this PR.

The only conflict was in src/ONYXKEYS.ts, where main added TABLE_COLUMN_WIDTHS at the same spot. I kept both keys. The rest of the diff matches the original PR (34 files, +464/−24).

This PR also fixes the deploy blockers QA found on the original PR. They are listed under Fixed Issues.

One blocker is still open: Expense - Report opens in default expense view on the second device. It needs backend support for nvp_expensify_singleExpenseReportView, so it cannot be fixed in this PR.

Spend - User avatar in invoice report changes after opening and closing workspace chat was also linked, but it probably isn't caused by this change.

AI tests: npm run typecheck and npm run lint on all changed files pass. 7 related Jest suites pass (319 tests), including ReportLayoutTest, OneTransactionThreadRedirectHandlerTest, MoneyRequestReportUtilsTest, ReportSecondaryActionUtilsTest, useTransactionThreadReportID.test, ReportActionsWithInboxTabDeferredMountTest, and ExportOnyxStateTest. I couldn't run the React Compiler compliance check or oxfmt locally, so CI will cover them.

Fixed Issues

$ #102910
PROPOSAL: #102910 (comment)
$ #103387
$ #103389
$ #103391
$ #103392
$ #103394
$ #103396
$ #103425

Tests

Setup: in a workspace chat, create report A with exactly one expense and report B with two or more expenses.

Switch between views

  1. Open report A. Verify it opens in the single-expense view, with the receipt and the expense fields.
  2. Open the More menu. Verify Switch to table view appears just before View details.
  3. Select Switch to table view. Verify the report shows a table with one row and no side-by-side receipt.
  4. Open the More menu again. Verify the option now reads Switch to expense view.
  5. Select the expense row. Verify the expense opens and the app doesn't redirect back to the report.
  6. Go back to the report and send a comment from the composer. Verify the comment appears in the report.
  7. Leave the report and open it again, or open another single-expense report. Verify it opens in the table view.
  8. Open report B and its More menu. Verify neither Switch to table view nor Switch to expense view appears.
  9. Go back to report A and select Switch to expense view. Verify the single-expense view returns and the More menu shows Switch to table view again.

Selection mode in the table view (switch a single-expense report to the table view first)
10. On a narrow screen (Android, iOS, or mWeb), long-press the expense row and tap Select. Verify selection mode turns on and the row is selected.
11. On a wide screen, select the expense with its checkbox. Verify the header Submit and More buttons are disabled while the expense is selected.
12. In a workspace with Submit workflow (for example, onboarding with "Submit to my employer"), select the expense and click Submit on the floating bar. Verify the "Submit to" popover opens.

Delete in the table view
13. Create a new single-expense report and switch it to the table view. Click More > Delete > Delete. Verify the report is deleted and the expense moves to your self DM.
14. Create a new single-expense report and switch it to the table view. Open the expense row, click the report header, and click Delete expense > Delete. Verify the RHP closes and the "It's not here" page doesn't open.

Pay someone report
15. In a 1:1 DM, click + > Pay and complete the flow. Open the report. Verify it opens in the expense view and the More menu doesn't show Switch to table view.

Duplicates in the table view
16. Create a new single-expense report and switch it to the table view. Click More > Duplicate report and open the new report. Click Review duplicates, select the expense from the other report, click Keep selected, then Confirm. Verify the app opens the kept report and the "It's not here" page doesn't open.

  • Verify that no errors appear in the JS console

Offline tests

  1. Open report A in the single-expense view and go offline.
  2. Select Switch to table view. Verify the report switches to the table view right away.
  3. Go back online. Verify the report stays in the table view.

QA Steps

  1. Follow steps 1–16 in the Tests section on staging.
  2. Open report A from the Reports tab (Search), from the chat, and from a link. Verify it opens in the view you picked each time.
  3. Sign in on a second device. Verify single-expense reports open in the view you picked. This depends on the backend returning nvp_expensify_singleExpenseReportView, so skip this step if that isn't deployed yet.
  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I verified any copy / text that was added to the app is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • If new assets were added or existing ones were modified, I verified that:
    • The assets are optimized and compressed (for SVG files, run npm run compress-svg)
    • The assets load correctly across all supported platforms.
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • If the PR adds or modifies the UI:
    • I asked an AI agent to review the changes for accessibility issues and addressed its findings.
    • I tested with a screen reader (VoiceOver on macOS) and verified all new/changed elements are reachable with a logical focus order.
    • I verified all new/changed elements have meaningful accessible names and roles.
    • I verified state changes are announced (e.g. checked/unchecked, expanded/collapsed, selected).
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Recordings from the C+ co-author are in the Reviewer Checklist.

Android: Native

See the Reviewer Checklist.

Android: mWeb Chrome

See the Reviewer Checklist.

iOS: Native

See the Reviewer Checklist.

iOS: mWeb Safari

See the Reviewer Checklist.

MacOS: Chrome / Safari

See the Reviewer Checklist.

…een expense view and table view"

This reverts commit e3cd271, which reverted Expensify/App PR 103121.
Resolved a conflict in src/ONYXKEYS.ts by keeping both TABLE_COLUMN_WIDTHS and NVP_SINGLE_EXPENSE_REPORT_VIEW.

Co-authored-by: daledah <[email protected]>
@MelvinBot
MelvinBot requested a review from a team October 12, 2026 08:37
@melvin-bot melvin-bot Bot added Melvin-Test-Android Melvin-Test-Web Triggers Melvin to run the testing steps of the PR on web labels Oct 12, 2026
@MelvinBot

Copy link
Copy Markdown
Contributor Author

I created this PR from an upstream branch since I don't have push access to your fork.

To take ownership of this branch and be able to push updates, run:

git remote add upstream https://github.com/Expensify/App.git
git fetch upstream claude-reapplySingleExpenseReportViewToggle
git checkout -b claude-reapplySingleExpenseReportViewToggle upstream/claude-reapplySingleExpenseReportViewToggle
git push -u origin claude-reapplySingleExpenseReportViewToggle

Then you can close this PR and open a new one from your fork.

@OSBotify

Copy link
Copy Markdown
Contributor

🦜 Polyglot Parrot! 🦜

Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues:

View the translation diff
diff --git a/src/languages/el.ts b/src/languages/el.ts
index c852fd73..f87f9570 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -10472,8 +10472,8 @@ ${reportName}`,
             category: 'Κατηγορία',
             tag: 'Ετικέτα',
         },
-        switchToTableView: 'Εναλλαγή σε προβολή πίνακα',
-        switchToExpenseView: 'Εναλλαγή σε προβολή δαπάνης',
+        switchToTableView: 'Αλλαγή σε προβολή πίνακα',
+        switchToExpenseView: 'Μετάβαση στην προβολή εξόδων',
     },
     report: {
         newReport: {
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 134ba044..4ebd2ba6 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -10088,7 +10088,7 @@ ${reportName}`,
             tag: 'Etiqueta',
         },
         switchToTableView: 'Cambiar a vista de tabla',
-        switchToExpenseView: 'Cambiar a vista de gasto',
+        switchToExpenseView: 'Cambiar a vista de gastos',
     },
     report: {
         newReport: {
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index fc9c2218..aa5ffda5 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -10300,7 +10300,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
             tag: 'Tag',
         },
         switchToTableView: 'Passer à la vue tableau',
-        switchToExpenseView: 'Passer à la vue dépense',
+        switchToExpenseView: 'Passer à la vue dépenses',
     },
     report: {
         newReport: {
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 983ddae9..87d11a9a 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -10228,7 +10228,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
             tag: 'Etichetta',
         },
         switchToTableView: 'Passa alla vista tabella',
-        switchToExpenseView: 'Passa alla vista spesa',
+        switchToExpenseView: 'Passa alla vista spese',
     },
     report: {
         newReport: {
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 1fbf89b4..bd8fd62e 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -10076,8 +10076,8 @@ ${reportName}`,
             category: 'カテゴリ',
             tag: 'タグ',
         },
-        switchToTableView: 'テーブル表示に切り替え',
-        switchToExpenseView: '経費表示に切り替え',
+        switchToTableView: 'テーブル表示に切り替えます',
+        switchToExpenseView: '経費ビューに切り替えます',
     },
     report: {
         newReport: {
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index faf96be7..05d13865 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -10209,7 +10209,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
             tag: 'Tag',
         },
         switchToTableView: 'Przełącz na widok tabeli',
-        switchToExpenseView: 'Przełącz na widok wydatku',
+        switchToExpenseView: 'Przełącz na widok wydatków',
     },
     report: {
         newReport: {
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 28fb5100..cd425acc 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -10193,7 +10193,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
             tag: 'Etiqueta',
         },
         switchToTableView: 'Mudar para visualização em tabela',
-        switchToExpenseView: 'Mudar para visualização de despesa',
+        switchToExpenseView: 'Mudar para visão de despesas',
     },
     report: {
         newReport: {

Note

You can apply these changes to your branch by copying the patch to your clipboard, then running pbpaste | git apply 😉

View workflow run

@codecov

codecov Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ Changes either increased or maintained existing code coverage, great job!

Files with missing lines Coverage Δ
src/CONST/index.ts 95.90% <ø> (ø)
src/ONYXKEYS.ts 100.00% <ø> (ø)
src/components/MoneyReportHeader.tsx 100.00% <100.00%> (ø)
src/components/MoneyReportHeaderActions/index.tsx 81.57% <100.00%> (+81.57%) ⬆️
...equestReportView/MoneyRequestReportActionsList.tsx 96.90% <100.00%> (+0.06%) ⬆️
.../MoneyRequestReportView/MoneyRequestReportView.tsx 75.28% <100.00%> (+0.28%) ⬆️
.../MoneyRequestReportView/SelectionToolbar/index.tsx 71.91% <100.00%> (+0.31%) ⬆️
src/components/Search/index.tsx 70.93% <100.00%> (+0.10%) ⬆️
src/hooks/useExpenseActions.ts 69.36% <100.00%> (+2.55%) ⬆️
src/hooks/useSingleExpenseReportView.ts 100.00% <100.00%> (ø)
... and 21 more
... and 768 files with indirect coverage changes

@MelvinBot

MelvinBot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Android test steps verification results: ⚠️ partial

Steps 1–7 pass on Android: the toggle, menu label swap, row navigation, composer, and saved table view all work (steps come from the original PR's Tests section, since this PR's Tests section is still TODO). Steps 8–11 were not run because the app froze while creating report B: it stopped responding after tapping "Create expense" on a new, empty draft report, outside the toggle flow.
Report A reopened in table view

Step Status
1. Report A (1 expense) opens in single-expense view with receipt and fieldsThe receipt placeholder and the Amount, Merchant, Date, Category, Reimbursable, and Report fields show.
Report A single-expense view
✅
2. More menu shows "Switch to table view" just before "View details"Menu order: Duplicate report, Export, Download report, Switch to table view, View details, Delete.
More menu with Switch to table view
✅
3. "Switch to table view" shows a one-row table with no side-by-side receiptThe table shows one row ("Report A Expense 1", $15.00) and Total $15.00. No receipt pane.
Report A table view, one row
✅
4. More menu now reads "Switch to expense view"The option shows in the same position, between Download report and View details.
More menu with Switch to expense view
✅
5. Selecting the expense row opens the expense without redirecting backThe transaction thread opened and stayed open after a settle wait.
Expense opened from table view
✅
6. A comment sent from the composer appears in the report"Test comment from table view" appeared right away.
Comment appears in report
✅
7. Reopening report A shows the table viewAfter leaving and reopening from the Expenses list, report A opened directly in table view.
Report A reopened in table view
✅
8. Report B (2+ expenses) More menu has no view toggleNot run. The app froze while creating report B: taps and hardware Back had no effect, and Metro logs and network traffic stopped. A "DISMISS_MODAL was not handled by any navigator" warning was logged earlier.
⚠️
9. "Switch to expense view" restores the single-expense view and the menu labelNot run because of the app freeze.
⚠️
10. Offline: "Switch to table view" applies right awayNot run because of the app freeze.
⚠️
11. Back online: report stays in table viewNot run because of the app freeze.
⚠️

view run · view recording

@MelvinBot

MelvinBot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Web test steps verification results: ✅ pass

The single-expense/table view toggle works on Web: the More menu label swaps, the view switches right away (including offline), the choice persists across navigation, and the option is hidden on multi-expense reports. Steps come from the original PR's Tests section, since this PR's Tests section is still TODO.
Report A table view after returning online

Step Status
1. Report A (1 expense) opens in single-expense view with receipt and expense fieldsThe receipt panel and the Amount, Description, Merchant, Date, and Category fields show.
Report A single-expense view with receipt and fields
✅
2. More menu shows "Switch to table view" just before "View details""Switch to table view" is listed directly above "View details".
More menu with Switch to table view option
✅
3. "Switch to table view" shows a one-row table with no side-by-side receiptThe report shows a table (Receipt, Type, Date, Merchant, Category, Amount columns) with one row and no receipt pane.
Report A table view with single row
✅
4. More menu now reads "Switch to expense view"The option shows in the same menu position.
More menu with Switch to expense view option
✅
5. Selecting the expense row opens the expense without redirecting backThe expense thread ("$20.00 for Report A Expense 1") opened and stayed open.
Expense detail opened from table row
✅
6. A comment sent from the composer appears in the report"Testing comment on report A" appeared right after sending.
Comment visible in report A thread
✅
7. Leaving and reopening report A shows the table viewAfter going to the Reports list and back, report A opened directly in table view.
Report A reopened in table view
✅
8. Report B (2 expenses) More menu has no view toggleMenu options: Add expense, Duplicate report, Export, Download report, View details, Delete.
Report B More menu without view toggle
✅
9. "Switch to expense view" restores the single-expense view and the menu labelThe receipt and fields returned, and the More menu shows "Switch to table view" again.
Report A back in single-expense viewMore menu showing Switch to table view again
✅
10. Offline: "Switch to table view" applies right awayWith Force offline on and the offline banner showing, the table view rendered immediately.
Report A table view while offline
✅
11. Back online: report stays in table viewAfter turning Force offline off and reopening report A, it stayed in table view.
Report A table view after returning online
✅
12. No errors in the JS consoleNo error banners, toasts, or broken UI appeared. The test tooling can't read the browser console, so this is based on the UI only.
✅

view run · view recording

@daledah

daledah commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

@MelvinBot please fix blockers #103387 #103389

MelvinBot and others added 2 commits October 12, 2026 09:28
In the table view, More > Delete on a single-expense expense report now runs the report-level delete, which moves the expense to the self DM, instead of deleting the expense. IOU and invoice reports keep deleting their only expense.

Co-authored-by: daledah <[email protected]>
The report header turned mobile selection mode off whenever one expense or fewer remained. A single-expense report in the table view shows a selectable row, so selection mode now stays on until no expenses remain.

Co-authored-by: daledah <[email protected]>
@MelvinBot

MelvinBot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor Author

I pushed fixes for both blockers to this PR.

I couldn't test this manually. The web test session showed a blank page before any step ran, so you still need to test it in the app.

Changes and checks

view run · no recording available

@daledah

daledah commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

@MelvinBot please fix blockers #103391 #103392

MelvinBot and others added 2 commits October 12, 2026 10:02
…e view

In the table view a single-expense report lists its expense as a selectable row, but the header still treated it as a transaction thread, so Submit and More stayed enabled during bulk selection. The header now treats it like a multi-expense report.

Co-authored-by: daledah <[email protected]>
On a Submit workspace, bulk Submit opens the submit-to popover, but the selection toolbar had no popover provider above it, so the click did nothing. The provider now wraps the toolbar, and the bulk action bar and the selection dropdown act as its anchor.

Co-authored-by: daledah <[email protected]>
@MelvinBot

MelvinBot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor Author

I fixed both blockers and pushed two commits to this PR. I couldn't check them in the browser because the web test session loaded a blank page. Unit tests cover both fixes.

Checks
  • I added 2 test files. They fail without the fixes and pass with them.
  • 113 tests pass across 10 related suites.
  • npm run typecheck, npm run lint, the React Compiler check, and npm run spell-changed pass on the changed files.
  • I couldn't run oxfmt here, so CI will check formatting.
  • To give the floating bar a shared anchor, BulkActionBar's barRef prop now also accepts callback refs. Existing callers don't change.

Please test on a Submit workspace: switch a one-expense report to table view, select the expense, and click Submit on the floating bar.


view run · no recording available

@MelvinBot

Copy link
Copy Markdown
Contributor Author

⚠️ MelvinBot CI Fix Loop Detected

MelvinBot has made 5 consecutive commits trying to fix CI failures. Automatic CI fix dispatches are now paused for this PR.

Next steps: A human should review the recent commits and resolve the conflicting CI errors manually.

1 similar comment
@MelvinBot

Copy link
Copy Markdown
Contributor Author

⚠️ MelvinBot CI Fix Loop Detected

MelvinBot has made 5 consecutive commits trying to fix CI failures. Automatic CI fix dispatches are now paused for this PR.

Next steps: A human should review the recent commits and resolve the conflicting CI errors manually.

@daledah

daledah commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

@MelvinBot oke please continue with #103394 #103396 #103425

MelvinBot and others added 3 commits October 12, 2026 10:31
A Pay someone report's expense is the report itself, so it has no expense
thread for a table row to open. Pressing the row created an empty thread
that the RHP then closed. These reports now ignore the table view
preference and don't offer the switch.

Co-authored-by: daledah <[email protected]>
Deleting a report's only expense deletes the report too, so popping back to
that report in the super wide RHP showed the Not here page.

Co-authored-by: daledah <[email protected]>
Keeping a duplicate from another report discards the only expense of a
single-expense report in the table view. Returning to that report in the
super wide RHP showed the Not here page.

Co-authored-by: daledah <[email protected]>
@MelvinBot

MelvinBot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor Author

I pushed fixes for all three blockers to this PR, one commit each. I couldn't check them in the browser because the web test session loaded a blank page again. Unit tests cover all three fixes.

Checks and notes
  • npm run typecheck and lint on all changed files pass.
  • The related Jest suites pass (21 suites), including new tests for the hook, the More menu, and the delete navigation.
  • The React Compiler check passes for the changed files. DynamicConfirmationPage.tsx and SearchMoneyRequestReportPage.tsx fail it with the same errors on the previous commit, so those failures aren't from this change.
  • I couldn't run oxfmt or spell-changed locally, so CI will cover them.
  • For Pay someone - Expense details RHP closes after opening it from table view, I first tried letting the row open the pay action's thread. An existing test (TransactionThreadNavigationUtilsTest.ts) says that thread is the "paid" system message, not the expense, so I dropped that approach.
  • The delete fix closes the RHP and shows whatever was under it, such as the workspace chat or Search. It changes nothing when the report keeps other expenses.

Still open: Expense - Report opens in default expense view on the second device, which needs backend support for nvp_expensify_singleExpenseReportView.


view run · no recording available

@daledah

daledah commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

@MelvinBot please fix the oxfmt check

@MelvinBot

Copy link
Copy Markdown
Contributor Author

Fixed the failing Oxfmt check in bf0b5fd. Oxfmt wanted the useResponsiveLayoutOnWideRHP mock in tests/ui/components/MoneyReportHeaderActionsSingleExpenseTableViewTest.tsx:19 on one line. I ran npm run fmt locally, and this was the only file it changed.

The other failing check, Check independent approval, only needs a reviewer approval.


view run

@daledah

daledah commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

@MelvinBot please open this PR

@lanitochka17

Copy link
Copy Markdown

Deploy Blocker #104649 was identified to be related to this PR.

@mitarachim

Copy link
Copy Markdown

Deploy Blocker #104651 was identified to be related to this PR.

@lanitochka17

Copy link
Copy Markdown

Deploy Blocker #104653 was identified to be related to this PR.

@lanitochka17

Copy link
Copy Markdown

Deploy Blocker #104654 was identified to be related to this PR.

@mitarachim

Copy link
Copy Markdown

Deploy Blocker #104657 was identified to be related to this PR.

@mountiny

Copy link
Copy Markdown
Contributor

@MelvinBot can you create revert of this PR? note where the conflicts were during the revert and how you resolved them in the pr body

@MelvinBot

Copy link
Copy Markdown
Contributor Author

I opened the revert as a draft: Revert "Reapply "Add a More menu option to switch single-expense reports between expense view and table view"". It's assigned to mountiny, and the PR body links the 6 deploy blockers.

One conflict, in the imports of src/libs/ReportSecondaryActionUtils.ts:

I removed isSingleTransactionReport and kept getLoginByAccountID, which the later code still uses. All other files reverted cleanly.

I couldn't run typecheck, lint, or Jest here, so CI needs to confirm them. I checked that no feature references remain and that no import removed by the revert is still in use.

@jponikarchuk

Copy link
Copy Markdown

Deploy Blocker #104676 was identified to be related to this PR.

@jponikarchuk

Copy link
Copy Markdown

Deploy Blocker #104678 was identified to be related to this PR.

@jponikarchuk

Copy link
Copy Markdown

Deploy Blocker #104681 was identified to be related to this PR.

@jponikarchuk

Copy link
Copy Markdown

Deploy Blocker #104682 was identified to be related to this PR.

LukasMod pushed a commit to callstack-internal/Expensify-App that referenced this pull request Oct 22, 2026
…pplySingleExpenseReportViewToggle"

This reverts commit 7cb9aa2, reversing
changes made to 7255f7a.

Co-authored-by: Vit Horacek <[email protected]>
@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/Beamanator in version: 9.5.18-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 cancelled 🔪

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Melvin-Test-Android Melvin-Test-Web Triggers Melvin to run the testing steps of the PR on web

Projects

None yet

Development

Successfully merging this pull request may close these issues.