-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Deploy Checklist: New Expensify 2026-04-02 #86989
Copy link
Copy link
Open
Labels
StagingDeployCash🔐 LockCashDeploys 🔐Prevent new code from being deployed to stagingPrevent new code from being deployed to staging
Description
Release Version: 9.3.52-3
Compare Changes: production...staging
Mobile-Expensify Changes: https://github.com/Expensify/Mobile-Expensify/compare/production...staging
This release contains changes from the following pull requests:
- feat: Update option missing for Personal Bank Accounts in ND compared to Classic #80020
- Fix: Keyboard Navigation: Paid expense details: The content is focused in a confusing order #80122
- Fix/import categories correct count #81548
- Add inactive pill to cardlist, show frozen card #82961
- feat: Allow admins to mark report with non-reimbursable expenses as paid and show decision modal if user try to pay via ACH #83329
- feat: Add verified badge in domains list row after verifying the domain #83811
- Align optimistic task chatType inheritance with backend behavior #84263
- fix: Android - Report - User is auto scrolled up after returning from second added receipt #84498
- Fix non-usd flow api error #84904
- Fix 'Waiting for you to add expenses' when creating distance expense offline #85298
- feat: date range filter UI and year picker fix (#81501) #85313
- feat: Person Amount and Attendees in Expense Table #85332
- 83830 migrate workspace general #85337
- Upgrade react-navigation to latest #85743
- Create a new generateDefaultWorkspaceName #85789
- [Payment due @rojiphil] Deleted transactions on search #85818
- Add paragraph api to skia #85829
- [Odometer] Add backup transaction for purpose of editing from confirmation #86022
- Refactor MoneyRequestOdometerImage functions #86037
- Block currency changes when workspace has partially setup bank account #86075
- Fix: Deleting one split in Top Spenders removes both splits #86090
- add policy to getForExpenseMovedFromSelfDM #86191
- Fix - Android - Accounting - Error message overlapped by OS navigation buttons #86249
- [Payment due @abzokhattab] Add OpenSearchCardFiltersPage command to the Feed selector #86319
- [ECUK In-App 3DS] Prevent unwanted validate code resend and display rate limit errors in MFA flow #86320
- Move
Onyx.connect()usage forONYXKEYS.COLLECTION.POLICY_TAGSfromgetSendInvoiceInformationtosendInvoiceinsrc/libs/actions/IOU/SendInvoice.ts#86322 - [Payment due @ChavdaSachin] Fix suggested followup ordering and add HTML formatting tests #86382
- [No QA] docs: add Print button to help site articles #86387
- [No QA] Add help site docs for Duplicate Expenses feature #86388
- Remove getPolicy usages from tax and rules functionalities #86396
- Remove the rest of the getPolicy usages #86401
- Update CTA and workspace chat copy for track-intent users #86460
- Migrate split thread comments to the original transaction's optimistic thread when reverting a split #86469
- [No QA] Fix "Refused to get unsafe header" console error on cross-origin requests #86488
- Add aria-expanded to ButtonWithDropdownMenu for screen reader accessibility #86499
- fix: Submit button is displayed on expense from archived workspace #86506
- Preserve local image source on expense creation #86512
- Spend rule section #86572
- Feat: added concierge menu item #86576
- [No QA] docs: add Spend over time section to Home Overview #86597
- [No QA] deprecate session data & refactor
getCleanUpTransactionThreadReportOnyxData#86605 - fix: Remove Onyx.connect() for the key: ONYXKEYS.COLLECTION.POLICY (part 2) #86615
- Add billing restriction check for Per Diem move-to-new-report #86616
- fix Expense - Unable to Reject expense & incorrect “Moved expense” message #86622
- Sort table by date when clicking into chart data point #86640
- [No QA] chore: LHNOptionsList cleanup — hoist isWeb, deduplicate reportAttributes, remove duplicate guard #86647
- Implement correct path handling in navigation state #86653
- Workspace - App reopens workspace settings when swiping back after enabling workspace feature #86655
- fix: start HybridApp splashScreenState as undefined until native settings arrive #86676
- fix: update dark-contrast config #86680
- Part 13 - Remove Onyx.connectWithoutView for ONYXKEYS.BETAS in ReportUtils and make betas required across all callers. #86706
- fix: android pressability issue with measureAsyncOnUI patch (v5) #86708
- fix - concierge task is not auto-completed after completing Test drive via Reports tab #86717
- decompose ReportScreen 6c: extract not-found guards #86720
- Decompose MoneyReportHeader primary actions into a separate component #86723
- Remove onClick from non-interactive Pressables to fix TalkBack a11y #86731
- Extract MoneyReportHeader status bar logic into hook and component #86732
- Missing messages edge case #86735
- Optimize post-expense search page transition with progressive rendering #86738
- Update merchant rules styles #86743
- Enable Odometer distance expense feature #86769
- [No QA] Upgrade JS GitHub Actions runtime from node20 to node24 #86771
- [No QA] ci: Fix HTTP 403 on gh release create by granting contents:write permission #86795
- [CP Staging] Revert #80122 #86802
- Revert 85818 #86804
- Part 2 - Thread delegateEmail through editTaskAssignee to remove Onyx.connect. #86805
- [CP Staging] Revert #80020 #86808
- refactor getReportPreviewMessage to use conciergeReportID from useOnyx #86826
- [CP Staging] Fix: Update the condition to correctly display user options on the reject reason screen #86843
- Part 1: Remove Onyx.connect() for the key: ONYXKEYS.SESSION in src/libs/actions/Policy/Policy.ts #86846
- Handle Escape key navigation in WorkspaceNavigator #86849
- Part 2: Remove Onyx.connect() for the key: ONYXKEYS.PERSONAL_DETAILS_LIST in src/libs/actions/Policy/Policy.ts #86851
- [cp staging] remove Columns button from Report layout for now #86872
- Fix main types #86878
- [Snyk] Fix for 2 vulnerabilities #86879
- refactor: convert duplicate expense error modals to showConfirmModal #86886
- Revert "fix: use in-app VisionCamera for chat attachments on Android and iOS (v2)" #86902
- [No QA] Fix types in main #86914
- Revert "follow-up: Start & End date does not matches Title format with Trip-based Auto-reporting" #86918
- Decompose DecisionModal inline state into useDecisionModal hook in MoneyReportHeader #86939
- Extract ReportPDFDownloadModal from MoneyReportHeader #86946
- Extract educational modals from MoneyReportHeader into MoneyReportHeaderEducationalModals #86950
- [No QA] fix: Remove duplicate useOnyx subscription and redundant hook call in LHN #86956
- Fixes for regressions for New card selector #86960
- [No QA] Extract useExportAgainModal hook from MoneyReportHeader #86961
- [NoQA] Update claude-code-action to v1.0.83 #86976
- Add missing import to MoneyReportHeaderEducationalModals #86979
- [CP Staging] Revert "fix: Mark as unread doesn’t work with IOU report" #86980
- [CP Staging] Fix non-reimbursable pay button options in report header #87023
- [cp stag] Revert "Remove onClick from non-interactive Pressables to fix TalkBack a11y" #87062
- Fix receipt thumbnail disappearing after rotate/crop #87091
Mobile-Expensify PRs:
Deploy Blockers:
- Expense - "marked as done" message when copied shows "submitted" #86990
- Reports - Dropdown button shows Submit when one of the reports can only be marked as done #87001
- Reports - Clicking on disabled Submit button opens the expense report when offline #87002
- Next step shows "Waiting for you to submit expenses" when it can only be marked as done #87004
- Expense - Attendees field does not update to custom avatar #87005
- Expense - Per attendee amount on the table does not show negative sign #87006
- Reports - Original expense remains after splitting expense offline #87015
- Reports- Attendees&Per attendee are still enabled by default after disabling Attendee tracking #87016
- Reports- In Custom date range, "To" option is disabled #87017
- Expense - The report header shows only the Mark as Paid option #87018
- Reports - Custom range error message is not visible without scrolling #87019
- Reports - Custom Range error message persists after selecting valid dates #87020
- Bank account - Signer info tab not allows user to proceed #87022
- Expense - Carousel arrow button is not disabled when it reaches the end of carousel #87025
- Reports - Dates are still applied after being resetted on "Custom Range" filter. #87026
- Web - Expense - Expense RHPs in the background flicker when opening Category picker #87027
- Reports - Inconsistent behavior of "Range" text on "Date" exposed filter and "Filters" page #87028
- Scan- The old receipt still display on expense after replace new receipt #87029
- Workspace - Member's workspace chat shows "This is where you'll track expenses" when viewed as admin #87031
- Reports -"Submit" button instead of "Done" if expense is created offline while on "Expenses" #87037
- Expense - Mark as done button changes to Submitted in expense report #87049
- Scan - Thumbnails are not updated in expense details and report preview #87051
- Expense-Incorrect “Submitted” status in LHN & hold message in header after Mark as Done #87074
- Reports - Unable to sort by Attendees and Per attendee #87088
Chronologically ordered merged PRs (oldest first)
- Enable Odometer distance expense feature #86769
- feat: Add verified badge in domains list row after verifying the domain #83811
- [Payment due @rojiphil] Deleted transactions on search #85818
- Add aria-expanded to ButtonWithDropdownMenu for screen reader accessibility #86499
- Fix: Keyboard Navigation: Paid expense details: The content is focused in a confusing order #80122
- feat: Update option missing for Personal Bank Accounts in ND compared to Classic #80020
- [CP Staging] Revert #80020 #86808
- Add billing restriction check for Per Diem move-to-new-report #86616
- [CP Staging] Revert #80122 #86802
- Mobile-Expensify submodule update to
9.3.51-1— Adhoc Build - [No QA] docs: add Print button to help site articles #86387
- [CP Staging] Fix: Update the condition to correctly display user options on the reject reason screen #86843
- Remove getPolicy usages from tax and rules functionalities #86396
- Mobile-Expensify submodule update to
9.3.51-2— Adhoc Build - Fix/import categories correct count #81548
- feat: Allow admins to mark report with non-reimbursable expenses as paid and show decision modal if user try to pay via ACH #83329
- Block currency changes when workspace has partially setup bank account #86075
- [No QA] Add help site docs for Duplicate Expenses feature #86388
- Decompose MoneyReportHeader primary actions into a separate component #86723
- [Payment due @abzokhattab] Add OpenSearchCardFiltersPage command to the Feed selector #86319
- Part 13 - Remove Onyx.connectWithoutView for ONYXKEYS.BETAS in ReportUtils and make betas required across all callers. #86706
- Extract MoneyReportHeader status bar logic into hook and component #86732
- Migrate split thread comments to the original transaction's optimistic thread when reverting a split #86469
- [cp staging] remove Columns button from Report layout for now #86872
- Mobile-Expensify submodule update to
9.3.51-3— Adhoc Build - Fix main types #86878
- Fix 'Waiting for you to add expenses' when creating distance expense offline #85298
- 83830 migrate workspace general #85337
- [Payment due @ChavdaSachin] Fix suggested followup ordering and add HTML formatting tests #86382
- Sort table by date when clicking into chart data point #86640
- Mobile-Expensify submodule update to
08e403c— Adhoc Build
↳ https://github.com/Expensify/Mobile-Expensify/pull/13898 - fix: Remove Onyx.connect() for the key: ONYXKEYS.COLLECTION.POLICY (part 2) #86615
- [No QA] chore: LHNOptionsList cleanup — hoist isWeb, deduplicate reportAttributes, remove duplicate guard #86647
- [ECUK In-App 3DS] Prevent unwanted validate code resend and display rate limit errors in MFA flow #86320
- Handle Escape key navigation in WorkspaceNavigator #86849
- fix: android pressability issue with measureAsyncOnUI patch (v5) #86708
- refactor: convert duplicate expense error modals to showConfirmModal #86886
- fix - concierge task is not auto-completed after completing Test drive via Reports tab #86717
- Update merchant rules styles #86743
- [No QA] deprecate session data & refactor
getCleanUpTransactionThreadReportOnyxData#86605 - add policy to getForExpenseMovedFromSelfDM #86191
- [Odometer] Add backup transaction for purpose of editing from confirmation #86022
- Mobile-Expensify submodule update to
9.3.51-4— Adhoc Build - [No QA] docs: add Spend over time section to Home Overview #86597
- Revert 85818 #86804
- Mobile-Expensify submodule update to
9.3.51-5— Adhoc Build - Implement correct path handling in navigation state #86653
- feat: date range filter UI and year picker fix (#81501) #85313
- Update CTA and workspace chat copy for track-intent users #86460
- Move
Onyx.connect()usage forONYXKEYS.COLLECTION.POLICY_TAGSfromgetSendInvoiceInformationtosendInvoiceinsrc/libs/actions/IOU/SendInvoice.ts#86322 - Refactor MoneyRequestOdometerImage functions #86037
- Missing messages edge case #86735
- Part 1: Remove Onyx.connect() for the key: ONYXKEYS.SESSION in src/libs/actions/Policy/Policy.ts #86846
- [No QA] Fix types in main #86914
- Mobile-Expensify submodule update to
9.3.51-6— Adhoc Build - Feat: added concierge menu item #86576
- Revert "fix: use in-app VisionCamera for chat attachments on Android and iOS (v2)" #86902
- Preserve local image source on expense creation #86512
- feat: Person Amount and Attendees in Expense Table #85332
- Mobile-Expensify submodule update to
9.3.51-7— Adhoc Build - Workspace - App reopens workspace settings when swiping back after enabling workspace feature #86655
- Fix - Android - Accounting - Error message overlapped by OS navigation buttons #86249
- Part 2: Remove Onyx.connect() for the key: ONYXKEYS.PERSONAL_DETAILS_LIST in src/libs/actions/Policy/Policy.ts #86851
- [No QA] Fix "Refused to get unsafe header" console error on cross-origin requests #86488
- Add inactive pill to cardlist, show frozen card #82961
- [No QA] fix: Remove duplicate useOnyx subscription and redundant hook call in LHN #86956
- refactor getReportPreviewMessage to use conciergeReportID from useOnyx #86826
- Decompose DecisionModal inline state into useDecisionModal hook in MoneyReportHeader #86939
- Remove the rest of the getPolicy usages #86401
- Revert "follow-up: Start & End date does not matches Title format with Trip-based Auto-reporting" #86918
- Extract educational modals from MoneyReportHeader into MoneyReportHeaderEducationalModals #86950
- Create a new generateDefaultWorkspaceName #85789
- decompose ReportScreen 6c: extract not-found guards #86720
- Mobile-Expensify submodule update to
9.3.51-8— Adhoc Build - Fix: Deleting one split in Top Spenders removes both splits #86090
- Mobile-Expensify submodule update to
9.3.51-9— Adhoc Build - [No QA] Extract useExportAgainModal hook from MoneyReportHeader #86961
- Extract ReportPDFDownloadModal from MoneyReportHeader #86946
- fix: update dark-contrast config #86680
- Remove onClick from non-interactive Pressables to fix TalkBack a11y #86731
- Align optimistic task chatType inheritance with backend behavior #84263
- fix: Android - Report - User is auto scrolled up after returning from second added receipt #84498
- [No QA] Upgrade JS GitHub Actions runtime from node20 to node24 #86771
- [Snyk] Fix for 2 vulnerabilities #86879
- Part 2 - Thread delegateEmail through editTaskAssignee to remove Onyx.connect. #86805
- Spend rule section #86572
- [No QA] ci: Fix HTTP 403 on gh release create by granting contents:write permission #86795
- fix Expense - Unable to Reject expense & incorrect “Moved expense” message #86622
- Add paragraph api to skia #85829
- Fixes for regressions for New card selector #86960
- [NoQA] Update claude-code-action to v1.0.83 #86976
- Add missing import to MoneyReportHeaderEducationalModals #86979
- fix: Submit button is displayed on expense from archived workspace #86506
- [CP Staging] Revert "fix: Mark as unread doesn’t work with IOU report" #86980
- Optimize post-expense search page transition with progressive rendering #86738
- Mobile-Expensify submodule update to
9.3.51-10— Adhoc Build - Upgrade react-navigation to latest #85743
- Fix non-usd flow api error #84904
- fix: start HybridApp splashScreenState as undefined until native settings arrive #86676
- Mobile-Expensify submodule update to
9.3.52-0— Adhoc Build - [CP Staging] Fix non-reimbursable pay button options in report header #87023
- Mobile-Expensify submodule update to
9.3.52-1— d700ac2 - [cp stag] Revert "Remove onClick from non-interactive Pressables to fix TalkBack a11y" #87062
- Mobile-Expensify submodule update to
9.3.52-2— 05d1883 - Fix receipt thumbnail disappearing after rotate/crop #87091
- Mobile-Expensify submodule update to
9.3.52-3— 38967c4
Deployer verifications:
- I checked Sentry for this release version and verified that this release does not introduce any new crashes. More detailed instructions on this verification can be found here.
- I checked Sentry for the previous release version and verified that the release did not introduce any new crashes. Because mobile deploys use a phased rollout, completing this checklist will deploy the previous release version to 100% of users. More detailed instructions on this verification can be found here.
- I checked GitHub Status and verified there is no reported incident with Actions.
cc @Expensify/applauseleads
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
StagingDeployCash🔐 LockCashDeploys 🔐Prevent new code from being deployed to stagingPrevent new code from being deployed to staging