9.4.17-3

Expensify/App9.4.17-3Jun 23, 2026by github-actions[bot]

AI Summary

This release adds new features such as a 'Recently added' slot on the home page, multi-select PDF download, and commuter exclusions for policies. It also includes significant refactoring of InteractionManager and Onyx connections, alongside various bug fixes and UI improvements.

Key Highlights

  • Add 'Recently added' slot to Home page
  • Enable multi-select Download as PDF
  • Introduce commuter exclusions for policies
  • Migrate InteractionManager and remove Onyx.connect() for specific keys
  • Upgrade on Approval flow (Wave 3)

New Features

  • Multi-select Download as PDF
  • Commuter exclusions for policies
  • Submit button with manager email prompt
  • Remove allReportActions usage in buildOptimisticChangePolicyData
  • Rules Revamp R1: Add tabbed Rules page layout and restructure General tab

Full Release Notes

## What's Changed
* [Home Page] Add Recently added slot to Home by @adamgrzybowski in https://github.com/Expensify/App/pull/93451
* Migrate InteractionManager - batch 9, part 2 by @collectioneur in https://github.com/Expensify/App/pull/93816
* redirect 2FA in incognito while 2FA is enabled by @mukhrr in https://github.com/Expensify/App/pull/93656
* Introduce setting commuter exclusions for policies  by @Gonals in https://github.com/Expensify/App/pull/92496
* Remove getPersonalDetailsByIDs in ReportActionsUtils by @bernhardoj in https://github.com/Expensify/App/pull/92481
* feat: Enable multi-select Download as PDF by @truph01 in https://github.com/Expensify/App/pull/92275
* Remove allReportActions usage in buildOptimisticChangePolicyData by @bernhardoj in https://github.com/Expensify/App/pull/93560
* [Submit] Submit button with manager email prompt by @hungvu193 in https://github.com/Expensify/App/pull/87998
* [NoQA] Fix flaky pushTransactionAutoSelectionsOnyxData unit tests by @mountiny in https://github.com/Expensify/App/pull/93962
* Migrate InteractionManager - batch 9, part 1 by @collectioneur in https://github.com/Expensify/App/pull/92378
* Fix flaky ContactMethodsPage error indicator test by @MelvinBot in https://github.com/Expensify/App/pull/94090
* [Payment due @thelullabyy] Vendor matching CC - R2: App (Sage Intacct extension) by @Beamanator in https://github.com/Expensify/App/pull/91976
* [Payment due @truph01] Docs updates for E/A#92749 add Save step to Pronouns instructions by @MelvinBot in https://github.com/Expensify/App/pull/93608
* [Payment due @FitseTLT] [No QA] Docs updates for E/A#91743 clarify per-card default export label by @MelvinBot in https://github.com/Expensify/App/pull/93607
* Docs updates for E/A#91983 Add Review expenses item to For you by @MelvinBot in https://github.com/Expensify/App/pull/93480
* Fix empty "Upload Additional Documents" page in NonUSD owner flow by @yusufdeveloper2903 in https://github.com/Expensify/App/pull/91289
* Pass the personal details list from useOnyx to getNewAccountIDsAndLogins by @bernhardoj in https://github.com/Expensify/App/pull/92609
* Recreate: Migrate InitialListValueSelectorModal to dynamic @react-navigation route (with regression fixes) by @MelvinBot in https://github.com/Expensify/App/pull/94014
* Migrate feature training modals to centered modal layout by @jmusial in https://github.com/Expensify/App/pull/93437
* [CP Staging] Fix emoji picker bounce when keyboard opens/closes on Android by @MelvinBot in https://github.com/Expensify/App/pull/94106
* fix: close date picker on forward/backward navigation in iOS mWeb by @x-dev90 in https://github.com/Expensify/App/pull/93617
* Part 4: Remove Onyx.connect() for the key: ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS in src/libs/actions/IOU.ts by @thelullabyy in https://github.com/Expensify/App/pull/94004
* [Submit] Upgrade on Approval flow (Wave 3) by @hungvu193 in https://github.com/Expensify/App/pull/91943
* Decompose ReportActionsList: 9 by @LukasMod in https://github.com/Expensify/App/pull/94043
* Add isLoading guard to onboarding pages to prevent duplicate tasks by @MelvinBot in https://github.com/Expensify/App/pull/89991
* [No QA] Helpsite update walkthroughs by @stephanieelliott in https://github.com/Expensify/App/pull/93887
* fix: Report title link from Spend > Expenses opens Inbox instead of Spend super-wide modal by @nkdengineer in https://github.com/Expensify/App/pull/93162
* [Domain Control] Split domain verify/verified routes for SAML and Members by @jakubstec in https://github.com/Expensify/App/pull/91747
* [Performance] Fix dismiss-only spans retaining stale report IDs on Search by @JakubKorytko in https://github.com/Expensify/App/pull/93716
* Update the policy distance rates table to the new style by @luacmartins in https://github.com/Expensify/App/pull/93872
* Refactor MigratedUserWelcome modal to CenteredModalLayout by @jmusial in https://github.com/Expensify/App/pull/93815
* Fix Certinia prerequisites CTA being covered by offline indicator by @MelvinBot in https://github.com/Expensify/App/pull/94085
* Fix distance e-receipt overlay showing after editing when cursor hovers over image by @WojtekBoman in https://github.com/Expensify/App/pull/93943
* [No QA] Avoid building archived-reports Set in findLastAccessedReport path by @TMisiukiewicz in https://github.com/Expensify/App/pull/94146
* [No QA] Remove no-op report-summary transformation from empty-report check by @TMisiukiewicz in https://github.com/Expensify/App/pull/94148
* [No QA] Fix [Sentry: APP-4FK] HybridApp Android NullPointerException in expo TaskService.executeTask by @GCyganek in https://github.com/Expensify/App/pull/94145
* [No QA] Avoid building archived reports Set upfront when marking all messages as read by @TMisiukiewicz in https://github.com/Expensify/App/pull/94152
* Extend the emoji list to add Version 15.1, 16.0, 17.0 unicode emojis by @shubham1206agra in https://github.com/Expensify/App/pull/93595
* Remove allReportActions usage from readNewestAction by @bernhardoj in https://github.com/Expensify/App/pull/93571
* [No-QA] refactor: Navigation code in SelectionList component   by @TaduJR in https://github.com/Expensify/App/pull/92662
* [No QA] Docs updates for E/A#92146 document Inbox All/Unread/To-dos filter tabs by @MelvinBot in https://github.com/Expensify/App/pull/93479
* [No QA] Avoid building archived reports ID set in useDeleteTransactions by @TMisiukiewicz in https://github.com/Expensify/App/pull/94154
* [No QA] perf: drop reportsSelector in useFilterFormValues by @TMisiukiewicz in https://github.com/Expensify/App/pull/94158
* Toggle selection on deleted transaction row press in Search by @MelvinBot in https://github.com/Expensify/App/pull/93702
* [Rules Revamp R1] Add tabbed Rules page layout and restructure General tab by @Krishna2323 in https://github.com/Expensify/App/pull/93185
* [NoQA] Add patches folder dependency for jest cache by @shubham1206agra in https://github.com/Expensify/App/pull/94197
* [Payment due @ZhenjaHorbach] [No QA] Avoid building archived reports ID set in Search getSections pipeline by @TMisiukiewicz in https://github.com/Expensify/App/pull/94182
* feat: remove isNewManualExpenseFlowEnabled beta flag by @thelullabyy in https://github.com/Expensify/App/pull/94134
* (Part 4) Remove Onyx.connect() for the key: ONYXKEYS.PERSONAL_DETAILS_LIST in src/libs/actions/Report.ts by @lorretheboy in https://github.com/Expensify/App/pull/93971
* Add usePayChatReportActions hook and integrate it into payment components by @cretadn22 in https://github.com/Expensify/App/pull/93038
* fix: borderRadius incorrectly drawn in headings by @war-in in https://github.com/Expensify/App/pull/93594
* Cleanup unused APIs and FormIDs definition by @shubham1206agra in https://github.com/Expensify/App/pull/93906
* [NO QA] Fix Travel "Let's go" dead-end for half-provisioned workspaces by @blimpich in https://github.com/Expensify/App/pull/93862
* [cp staging] Disable currency selection on stag & prod by @JS00001 in https://github.com/Expensify/App/pull/94195
* [GPS] Update user location on GPS screen when there is no active GPS trip by @GCyganek in https://github.com/Expensify/App/pull/91418
* Revert "Redirect agents off guarded routes on every focus" by @blimpich in https://github.com/Expensify/App/pull/94205
* [No QA] Add help-site search keyword aliases for cancel/per-diem/switch-to-classic by @MelvinBot in https://github.com/Expensify/App/pull/93136
* [No QA] Docs updates for E/A#89163 Add Go back just once option to Classic switch by @MelvinBot in https://github.com/Expensify/App/pull/91043
* Show saved searches in alphabetical order by @JS00001 in https://github.com/Expensify/App/pull/93937
* fix: App back button loops between employee step and verify email step by @nkdengineer in https://github.com/Expensify/App/pull/93399
* Use custom compass on the maps by @GCyganek in https://github.com/Expensify/App/pull/93026
* [No QA] Docs updates for E/A#93060 document Export current view CSV option by @MelvinBot in https://github.com/Expensify/App/pull/92191
* [Onyx bump] Bump react-native-onyx from 3.0.83 to 3.0.85 by @sosek108 in https://github.com/Expensify/App/pull/93804
* [Payment due @QichenZhu] Fix NotFoundPage flash on card details opened via deep link by @heekinho in https://github.com/Expensify/App/pull/93910
* [No QA] Docs updates for E/A#92169 CSV export download status modal flow by @MelvinBot in https://github.com/Expensify/App/pull/93890
* LHN - Keep Self DM visible while distance expense loads by @KJ21-ENG in https://github.com/Expensify/App/pull/93167
* Fix thinking indicator flash when agent reply lands before NVP clear by @marcaaron in https://github.com/Expensify/App/pull/93648
* Fix company card CSV import help link to point to spreadsheet article by @MelvinBot in https://github.com/Expensify/App/pull/94089
* 🍒 Cherry pick PR #94333 to staging 🍒 by @os-botify[bot] in https://github.com/Expensify/App/pull/94357


**Full Changelog**: https://github.com/Expensify/App/compare/9.4.16-5...9.4.17-3