9.4.60-2

Expensify/App9.4.60-2Aug 25, 2026by github-actions[bot]

AI Summary

This release enhances security by stopping the exposure of app data to the iOS Files app and improves the user experience with fixes for category editing and account management. It also includes performance improvements and UI refinements.

Key Highlights

  • Stop exposing app data to the iOS Files app
  • Fix inline category edit not saving on the first attempt
  • Show workspace members with missing personal details instead of dropping them
  • Use standard empty state style for Subscription payment card
  • Refactor Onfido native loader to ActivityIndicator

New Features

  • Add 'Mark all as read' context menu to the Unreads tab
  • Escape search query values and resolve typed workspace names
  • Fix issue with Button 'Delete workspace' does not work if pressed again after an error occurs

Full Release Notes

## What's Changed
* [No QA] Ignore generated actions in cspell by @roryabraham in https://github.com/Expensify/App/pull/99223
* [No QA] Reseed personal details after Onyx.clear in OptionsListUtils tests by @roryabraham in https://github.com/Expensify/App/pull/99241
* Fix: don't auto-select the submitter as approver in Submit workspace by @MelvinBot in https://github.com/Expensify/App/pull/98939
* Fix plural translations to use Intl.PluralRules format by @shubham1206agra in https://github.com/Expensify/App/pull/98724
* [No QA] Preserve function wrappers for incremental plural translations by @roryabraham in https://github.com/Expensify/App/pull/99222
* [CP Staging] Revert "Confirm new expenses with a “View” toast instead of scrolling to and highlighting the row" by @mountiny in https://github.com/Expensify/App/pull/99277
* Fix: return to recipient list on back during Send to someone flow by @MelvinBot in https://github.com/Expensify/App/pull/99148
* Reuse the saved CSV layout settings when uploading again into an existing card by @wildan-m in https://github.com/Expensify/App/pull/97985
* Send the fund ID when requesting an Expensify Card limit increase by @yuwenmemon in https://github.com/Expensify/App/pull/98505
* [Payment due @truph01] [No QA] Docs updates for E/A#94558 Add Save step to submission frequency flow by @MelvinBot in https://github.com/Expensify/App/pull/97144
* [No QA] Docs updates for E/A#96625 Home Insights chart switcher by @MelvinBot in https://github.com/Expensify/App/pull/98215
* [CP Stg] Fix pressing search clear button only dismisses the keyboard by @bernhardoj in https://github.com/Expensify/App/pull/99293
* [Payment due @truph01] Docs updates for E/A#98161 document Download workflows option on Workflows page by @MelvinBot in https://github.com/Expensify/App/pull/98479
* [No QA] Docs updates for E/A#97708 Amount debited and Amount reimbursed report filters by @MelvinBot in https://github.com/Expensify/App/pull/98687
* [No QA] Add SEPA B2B context to FAQs for Global Reimbursement Europe by @kadiealexander in https://github.com/Expensify/App/pull/98831
* Docs updates for E/A#95934 document agent deletion failure when reports await approval by @MelvinBot in https://github.com/Expensify/App/pull/96250
* Docs updates for E/A#95692 Travel enablement Tax ID step button label by @MelvinBot in https://github.com/Expensify/App/pull/97384
* [No QA] Docs updates for E/A#96012 Public receipt visibility toggle in Rules by @MelvinBot in https://github.com/Expensify/App/pull/97623
* [No QA] Docs updates for E/A#90002 Document GPS Edit stop trimming feature by @MelvinBot in https://github.com/Expensify/App/pull/97379
* Android - Workspace - Brief Error Blink Before Opening Company Cards by @lorretheboy in https://github.com/Expensify/App/pull/98003
* Part 2 - Audit usage of Str.removeSMSDomain  by @FitseTLT in https://github.com/Expensify/App/pull/98870
* [Payment due @daledah] Cover the UI with the boot splash when the app is backgrounded to prevent sensitive data exposure by @OlGierd03 in https://github.com/Expensify/App/pull/95519
* Replace getPersonalDetailByEmail with usePersonalDetailByLogin for company cards page by @bernhardoj in https://github.com/Expensify/App/pull/99149
* Perf: select scalars instead of the policy array in report creation entry points by @TMisiukiewicz in https://github.com/Expensify/App/pull/99154
* Replace getPersonalDetailByEmail with usePersonalDetailByLogin in seval workspace-related pages by @bernhardoj in https://github.com/Expensify/App/pull/98858
* [Payment due @huult] Add IES multi-entity selection by @ShridharGoel in https://github.com/Expensify/App/pull/98999
* Revert "[Payment due @daledah] Cover the UI with the boot splash when the app is backgrounded to prevent sensitive data exposure" by @mountiny in https://github.com/Expensify/App/pull/99318
* Fix inline category edit not saving on the first attempt by @mukhrr in https://github.com/Expensify/App/pull/99178
* [No QA] Docs updates for E/A#98074 Don't change option for rule selectors by @MelvinBot in https://github.com/Expensify/App/pull/99129
* fix: keep shared receipts out of the folder the iOS share extension wipes by @adhorodyski in https://github.com/Expensify/App/pull/98974
* fix: Recently added section shows false empty state on Home by @BartekObudzinski in https://github.com/Expensify/App/pull/98969
* Pass isSandbox=true for IES connections on staging by @ShridharGoel in https://github.com/Expensify/App/pull/99330
* Show workspace members with missing personal details instead of dropping them by @MelvinBot in https://github.com/Expensify/App/pull/98483
* [No QA] Improve post-install performance by @roryabraham in https://github.com/Expensify/App/pull/99115
* Fix: render 'Vendor unavailable' instead of raw vendor ID in merchant rules after disconnecting accounting by @MelvinBot in https://github.com/Expensify/App/pull/98619
* [No QA] Docs updates for E/A#95057 Add Link company card to Getting started slot by @MelvinBot in https://github.com/Expensify/App/pull/95686
* [CP Stg] Add addBottomSafeAreaPadding to ScrollView for WorkspaceHRPage by @roryabraham in https://github.com/Expensify/App/pull/99254
* Add Account navigation suggestions to Search Router by @nabi-ebrahimi in https://github.com/Expensify/App/pull/97967
* [Payment due @dmkt9] Fix regressions from SelfDM splits flow by @ZhenjaHorbach in https://github.com/Expensify/App/pull/98947
* [No QA] Docs updates for E/A#98128 Bank account filter keeps statement export by @MelvinBot in https://github.com/Expensify/App/pull/98477
* [Payment due @cretadn22] Headers & sub-headers are inconsistently anchored and bolded by @dukenv0307 in https://github.com/Expensify/App/pull/98826
* Rename vendor isManuallySet to wasManuallySet by @Beamanator in https://github.com/Expensify/App/pull/98659
* refactor getReportPreviewMessage and getIOUReportActionDisplayMessage to use data from useOnyx by @daledah in https://github.com/Expensify/App/pull/96906
* Show domain/workspace as feed-name subtitle in Spend page feed filter by @MelvinBot in https://github.com/Expensify/App/pull/97657
* [No QA] Run TypeScript 7 as the typecheck gate by @roryabraham in https://github.com/Expensify/App/pull/99017
* Fix edit composer height to match the main composer by @MelvinBot in https://github.com/Expensify/App/pull/99193
* Show saved search type icon instead of generic bookmark by @MelvinBot in https://github.com/Expensify/App/pull/99099
* Use standard empty state style for Subscription payment card by @shawnborton in https://github.com/Expensify/App/pull/99015
* Add 'Mark all as read' context menu to the Unreads tab by @MelvinBot in https://github.com/Expensify/App/pull/98950
* Escape search query values and resolve typed workspace names by @mukhrr in https://github.com/Expensify/App/pull/98522
* Fix issue with Button "Delete workspace" does not work if pressed again after an error occurs by @ZhenjaHorbach in https://github.com/Expensify/App/pull/98408
* Remove Onyx.connect() for the key: ONYXKEYS.COLLECTION.REPORT in src/libs/ReportUtils.ts (part 8) by @truph01 in https://github.com/Expensify/App/pull/94564
* Update table pages to scroll full page by @KJ21-ENG in https://github.com/Expensify/App/pull/93877
* Fix accounting software input not visible in landscape mode when keyboard is opened by @GCyganek in https://github.com/Expensify/App/pull/99157
* Add composed ListItem core and migrate SearchQueryListItem by @jmusial in https://github.com/Expensify/App/pull/98771
* Fix edited comment remaining in composer after saving by @Abdulloh0109 in https://github.com/Expensify/App/pull/99166
* Fix Certinia export defaults for Preferred Exporter and Default Vendor by @MelvinBot in https://github.com/Expensify/App/pull/98117
* Stop exposing app data to the iOS Files app by @NicolasBonet in https://github.com/Expensify/App/pull/96531
* [Payment due @situchan] Refactor the security group Onyx key to use the sharedNVP pattern by @rayane-d in https://github.com/Expensify/App/pull/95551
* Render the generated distance receipt on every New Expensify surface by @yuwenmemon in https://github.com/Expensify/App/pull/98506
* Fix report title formula name flash by resolving submitter/manager personal details optimistically by @MelvinBot in https://github.com/Expensify/App/pull/99229
* [No QA][inhouse-billpay] Update invoice card payment copy to 4-5 business days by @cristipaval in https://github.com/Expensify/App/pull/99322
* Refactor Onfido native loader to ActivityIndicator by @MelvinBot in https://github.com/Expensify/App/pull/96819
* [Payment due @daledah] Fix: sort nested transactions by date in grouped Search/Spend views by @luacmartins in https://github.com/Expensify/App/pull/98997


**Full Changelog**: https://github.com/Expensify/App/compare/9.4.59-5...9.4.60-2