9.4.41-4

Expensify/App9.4.41-4Jul 22, 2026by github-actions[bot]

AI Summary

A release focusing on localization support, performance optimizations, and refactoring of workspace and settings UI components.

Key Highlights

  • Promote French to a fully supported locale
  • Upgrade react-native-gesture-handler to 2.32.0
  • Implement submit via PDF
  • Refactor Button components to use composed conventions
  • Allow Payments Admins to share bank accounts from Wallet

New Features

  • Promote French to a fully supported locale
  • Implement submit via PDF
  • Allow Payments Admins to share bank accounts from Wallet

Full Release Notes

## What's Changed
* Promote French to a fully supported locale by @roryabraham in https://github.com/Expensify/App/pull/96336
* [No QA] Docs updates for E/A#94433 update login page URL to root by @MelvinBot in https://github.com/Expensify/App/pull/95086
* [No QA] Docs updates for E/A#93146 Add Tag GL code column to Spend column list by @MelvinBot in https://github.com/Expensify/App/pull/95084
* [No QA] Docs updates for E/A#96018 remove Certinia from upcoming NewDot integrations by @MelvinBot in https://github.com/Expensify/App/pull/96251
* [No QA] Docs updates for E/A#95955 hide letter avatar option in profile settings by @MelvinBot in https://github.com/Expensify/App/pull/96051
* chore: upgrade react-native-gesture-handler to 2.32.0 by @jakubstec in https://github.com/Expensify/App/pull/96316
* [No QA] fix: full reconnects on Reconnect/OpenApp with a newer cutoff by @adhorodyski in https://github.com/Expensify/App/pull/95497
* perf: remove redundant O(employees) member scans by @adhorodyski in https://github.com/Expensify/App/pull/96080
* refactor: Extract shared hooks for report preview action buttons by @OlimpiaZurek in https://github.com/Expensify/App/pull/95941
* refactor: migrate WorkspacesListPage loading gate to queue-derived truth by @BartekObudzinski in https://github.com/Expensify/App/pull/96300
* [No QA] Docs updates for E/A#93907 inline table cell edit icon by @MelvinBot in https://github.com/Expensify/App/pull/95674
* perf: shrink SearchRouter's initial recent-reports build, paginate on scroll by @WojtekBoman in https://github.com/Expensify/App/pull/95683
* [NoQA] fix: Metro Hot-Module-Replacement (HMR)/Hot reload not working on mobile by @chrispader in https://github.com/Expensify/App/pull/96325
* refactor: migrate direct Button usages to composed Button (PR1 — workspace + settings) by @jmgraa in https://github.com/Expensify/App/pull/95046
* fix: keep public room in LHN for anonymous users by @yusufdeveloper2903 in https://github.com/Expensify/App/pull/93054
* [No QA] Docs updates for E/A#94685 Card statements shortcut for Expensify Card-only workspaces by @MelvinBot in https://github.com/Expensify/App/pull/94897
* [No QA] Docs updates for E/A#94973 Saving unsent receipts on mobile sign-out by @MelvinBot in https://github.com/Expensify/App/pull/95844
* Standardize Expense Report and Expense header with predictable button placement and carousel counter by @thelullabyy in https://github.com/Expensify/App/pull/90403
* [No QA] Docs updates for E/A#95483 date-bound distance rate editable settings by @MelvinBot in https://github.com/Expensify/App/pull/96049
* Remove Onyx.connect() usage for ONYXKEYS.COLLECTION.POLICY_TAGS from updateSplitTransactions by @Guccio163 in https://github.com/Expensify/App/pull/95803
* Refactor: isolate allReports from getMemberChangeMessageElements function by @shubham1206agra in https://github.com/Expensify/App/pull/95605
* Remove Onyx.connect() for the key: ONYXKEYS.COLLECTION.REPORT in src/libs/OptionsListUtils.ts (Part 1) by @thelullabyy in https://github.com/Expensify/App/pull/94795
* Allow Payments Admins to share bank accounts from Wallet by @ShridharGoel in https://github.com/Expensify/App/pull/96241
* fix: prevent SAML re-fire infinite loop during short-lived-token redeem by @fabioh8010 in https://github.com/Expensify/App/pull/96124
* Fix travel reload/back Not Found by preserving policyID in base path by @neerajbachani in https://github.com/Expensify/App/pull/95900
* Pass device info in apple and google sign in commands by @arosiclair in https://github.com/Expensify/App/pull/95868
* [No QA] Docs updates for E/A#93963 update workspace member role filtering UI by @MelvinBot in https://github.com/Expensify/App/pull/95528
* Fix - w27-BA- IBAN does not appear in the confirmation page, Auth CreateCorpayBankAccount error shown by @FitseTLT in https://github.com/Expensify/App/pull/96201
* fix: decode file:// URIs consistently before filesystem calls by @adhorodyski in https://github.com/Expensify/App/pull/96397
* Refactor: ReportUtils from translateLocal to translate from hook (part 7) by @shubham1206agra in https://github.com/Expensify/App/pull/95340
* [No QA] Update help docs for Releases 1 & 2: Advanced Duplicate Detection by @MelvinBot in https://github.com/Expensify/App/pull/94978
* [Payment due @ZhenjaHorbach] fix(ReceiptImage): render local PDF receipts via LocalPDFReceiptPreview by @WojtekBoman in https://github.com/Expensify/App/pull/94560
* Pass ownerLogin as param to getViolationsOnyxData by @bernhardoj in https://github.com/Expensify/App/pull/95147
* [No QA] Update tab selector base key to be generic by @bernhardoj in https://github.com/Expensify/App/pull/96259
* Implement submit via PDF by @iwiznia in https://github.com/Expensify/App/pull/94049
* fix: land new account on initially opened room by @KJ21-ENG in https://github.com/Expensify/App/pull/92834
* [Payment due @rojiphil] Show Spend Needs approval suggested search for approvers assigned outside the workflow by @ishpaul777 in https://github.com/Expensify/App/pull/95633
* Fix receipt submitted log is not emitted after submitting a receipt by @rinej in https://github.com/Expensify/App/pull/95939
* Add `borderWidth` support for nested text (chat) on mobile by @war-in in https://github.com/Expensify/App/pull/94332
* fix: Allow approvers to edit expenses on draft open reports by @TaduJR in https://github.com/Expensify/App/pull/79300
* [NoQA] Add followupSource and accountID to followup_clicked log event by @marcochavezf in https://github.com/Expensify/App/pull/91687
* [CP Staging] Fix imported merchant rule tag corruption for X: Y (multi-level) tag format by @MelvinBot in https://github.com/Expensify/App/pull/96407
* [No QA] Docs updates for E/A#96351 correct Certinia PSA/SRP install link by @MelvinBot in https://github.com/Expensify/App/pull/96360
* [No QA] Note UK/EU Expensify Card availability in US card help articles by @MelvinBot in https://github.com/Expensify/App/pull/93577
* [No QA] Add UK/EU Expensify Card setup help article by @MelvinBot in https://github.com/Expensify/App/pull/93569
* [No QA] Add UK/EU Expensify Card 3DS authentication help article by @MelvinBot in https://github.com/Expensify/App/pull/93572
* [Rules Revamp] Release 3: Add Agents tab to Rules Revamp Beta by @Krishna2323 in https://github.com/Expensify/App/pull/95322
* [No QA] Unlisted FAQ on Classic Track and Submit plans by @garrettmknight in https://github.com/Expensify/App/pull/85946
* [CP Staging, prod] Update EXPENSIFY_UK_EU_SUPPORTED_COUNTRIES by @chuckdries in https://github.com/Expensify/App/pull/96429
* [No QA] Update help docs for Release 7: reactive expense analysis in workspace chats, expense reports, and expense threads by @MelvinBot in https://github.com/Expensify/App/pull/96217
* fixed truncated Posted column in Report layout table by @mukhrr in https://github.com/Expensify/App/pull/95635
* [CP staging, prod][Payment due @suneox] Key supported ECUK countries by currency, populate from onyx, alphabetize correctly by @chuckdries in https://github.com/Expensify/App/pull/96447
* Fix "Preparing download" & "Your file is ready" modal disappear after rotating device to landscape by @GCyganek in https://github.com/Expensify/App/pull/95276
* Scope Top Spenders suggested search to eligible workspace policyIDs by @MelvinBot in https://github.com/Expensify/App/pull/95593
* [Home Page] Add a "Getting started" slot for the Organize my personal spending intent by @adamgrzybowski in https://github.com/Expensify/App/pull/95496
* Show permission modal for bank account currency flow by @ShridharGoel in https://github.com/Expensify/App/pull/95609
* Refactor: isolate allReportActions from getTrackExpenseActionableWhisper function by @shubham1206agra in https://github.com/Expensify/App/pull/95745
* Fix: New expense not visible in grouped-by from search when created offline by @aswin-s in https://github.com/Expensify/App/pull/92132
* fix: Increase history popstate fallback timeout by @emkhalid in https://github.com/Expensify/App/pull/95980
* Part 12 - Thread delegateAccountID through pay, send, and invoice flows by @Krishna2323 in https://github.com/Expensify/App/pull/95907
* [No QA] Log deferred WRITE Onyx flush failures after the watermark advanced by @elirangoshen in https://github.com/Expensify/App/pull/96290
* Implement easier change of bank account by @VickyStash in https://github.com/Expensify/App/pull/94019
* Add key to Accordion in Sage Intacct export pages to fix React key warning by @MelvinBot in https://github.com/Expensify/App/pull/95989
* Decode HTML entities in report names for search rows and report preview by @MelvinBot in https://github.com/Expensify/App/pull/96383
* Fall back restricted CSV member roles by @ShridharGoel in https://github.com/Expensify/App/pull/96456
* Perf: compute transaction violations once in MoneyRequestReportPreviewProvider by @OlimpiaZurek in https://github.com/Expensify/App/pull/96053
* [Snyk] Security upgrade concurrently from 9.2.1 to 9.2.4 by @MelvinBot in https://github.com/Expensify/App/pull/95972
* fix: reduce INP latency for receipt image interactions by @nabi-ebrahimi in https://github.com/Expensify/App/pull/96089
* [Payment due @daledah] Bring back validateCode reasonCode by @chuckdries in https://github.com/Expensify/App/pull/96224
* [Payment due @mkhutornyi] Allow clearing the Default Vendor by re-selecting it (CC/DC export only) by @Beamanator in https://github.com/Expensify/App/pull/96227
* Pass hasReportActions to openReport (p3) by @bernhardoj in https://github.com/Expensify/App/pull/95881
* Preserve Search context when creating a task from Search by @marufsharifi in https://github.com/Expensify/App/pull/95927
* chore: upgrade react-native-live-markdown to 0.1.333 by @jakubstec in https://github.com/Expensify/App/pull/96381
* Defer mounting Search filter dropdown content until opened by @TMisiukiewicz in https://github.com/Expensify/App/pull/96287
* [No QA] Updates to ECUK setup docs for formatting and instructions  by @stephanieelliott in https://github.com/Expensify/App/pull/96438
* [No QA] Add UK/EU Expensify Card PIN management help docs by @MelvinBot in https://github.com/Expensify/App/pull/89154
* Fix: Magic code expired page - 'request one here' does nothing in a fresh tab by @MelvinBot in https://github.com/Expensify/App/pull/96502
* feat: remove isNewManualExpenseFlowEnabled beta flag by @thelullabyy in https://github.com/Expensify/App/pull/96228
* [No QA] Add PIN unblock to docs by @rafecolton in https://github.com/Expensify/App/pull/96511
* Fix iOS freeze when picking a brand-new P2P recipient on the distance confirmation step by @MelvinBot in https://github.com/Expensify/App/pull/95771
* Fix: physical-address error persists after selecting a valid address by @MelvinBot in https://github.com/Expensify/App/pull/94528
* [Payment due @DylanDylann] [NO QA] [Phase 2 of #66427, Sub-PR 1/5] Mark current getReportName to be deprecated method by @hoangzinh in https://github.com/Expensify/App/pull/96155
* [Part 1.1] Remove Onyx.connect(ONYXKEYS.SESSION) in ReportActionsUtils: thread currentUserAccountID through getReimbursedMessage by @truph01 in https://github.com/Expensify/App/pull/95787
* [Part 2.1] Remove Onyx.connect(ONYXKEYS.SESSION) in ReportActionsUtils: thread currentUserAccountID through isWhisperActionTargetedToOthers by @truph01 in https://github.com/Expensify/App/pull/95799
* [Part 3.1] Remove Onyx.connect(ONYXKEYS.SESSION) in ReportActionsUtils: thread currentUserAccountID through wasActionTakenByCurrentUser by @truph01 in https://github.com/Expensify/App/pull/95889
* fix: Prevent tall image attachment preview blur by @emkhalid in https://github.com/Expensify/App/pull/96240
* [Payment due @thelullabyy] Vendor matching CC: Add Vendors tab to Workspace settings by @Beamanator in https://github.com/Expensify/App/pull/96143
* [Payment due @thelullabyy] Vendor matching CC - R4: App (Xero extension) by @Beamanator in https://github.com/Expensify/App/pull/94093
* Fix: Session Expired page "Please sign in again" link does nothing by @MelvinBot in https://github.com/Expensify/App/pull/96386
* Fix company cards upgrade back navigation to honor backTo by @MelvinBot in https://github.com/Expensify/App/pull/96505
* Fix styling of the Inbox page tabs to match Spend page by @youssef-lr in https://github.com/Expensify/App/pull/95877
* docs: link scheduler delegate patch to PR #93878 by @KJ21-ENG in https://github.com/Expensify/App/pull/96445
* [Sentry: APP-5J] Web null UnhandledRejection crash on /search by @lorretheboy in https://github.com/Expensify/App/pull/95466
* Fix: use converted JPEG for HEIC receipts on Submit share tab by @MelvinBot in https://github.com/Expensify/App/pull/96232
* [Split #94595] Batch A - Remove useOnyx deps from low-risk shared hooks by @fabioh8010 in https://github.com/Expensify/App/pull/95616
* feat: Add Suggestions tab to the agent rule creation flow by @samranahm in https://github.com/Expensify/App/pull/95875
* Show inline Explain link on integration sync failure messages by @MelvinBot in https://github.com/Expensify/App/pull/96424
* Refactor: ConfirmModal to useConfirmModal | Batch 2 by @mohammadjafarinejad in https://github.com/Expensify/App/pull/84405
* [Payment due @marufsharifi] Shrink Book a call avatar to match phone icon size by @c3024 in https://github.com/Expensify/App/pull/96233
* Fix wizard step indicator announcements for screen readers by @Krishna2323 in https://github.com/Expensify/App/pull/95918
* [No QA] Docs updates for E/A#95431 document bulk deleting agents on web by @MelvinBot in https://github.com/Expensify/App/pull/96248
* [No QA] [Docs] Explain shared-approver forwarding in approval workflows by @MelvinBot in https://github.com/Expensify/App/pull/96025


**Full Changelog**: https://github.com/Expensify/App/compare/9.4.40-0...9.4.41-4