9.4.31-0

Expensify/App9.4.31-0Jul 9, 2026by github-actions[bot]

AI Summary

A maintenance release focusing on bug fixes, performance optimizations, and continued refactoring of core components like Onyx and navigation.

Key Highlights

  • Fixed custom report field disappearing after approval
  • Improved performance by stopping amount field re-renders
  • Refactored Onyx.connect() usage for better maintainability
  • Added useCachedAttachmentSource hook for optimized attachment handling
  • Fixed Sage Intacct vendor toggle crash when vendors list is empty

New Features

  • useCachedAttachmentSource hook for optimized attachment handling
  • Manual reimbursement workspaces preferred payer
  • Payments admin workspace access
  • Paid status column

Full Release Notes

## What's Changed
* Fix custom report field disappearing for submitter after report approval by @MelvinBot in https://github.com/Expensify/App/pull/95337
* [No QA] Remove fmt-changed npm script by @roryabraham in https://github.com/Expensify/App/pull/95327
* [No QA] Update Create-and-Use-Custom-Agents.md by @stephanieelliott in https://github.com/Expensify/App/pull/95313
* Part 1 - [Rules Revamp] Clean-up and Polish  by @Krishna2323 in https://github.com/Expensify/App/pull/95289
* [No QA] Align remote build workflows with testBuild ref resolution by @war-in in https://github.com/Expensify/App/pull/95407
* fix: prevent failed search retry flicker by @nabi-ebrahimi in https://github.com/Expensify/App/pull/95043
* [No QA] Reduce unsafe type assertions in TSCompilerUtils tests by @KJ21-ENG in https://github.com/Expensify/App/pull/95269
* Fix Sage Intacct default vendor toggle crash when vendors list is empty by @mountiny in https://github.com/Expensify/App/pull/95345
* Web - Spend - View button size is different on Reports and Expenses on Spend tab by @lorretheboy in https://github.com/Expensify/App/pull/95019
* Fix admin invite onboarding task by @KJ21-ENG in https://github.com/Expensify/App/pull/91950
* Pass reportPreviewAction as param to convertIOUReportToExpenseReport by @bernhardoj in https://github.com/Expensify/App/pull/95172
* feat: implement useCachedAttachmentSource hook for optimized attachment handling by @lorretheboy in https://github.com/Expensify/App/pull/94640
* perf: Stop amount field re-rendering on background Onyx writes by @OlimpiaZurek in https://github.com/Expensify/App/pull/94295
* Perf - lazy mount NavigateGlobalCreateProvider for faster scan camera by @rinej in https://github.com/Expensify/App/pull/94693
* Fix: SmartScan shortcut re-navigates when already on SmartScan screen by @gijoe0295 in https://github.com/Expensify/App/pull/90782
* Forward invitee data on the invite-to-chat mention whisper so the invite email is sent by @wildan-m in https://github.com/Expensify/App/pull/94125
* Update filters bar for tables by @JS00001 in https://github.com/Expensify/App/pull/93963
* [Payment due @dmkt9] Allow manual reimbursement workspaces to set and use a preferred payer by @NikkiWines in https://github.com/Expensify/App/pull/92787
* Ignore scrolling to unread message in transaction thread by @VickyStash in https://github.com/Expensify/App/pull/94704
* refactor: Remove shouldHandleNavigation from createDistanceRequest by @TaduJR in https://github.com/Expensify/App/pull/93545
* [Payment due @cretadn22] Make a new agent a full co-pilot of its creator by @yuwenmemon in https://github.com/Expensify/App/pull/94602
* Migrate InteractionManager - (Newly added usages) part 3 by @collectioneur in https://github.com/Expensify/App/pull/94946
* [No QA] fix: allow lefthook oxfmt when staged files are ignored by @roryabraham in https://github.com/Expensify/App/pull/95448
* [No QA] [Hold for feature] Update help docs for Release 3: People Admin role by @MelvinBot in https://github.com/Expensify/App/pull/93737
* Fix scroll/reorder jump when selecting in the Search In filter by @MelvinBot in https://github.com/Expensify/App/pull/95321
* [No QA] Docs updates for E/A#92885 Print not shown for Draft reports by @MelvinBot in https://github.com/Expensify/App/pull/94635
* [No QA] Update import instructions and FAQ for company cards by @stephanieelliott in https://github.com/Expensify/App/pull/94404
* Increase spacing between Concierge messages and their follow-up buttons by @KioCoan in https://github.com/Expensify/App/pull/95239
* [Payment due @jayeshmangwani] [No QA] Fix Concierge draft completion pacing by @inimaga in https://github.com/Expensify/App/pull/94714
* [CP Staging] Revert "Part 5 - Remove Onyx.connect() for the key: ONYXKEYS.PERSONAL_DETAILS_LIST in src/libs/actions/Report.ts" by @marcaaron in https://github.com/Expensify/App/pull/95440
* Refactor issue 66427: Add reportAttributes parameter to getReportName and getParentNavigationSubtitle functions (Part 1/4) by @hoangzinh in https://github.com/Expensify/App/pull/91295
* fix: show edit icon for inline table cell editing by @x-dev90 in https://github.com/Expensify/App/pull/93907
* 83861 migrate workspace tags part 3 v2 by @huult in https://github.com/Expensify/App/pull/95203
* [Payment due @daledah] [No QA] Docs updates for E/A#94690 Paid status hover tooltip stages by @MelvinBot in https://github.com/Expensify/App/pull/95088
* Show Add additional receipt and Expand buttons on map distance receipt hover by @MobileMage in https://github.com/Expensify/App/pull/93374
* [CP Staging] Fix workspace tax page crash by @bernhardoj in https://github.com/Expensify/App/pull/95467
* [No QA] Pass deviceInfo to SignInWithShortLivedAuthToken by @arosiclair in https://github.com/Expensify/App/pull/95426
* Update Subscription settings from editable push row to a read-only row with an Edit subscription button by @lorretheboy in https://github.com/Expensify/App/pull/94363
* Clear manual form error when waypoints become valid on Map tab by @MelvinBot in https://github.com/Expensify/App/pull/91249
* [No QA] Docs updates for E/A#90937 new Spend table custom columns by @MelvinBot in https://github.com/Expensify/App/pull/94956
* Part 10: Remove Onyx.connect() for the key: ONYXKEYS.PERSONAL_DETAILS_LIST by @DylanDylann in https://github.com/Expensify/App/pull/95030
* [No QA] Update help docs for Release 1: Export current view by @MelvinBot in https://github.com/Expensify/App/pull/94945
* Fix: domain groups crash by @marufsharifi in https://github.com/Expensify/App/pull/95484
* Fix IOS - Expense-Input field loses focus after dismissing the "Discard changes" modal   by @collectioneur in https://github.com/Expensify/App/pull/95181
* Tighten reportActionsList on trackExpense and gate the hook in useExpenseSubmission by @DylanDylann in https://github.com/Expensify/App/pull/93156
* [No QA] Harden `TransitionTracker` callback handling by @JakubKorytko in https://github.com/Expensify/App/pull/95481
* [No QA] Docs updates for E/A#93543 clarify keyword-only Spend search bar by @MelvinBot in https://github.com/Expensify/App/pull/94638
* Fix: route Submit workspace Control-role import upgrade to Control plan by @MelvinBot in https://github.com/Expensify/App/pull/94859
* Add paid status column by @dukenv0307 in https://github.com/Expensify/App/pull/95476
* [No QA] Add New Expensify Sage Intacct INT093 help article by @inimaga in https://github.com/Expensify/App/pull/95485
* Add payments admin workspace access by @ShridharGoel in https://github.com/Expensify/App/pull/94018
* Right-anchor the Display popover to match the Filters popover by @MelvinBot in https://github.com/Expensify/App/pull/95065
* Fix people admin workspace access pages by @ShridharGoel in https://github.com/Expensify/App/pull/95338
* [No QA] Part 1: Remove Onyx.connect() for the key: ONYXKEYS.SESSION in src/libs/ReportUtils.ts by @thelullabyy in https://github.com/Expensify/App/pull/92891
* Add text-based filter length validation by @bernhardoj in https://github.com/Expensify/App/pull/94013
* Fix emoji suggestion list reopening after closing FAB with ESC by @MelvinBot in https://github.com/Expensify/App/pull/95456
* Refactor: migrate getRate to use usePersonalPolicy hook (part 4) by @shubham1206agra in https://github.com/Expensify/App/pull/95331
* Refactor: migrate getRate to use usePersonalPolicy hook (part 5) by @shubham1206agra in https://github.com/Expensify/App/pull/95334
* Make Certinia prerequisites step content scrollable in landscape by @MelvinBot in https://github.com/Expensify/App/pull/95515


**Full Changelog**: https://github.com/Expensify/App/compare/9.4.30-0...9.4.31-0