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