9.4.40-0
Expensify/App9.4.40-0Jul 21, 2026by github-actions[bot]
AI Summary
A significant maintenance release introducing new features like merge reports and merchant rules, alongside extensive performance improvements and Onyx refactoring.
Key Highlights
- Resolve OOM crash for high-traffic accounts
- feat: implement mergeReports() action
- Add merchant rules spreadsheet import flow
- Remove Onyx.connect() usage extensively across the codebase
- Fix Android 'Already closed' crash on receipt PDF render
New Features
- feat: implement mergeReports() action
- Add merchant rules spreadsheet import flow
- Add View transactions shortcut under Current balance
Full Release Notes
## What's Changed * [No QA] fix: do not save queueFlushedData on failed responses by @BartekObudzinski in https://github.com/Expensify/App/pull/96041 * Resolve OOM crash for high-traffic accounts caused by retryParams by @QichenZhu in https://github.com/Expensify/App/pull/95813 * Delete error only shows the updated message after opening Expensify Card by @dukenv0307 in https://github.com/Expensify/App/pull/95640 * Prevent OOM tab reload when attaching multiple files on mWeb by @trasnake87 in https://github.com/Expensify/App/pull/93234 * [No QA] Skip short mentions list computation for public-domain users by @adhorodyski in https://github.com/Expensify/App/pull/96264 * refactor: extract queue-derived pending-request state into PendingRequests module by @BartekObudzinski in https://github.com/Expensify/App/pull/96040 * [Home Page] Empty For You section is only hidden after creating a workspace by @adamgrzybowski in https://github.com/Expensify/App/pull/95969 * restore invited login when OpenReport settles the participant without one by @mukhrr in https://github.com/Expensify/App/pull/95594 * feat: add explicit terminal state to search snapshot by @BartekObudzinski in https://github.com/Expensify/App/pull/96043 * Add View transactions shortcut under Current balance by @neerajbachani in https://github.com/Expensify/App/pull/90402 * Revert "migrate SPLIT_EXPENSE_EDIT" by @mjasikowski in https://github.com/Expensify/App/pull/96277 * Make Mark as exported system message selectable on desktop web by @MelvinBot in https://github.com/Expensify/App/pull/96014 * [No QA] Skip empty cherry-picks instead of opening a conflict PR by @grgia in https://github.com/Expensify/App/pull/95508 * Improve Form-SubmitButton INP by @nabi-ebrahimi in https://github.com/Expensify/App/pull/95783 * [Payment due @parasharrajat] Add None option to clear default custom unit category by @ShridharGoel in https://github.com/Expensify/App/pull/95396 * [Sentry: APP-2D7] Web Notification illegal constructor crash by @lorretheboy in https://github.com/Expensify/App/pull/95341 * Fix: return home URL with backTo param for invalid reportID in getRoute by @lorretheboy in https://github.com/Expensify/App/pull/95637 * Replace getDisplayNameOrDefault with temporaryGetDisplayNameOrDefault - batch 9 by @cretadn22 in https://github.com/Expensify/App/pull/96113 * Don't pass the whole personal details list by @bernhardoj in https://github.com/Expensify/App/pull/96029 * Fix filter pill overflow by restoring the 256px max width cap by @ahmdshrif in https://github.com/Expensify/App/pull/95943 * Pass ownerLogin as param to isViolationDismissed #3 by @bernhardoj in https://github.com/Expensify/App/pull/96022 * Update conciergeReportID to remove Onyx.connect - 30 by @cretadn22 in https://github.com/Expensify/App/pull/95760 * Remove Onyx.connect() usage for ONYXKEYS.COLLECTION.POLICY_TAGS from updateMoneyRequestAttendees by @Guccio163 in https://github.com/Expensify/App/pull/95795 * Remove Onyx.connect() usage for ONYXKEYS.COLLECTION.POLICY_TAGS from updateMoneyRequestBillable by @Guccio163 in https://github.com/Expensify/App/pull/95793 * Remove Onyx.connect() usage for ONYXKEYS.COLLECTION.POLICY_TAGS from updateMoneyRequestDistance by @Guccio163 in https://github.com/Expensify/App/pull/95800 * Remove Onyx.connect() usage for ONYXKEYS.COLLECTION.POLICY_TAGS from updateMoneyRequestReimbursable by @Guccio163 in https://github.com/Expensify/App/pull/95794 * [NoQA] Fix main CI failures: seatbelt, personalDetailsList, and PolicyMemberTest by @mountiny in https://github.com/Expensify/App/pull/96309 * Load full report when admins open a room from the Workspace Rooms list by @sumo-slonik in https://github.com/Expensify/App/pull/93795 * [Payment due @FitseTLT] MergeTransaction: guard against requesting merge candidates with an empty transactionID by @puneetlath in https://github.com/Expensify/App/pull/96194 * [cp staging] Fix RHP tags search empty state and room members scroll after table migration. by @Krishna2323 in https://github.com/Expensify/App/pull/96289 * Add Rillet integration multiple account export pages by @s77rt in https://github.com/Expensify/App/pull/95562 * [NoQA] feat: implement mergeReports() action by @dmkt9 in https://github.com/Expensify/App/pull/95182 * [No QA] Add direct rsyslog logging to victory-chart-renderer by @roryabraham in https://github.com/Expensify/App/pull/95102 * Pass hasReportActions to openReport (p2) by @bernhardoj in https://github.com/Expensify/App/pull/95796 * [CP Staging] Fix Season F1 custom avatars rendering partially black in Share QR code by @NicolasBonet in https://github.com/Expensify/App/pull/96324 * Keep Agents row action buttons visible in selection mode by @MelvinBot in https://github.com/Expensify/App/pull/96292 * Removed the `Onyx.connect` from `NextStepUtils.ts` by @jayeshmangwani in https://github.com/Expensify/App/pull/96252 * Shrink VirtualCFO horizontal chart's left-axis padding to fit label width by @luacmartins in https://github.com/Expensify/App/pull/95995 * [No QA] Use expensify-common CLI for bumpVersion script by @roryabraham in https://github.com/Expensify/App/pull/96333 * Fix distance waypoint "Not here" after Scan receipt then Track distan… by @oqildev in https://github.com/Expensify/App/pull/94772 * Fix outdated Certinia PSA bundle production install link by @yuwenmemon in https://github.com/Expensify/App/pull/96340 * Fix overlapping category labels in VirtualCFO pie charts by @luacmartins in https://github.com/Expensify/App/pull/95835 * Pin initially-selected items to the top of long search filter lists by @MelvinBot in https://github.com/Expensify/App/pull/95986 * Pin initially-selected items to the top of long BankAccount and Card filter lists by @MelvinBot in https://github.com/Expensify/App/pull/96031 * Add merchant rules spreadsheet import flow by @NicolasBonet in https://github.com/Expensify/App/pull/95105 * Fix outdated Certinia PSA bundle production install link by @yuwenmemon in https://github.com/Expensify/App/pull/96351 * [No QA] Docs updates for E/A#93063 Add currency selection to card rules by @MelvinBot in https://github.com/Expensify/App/pull/94066 * [No QA] Parallelize deploy PR comments with PromisePool by @roryabraham in https://github.com/Expensify/App/pull/96245 * [Onyx bump] Bump react-native-onyx from 3.0.86 to 3.0.88 by @elirangoshen in https://github.com/Expensify/App/pull/96268 **Full Changelog**: https://github.com/Expensify/App/compare/9.4.39-0...9.4.40-0