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