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