9.4.34-14

Expensify/App9.4.34-14Jul 16, 2026by github-actions[bot]

AI Summary

A maintenance release focusing on UI improvements, navigation fixes, and performance optimizations, including refactoring of Onyx dependencies and memoization logic.

Key Highlights

  • Show editable Amount by default in report view
  • Fix navigation issues with floating action badges and PrevNextButtons
  • Decompose ReportActionsList and ReportPreviewActionButton components
  • Enhance search functionality to show expense count and total
  • Extensive refactoring of Onyx.connect() usage and memoization

New Features

  • Show editable Amount by default in report view
  • Search: show expense count and total when 'Select all matching items' is active

Full Release Notes

## What's Changed
* fix: Show editable Amount by default in report view by @x-dev90 in https://github.com/Expensify/App/pull/94929
* [No QA][INP] Defer PrevNextButtons-NextButton work off the press frame by @dilshodmackbook-sketch in https://github.com/Expensify/App/pull/95737
* [NoQA] Decompose ReportActionsList: 12b - remove manual memo by @LukasMod in https://github.com/Expensify/App/pull/95382
* [No QA] Bump expensify-common to 2.0.191 by @fabioh8010 in https://github.com/Expensify/App/pull/95790
* Fix `clearSelectedTransactions` call in export download status modal by @lorretheboy in https://github.com/Expensify/App/pull/95469
* Refactor: migrate getRate to use usePersonalPolicy hook (part 6) by @shubham1206agra in https://github.com/Expensify/App/pull/95587
* Move MultiGestureIcon out of icon primitives by @jmusial in https://github.com/Expensify/App/pull/95278
* [No QA][Split #94595] PR 1 - Add ESLint guard for useOnyx dependencies arg by @fabioh8010 in https://github.com/Expensify/App/pull/95613
* perf: decompose ReportPreviewActionButton into propless context consumers by @OlimpiaZurek in https://github.com/Expensify/App/pull/95503
* [No QA] Add `expo-task-manager` to `buildFromSource` to ensure patch is applied by @GCyganek in https://github.com/Expensify/App/pull/95804
* [Domain Control] Handle highlight on return animation for domain pages by @jakubstec in https://github.com/Expensify/App/pull/91421
* Search: show expense count and total when "Select all matching items" is active by @lorretheboy in https://github.com/Expensify/App/pull/95238
* Fix APP-B2Q (3/3): give notification-preferences a distinct path param to avoid reportID collision by @MelvinBot in https://github.com/Expensify/App/pull/94688
* Open validation RHP directly for pending USD bank accounts by @MelvinBot in https://github.com/Expensify/App/pull/94707
* [No QA] Update instructions for adding Expensify Card to wallets by @zanyrenney in https://github.com/Expensify/App/pull/94702
* fix: The floating action badge scrolls to the wrong report by @lorretheboy in https://github.com/Expensify/App/pull/94762
* [No QA] Fix main ESLint failure by updating seatbelt baseline for ReportPreview refactor by @mountiny in https://github.com/Expensify/App/pull/95861
* [No QA] Migrate web builds and Storybook from Webpack to Rspack/Rsbuild by @roryabraham in https://github.com/Expensify/App/pull/95319
* Use the policies OnyxDerived dependency for the Pay/Approve badge, not the deprecated policy cache by @youssef-lr in https://github.com/Expensify/App/pull/95805
* [Payment due @bernhardoj] Send optimistic Concierge timestamp for pregenerated replies by @inimaga in https://github.com/Expensify/App/pull/95002
* Auto-scroll to next report preview that requires action by @MelvinBot in https://github.com/Expensify/App/pull/92467
* Fix agent avatar CDN URL path in Share Code QR by @NicolasBonet in https://github.com/Expensify/App/pull/95901
* fix: Reports - Highlight animation is visible on added expense after duplication by @TaduJR in https://github.com/Expensify/App/pull/94670
* [No QA] Re-land billing docs hub with lint-safe route helpers by @stephanieelliott in https://github.com/Expensify/App/pull/95786
* 83865 migrate workspace workflows members by @huult in https://github.com/Expensify/App/pull/94482
* [No QA] Tweak update required page copy by @MonilBhavsar in https://github.com/Expensify/App/pull/95821
* [No QA] Fix flaky SubscriptionUtils β€Ί isUserOnFreeTrial test by @MonilBhavsar in https://github.com/Expensify/App/pull/95867
* Send empty bank account when disabling payments by @ShridharGoel in https://github.com/Expensify/App/pull/95699
* Company cards page loads each time opening it by @nkdengineer in https://github.com/Expensify/App/pull/95470
* [NoQA] Skip forwarding `Reauthenticate` logs to sentry by @VickyStash in https://github.com/Expensify/App/pull/95928
* Fix: imported contact name not shown in expense after creation by @MelvinBot in https://github.com/Expensify/App/pull/94819
* Add truncated-text tooltips to remaining workspace table rows. by @Krishna2323 in https://github.com/Expensify/App/pull/95885
* Sort Search transactions by date using created, with inserted/transactionID tiebreakers by @luacmartins in https://github.com/Expensify/App/pull/95837
* fix: Show discard changes modal on browser/device back in money-request flows by @TaduJR in https://github.com/Expensify/App/pull/95076
* [NoQA] Make connections optional in the Policy type to match real data by @mhawryluk in https://github.com/Expensify/App/pull/95395
* Introduce the spinner on the `FormAlertWithSubmitButton` buttons by @OlGierd03 in https://github.com/Expensify/App/pull/92498
* [Submit] Update "Submit to someone" to two options to allow for Submit workspace creation by @abzokhattab in https://github.com/Expensify/App/pull/94319
* Allow workspace and status filter to be negatable by @bernhardoj in https://github.com/Expensify/App/pull/95023
* fix: Start & End date does not matches Title format with Trip-based Auto-reporting by @TaduJR in https://github.com/Expensify/App/pull/87140
* Scope reportAttributes recompute to reports referencing changed display names by @TMisiukiewicz in https://github.com/Expensify/App/pull/95931
* Remove dateBoundMileageRate beta by @rlinoz in https://github.com/Expensify/App/pull/95483
* ButtonWithDropdownMenu β€” align public API to composed conventions by @Guccio163 in https://github.com/Expensify/App/pull/95494
* fix: restore main session when `authToken` expires while in copilot mode by @war-in in https://github.com/Expensify/App/pull/93084
* [CP Staging] Revert "Gate deep-link navigation on TabNavigator mount via lifecycle signal" by @rlinoz in https://github.com/Expensify/App/pull/95942
* [No QA] Add motion usage description to fix App Store rejection by @grgia in https://github.com/Expensify/App/pull/95831
* Remove Onyx.connect() usage for ONYXKEYS.COLLECTION.POLICY_TAGS from createTransaction by @Guccio163 in https://github.com/Expensify/App/pull/95716
* [No QA] Docs updates for E/A#95729 Lowercase workspace role labels by @MelvinBot in https://github.com/Expensify/App/pull/95847
* Allow negative response to be reprompted after 30 days by @hungvu193 in https://github.com/Expensify/App/pull/94936
* Make workflow payer row read-only during bank setup by @ShridharGoel in https://github.com/Expensify/App/pull/95490
* Polish add-personal-details flow by @DylanDylann in https://github.com/Expensify/App/pull/95516
* Expense - Expense is created in another report with error when Submissions are disabled by @thelullabyy in https://github.com/Expensify/App/pull/94386
* [No QA] fix: add Share Extension receipt telemetry by @adhorodyski in https://github.com/Expensify/App/pull/95840
* [Payment due @hoangzinh] Fixed Attendee type to match with BE by @shubham1206agra in https://github.com/Expensify/App/pull/95838
* Pass unavailableTranslation param - batch 1 by @cretadn22 in https://github.com/Expensify/App/pull/95758
* Fix magic code navigates back on payment (SettlementButton) by @jmusial in https://github.com/Expensify/App/pull/93087
* Scope first policy load recompute to reports referencing changed policies by @TMisiukiewicz in https://github.com/Expensify/App/pull/95944
* [No QA] [Performance] Add pre-mount destination hook and usage guard by @JakubKorytko in https://github.com/Expensify/App/pull/95397
* Hide device management & merge accounts and repurpose close account when copiloting into an agent by @MelvinBot in https://github.com/Expensify/App/pull/95812
* Migrate transaction thread secondary actions archived checks by @ShridharGoel in https://github.com/Expensify/App/pull/93215
* Stage profile photo removal behind the Save button by @grgia in https://github.com/Expensify/App/pull/95806
* Fix Android 'Already closed' crash on receipt PDF render by @wildan-m in https://github.com/Expensify/App/pull/94894
* Pass ownerLogin as param to isViolationDismissed #2 by @bernhardoj in https://github.com/Expensify/App/pull/95777
* [Part 11] Refactor phone number formatting in workspace pages by @marufsharifi in https://github.com/Expensify/App/pull/95757
* [NoQA] Receipt follow up - dedup receipt commands by @rinej in https://github.com/Expensify/App/pull/95811
* Replace getDisplayNameOrDefault with temporaryGetDisplayNameOrDefault - batch 8 by @cretadn22 in https://github.com/Expensify/App/pull/95697
* Remove getPersonalDetailsByIDs usage from OptionsListUtils by @bernhardoj in https://github.com/Expensify/App/pull/95888
* [No QA] Reduce unsafe type assertions in SearchUIUtils tests by @KJ21-ENG in https://github.com/Expensify/App/pull/95904
* [No QA] Reduce unsafe type assertions in add Root History Router Extension tests by @KJ21-ENG in https://github.com/Expensify/App/pull/95903
* [No QA] Reduce unsafe type assertions in use Other Feeds For Feed Selector tests by @KJ21-ENG in https://github.com/Expensify/App/pull/95937
* [Payment due @daledah] Add reasonCode parameter to (some) ResendValidateCode calls by @chuckdries in https://github.com/Expensify/App/pull/90726
* Repair the originating domain feed on NewDot company card reconnect by @MelvinBot in https://github.com/Expensify/App/pull/95214
* [NoQA] Fix typecheck failure in SearchUIUtilsTest from PR #95758 by @mountiny in https://github.com/Expensify/App/pull/95985
* Handle copy policy settings failure in modal with retry option by @fedirjh in https://github.com/Expensify/App/pull/93710
* fix: pending transaction message in money request header by @daledah in https://github.com/Expensify/App/pull/95923
* Open hyperlinked reports and expenses in the RHP by @KJ21-ENG in https://github.com/Expensify/App/pull/95131
* [No QA] Fix CopyPolicySettingsUtils prefer-nullish-coalescing lint on main by @roryabraham in https://github.com/Expensify/App/pull/95993
* [CP Staging] Fix e-card search not working by @JS00001 in https://github.com/Expensify/App/pull/95996
* [CP Staging] Revert "Fix: Circle icon showing behind back button on workspace pages in landscape mode" by @jasperhuangg in https://github.com/Expensify/App/pull/95999
* [Audit] Onyx export: extend key export rules for complete coverage by @mkhutornyi in https://github.com/Expensify/App/pull/95433
* [No QA] Add RAM_ONLY_COMPANY_CARDS_LOADING_STATE to safe Onyx export keys by @MelvinBot in https://github.com/Expensify/App/pull/96004
* fix: Error is not shown for the empty Quantity field after choose another subrate by @nkdengineer in https://github.com/Expensify/App/pull/95735
* Add received payment action to first More menu section by @MelvinBot in https://github.com/Expensify/App/pull/92477
* [NO QA] hide old letter avatars selector behind beta by @grgia in https://github.com/Expensify/App/pull/95955
* [Payment due @Krishna2323] Add loading states for table components that benefit from it by @JS00001 in https://github.com/Expensify/App/pull/95809
* Part 5 - Remove Onyx.connect() for the key: ONYXKEYS.PERSONAL_DETAILS_LIST in src/libs/actions/Report.ts by @lorretheboy in https://github.com/Expensify/App/pull/95660
* [NoQA] Removed unused dependencies by @shubham1206agra in https://github.com/Expensify/App/pull/95909
* [No QA] Fix ExportOnyxStateTest: bucket areAgentsLoaded and arePolicyRoomsLoaded keys by @jasperhuangg in https://github.com/Expensify/App/pull/96007
* [CP staging] Revert #94973 to fix deploy blocker #95957 (storage access modal on sign-out) by @jasperhuangg in https://github.com/Expensify/App/pull/96006
* [No QA] chore: consolidate script execution on Bun (drop ts-node and tsx) by @roryabraham in https://github.com/Expensify/App/pull/95890
* [CP Staging] update workspace to RHP by @huult in https://github.com/Expensify/App/pull/95977
* [No QA] Swap babel-loader + babel-plugin-react-compiler for OXC (Rust React Compiler) by @roryabraham in https://github.com/Expensify/App/pull/93980
* [No QA] fix(rsbuild): lazy-import Sentry plugin to silence webpack deprecation warnings by @roryabraham in https://github.com/Expensify/App/pull/96021
* [No QA] fix: run rsbuild dev server with Node instead of Bun by @roryabraham in https://github.com/Expensify/App/pull/96023
* Fix blank Xero setup WebView on Android by loading an authenticated setup URL by @KJ21-ENG in https://github.com/Expensify/App/pull/95552
* Docs updates for E/A#94604 legal entity tax ID for Travel by @MelvinBot in https://github.com/Expensify/App/pull/95685
* [No QA] Restructure Workspace Merchant Rules examples into their own section by @MelvinBot in https://github.com/Expensify/App/pull/93490
* Introduce free trial countdown pop-up by @dukenv0307 in https://github.com/Expensify/App/pull/84049
* [Submit] Remove Instant option for Submit workspace by @hungvu193 in https://github.com/Expensify/App/pull/95912
* [CP Staging]Β chore: upgrade @rnmapbox/maps to 10.3.2 by @jasperhuangg in https://github.com/Expensify/App/pull/96017
* [Submit] In-product modal for existing "Get paid back" intent users (Wave 4) by @abzokhattab in https://github.com/Expensify/App/pull/95099
* [No QA] Fix failing test on main by bucketing the new trial payment reminder Onyx key by @grgia in https://github.com/Expensify/App/pull/96037
* πŸ’ Cherry pick PR #96115 to staging πŸ’ by @os-botify[bot] in https://github.com/Expensify/App/pull/96154
* πŸ’ Cherry pick PR #96168 to staging πŸ’ by @os-botify[bot] in https://github.com/Expensify/App/pull/96226


**Full Changelog**: https://github.com/Expensify/App/compare/9.4.33-8...9.4.34-14