9.4.45-14
Expensify/App9.4.45-14Jul 29, 2026by github-actions[bot]
AI Summary
A performance-focused release featuring the migration to Flashlist, worklets, and the removal of Onyx.connect dependencies across the application. It includes UI updates for the export menu and a new free trial countdown, though several features were reverted for stability.
Key Highlights
- Migrate to `react-native-worklets` and enable bundle mode
- Revert Nitro fetch V3 due to stability issues
- Optimize MoneyRequestReportTransactionList with Flashlist
- Add free trial countdown pop-up
- Update Export menu with dividers and alphabetical ordering
Breaking Changes
- Revert 'feat: Enable `react-native-nitro-fetch` (V3)'
- Revert 'Show GL code when selecting a category'
- Revert 'Render server-driven AZ status on expense reports'
New Features
- Free trial countdown pop-up
- Workspace rate list display
- Export menu reorganization
- Chat conversation message marker
Full Release Notes
## What's Changed * Update the Export menu by adding dividers between groups and ordering them alphabetically by @lorretheboy in https://github.com/Expensify/App/pull/94931 * [No QA] Billing and Subscriptions: Update links and add images to articles by @stephanieelliott in https://github.com/Expensify/App/pull/96843 * Upgrade react-native-worklets and enable bundle mode by @WojtekBoman in https://github.com/Expensify/App/pull/96078 * [NO QA] Optimize setupNode action by @collectioneur in https://github.com/Expensify/App/pull/96494 * [Performance] Migrate submit-expense flow to `usePreMountDestination` by @JakubKorytko in https://github.com/Expensify/App/pull/96480 * migrate money request part 2 by @huult in https://github.com/Expensify/App/pull/95930 * perf: Migrate to Flashlist in MoneyRequestReportTransactionList by @TMisiukiewicz in https://github.com/Expensify/App/pull/91422 * Render report field name as HTML only when needed by @jmgraa in https://github.com/Expensify/App/pull/95661 * Rillet split default account at top by @s77rt in https://github.com/Expensify/App/pull/96845 * Introduce free trial countdown pop-up by @dukenv0307 in https://github.com/Expensify/App/pull/96275 * Reduce getSections recompute cost during Pay flow by @TMisiukiewicz in https://github.com/Expensify/App/pull/96642 * Fix: Splits incorrectly highlighted in Inbox after splitting from Spend page by @aswin-s in https://github.com/Expensify/App/pull/94139 * [Payment due @eVoloshchak] Pass managed card context when creating reports by @ShridharGoel in https://github.com/Expensify/App/pull/96503 * Chat - Conversation shows a new message marker after being viewed by @lorretheboy in https://github.com/Expensify/App/pull/96213 * [No QA] Docs updates for E/A#90791 document bank-account search filter operator by @MelvinBot in https://github.com/Expensify/App/pull/94957 * [No QA] Docs updates for E/A#95488 empty value validation for CSV card import by @MelvinBot in https://github.com/Expensify/App/pull/95688 * [No QA] Docs updates for E/A#94420 card admins cannot invite card assignees by @MelvinBot in https://github.com/Expensify/App/pull/94499 * Workspace rate list display for auto-generated rates by @thelullabyy in https://github.com/Expensify/App/pull/96149 * [No QA] [Hold for production deploy] Docs updates for E/A#96181 rename Magic code to Security code by @MelvinBot in https://github.com/Expensify/App/pull/96793 * Coalesce OnyxDerived recomputations via microtask scheduling by @fabioh8010 in https://github.com/Expensify/App/pull/96785 * refactor navigateToAndOpenReport to use useOnyx data by @daledah in https://github.com/Expensify/App/pull/95271 * [CP STaging] Add a null safety for searchResults.search by @bernhardoj in https://github.com/Expensify/App/pull/96918 * refactor: migrate direct Button usages to composed Button (PR2 — iou+txn + search+reports + rest) by @jmgraa in https://github.com/Expensify/App/pull/95202 * fix copy icon in validation code field is cropped on iOS App by @jakubstec in https://github.com/Expensify/App/pull/96858 * [No QA] Docs updates for E/A#95979 clarify when moving expense logs system message by @MelvinBot in https://github.com/Expensify/App/pull/96249 * [No QA] Docs updates for E/A#95476 Add Paid status column to Reports by @MelvinBot in https://github.com/Expensify/App/pull/95524 * [No QA] Docs updates for E/A#94567 default letter avatar behavior by @MelvinBot in https://github.com/Expensify/App/pull/95296 * Replace getDisplayNameOrDefault with temporaryGetDisplayNameOrDefault - batch 10 by @cretadn22 in https://github.com/Expensify/App/pull/96554 * Replace getDisplayNameOrDefault with temporaryGetDisplayNameOrDefault - batch 13 by @cretadn22 in https://github.com/Expensify/App/pull/96592 * Replace getDisplayNameOrDefault with temporaryGetDisplayNameOrDefault - batch 14 by @cretadn22 in https://github.com/Expensify/App/pull/96606 * [Part 14] Remove Onyx.connect from LocalePhoneNumber by @marufsharifi in https://github.com/Expensify/App/pull/96441 * fix: keep Concierge side panel question + thinking indicator visible across clock-skew race by @dilshodmackbook-sketch in https://github.com/Expensify/App/pull/94814 * Fix receipt hover preview opening on the wrong side of the thumbnail by @adamgrzybowski in https://github.com/Expensify/App/pull/96400 * Add optional Card Name column to company-card CSV import by @justinpersaud in https://github.com/Expensify/App/pull/96912 * Part 2: Remove Onyx.connect() for the key: ONYXKEYS.SESSION in src/libs/ReportUtils.ts by @thelullabyy in https://github.com/Expensify/App/pull/95773 * Update Expense policy card subtitle copy by @MelvinBot in https://github.com/Expensify/App/pull/96958 * Remove sourceValue from Onyx by @fabioh8010 in https://github.com/Expensify/App/pull/93438 * [Payment due @Eskalifer1] Correctly format phone numbers for PersonalDetails updates by @chuckdries in https://github.com/Expensify/App/pull/96911 * feat: seed default My expenses saved search for dual-role users and remove obsolete rename tooltip by @aswin-s in https://github.com/Expensify/App/pull/93541 * [Split #94595] Batch C - Remove useOnyx deps from Search by @fabioh8010 in https://github.com/Expensify/App/pull/95618 * [No QA] Skip react-native-worklets Babel plugin in Jest to fix test slowdown and shard 7 test crash by @collectioneur in https://github.com/Expensify/App/pull/96953 * [Payment due @hoangzinh] Migrate useSearchSelector.base.ts from useOptionsList to usePersonalDetailOptions (part 6) by @shubham1206agra in https://github.com/Expensify/App/pull/96440 * Fix "What's next" status bar not updating in real time when a report is approved while the submitter is viewing by @trasnake87 in https://github.com/Expensify/App/pull/95602 * [Part 15] Remove Onyx.connect from LocalePhoneNumber by @marufsharifi in https://github.com/Expensify/App/pull/96442 * [Part 16] Remove Onyx.connect from LocalePhoneNumber by @marufsharifi in https://github.com/Expensify/App/pull/96446 * [Part 17] Remove Onyx.connect from LocalePhoneNumber by @marufsharifi in https://github.com/Expensify/App/pull/96771 * Fix safe area horizontal padding for CenteredModalLayout by @GCyganek in https://github.com/Expensify/App/pull/96859 * [No QA] Remove unsafe type assertions from ReportWorkflowTest.ts tests by @KJ21-ENG in https://github.com/Expensify/App/pull/96519 * Fix: prevent logout when pressing CMD+SHIFT+P after signing in from a public room by @MelvinBot in https://github.com/Expensify/App/pull/96988 * Reset stale tab title to "New Expensify" on logout by @MelvinBot in https://github.com/Expensify/App/pull/96916 * [Split #94595] Batch G - Remove useOnyx deps from Workspace/Policy/Domain by @sosek108 in https://github.com/Expensify/App/pull/96734 * [Split #94595] Batch G - Remove useOnyx deps from Workspace/Policy/Domain by @fabioh8010 in https://github.com/Expensify/App/pull/95622 * [CP Staging] Revert server-driven AZ status on expense reports by @yuwenmemon in https://github.com/Expensify/App/pull/97003 * Fix: replay finished video after playback-speed change by @MelvinBot in https://github.com/Expensify/App/pull/96919 * [No QA] Reduce unsafe type assertions in ReportPreviewActionUtils tests by @KJ21-ENG in https://github.com/Expensify/App/pull/96778 * [No QA] Remove unsafe type assertions from ReportSecondaryActionUtilsTest.ts by @KJ21-ENG in https://github.com/Expensify/App/pull/96777 * Revert "feat: Enable `react-native-nitro-fetch` (V3)" by @yuwenmemon in https://github.com/Expensify/App/pull/97000 * [Bulk workspace edits] Remove bulkEditWorkspaces beta gating by @ishpaul777 in https://github.com/Expensify/App/pull/96990 * Fix initial selected ordering in approver selection lists by @marufsharifi in https://github.com/Expensify/App/pull/95523 * [Part 18] Remove Onyx.connect from LocalePhoneNumber by @marufsharifi in https://github.com/Expensify/App/pull/96882 * [Part 19] Remove Onyx.connect from LocalePhoneNumber by @marufsharifi in https://github.com/Expensify/App/pull/96886 * [Split #94595] Batch H - Remove useOnyx deps from Nav/Wallet/Travel/Debug by @sosek108 in https://github.com/Expensify/App/pull/96754 * [Split #94595] Batch H - Remove useOnyx deps from Nav/Wallet/Travel/Debug by @fabioh8010 in https://github.com/Expensify/App/pull/95623 * Suppress promo/training/onboarding modals during supportal sessions by @mountiny in https://github.com/Expensify/App/pull/96284 * Expense - Reduce confirmation form scrolling by @emkhalid in https://github.com/Expensify/App/pull/96203 * Fix iOS TTID crash by bumping Sentry React Native to 8.7.0 by @marufsharifi in https://github.com/Expensify/App/pull/95501 * [Part 21] Remove Onyx.connect from LocalePhoneNumber by @marufsharifi in https://github.com/Expensify/App/pull/97022 * [No QA] Avatar component decomposition by @jmusial in https://github.com/Expensify/App/pull/95050 * Migrate Money Request (Part 1) routes to dynamic URL navigation by @suneox in https://github.com/Expensify/App/pull/96900 * Navigate to the clicked expense in a multi-expense report preview by @wildan-m in https://github.com/Expensify/App/pull/92546 * feat: resolve Search loading gates from snapshot terminal state by @BartekObudzinski in https://github.com/Expensify/App/pull/96388 * feat: derive report-load skeleton gates from the request queue by @BartekObudzinski in https://github.com/Expensify/App/pull/96395 * 83847 migrate merge transaction v2 by @huult in https://github.com/Expensify/App/pull/96897 * Plan selector modal migration by @jmusial in https://github.com/Expensify/App/pull/96745 * Fix magic code navigates back on payment (MoneyReportHeaderSecondaryActions) by @jmusial in https://github.com/Expensify/App/pull/96854 * Add Accounting option to Expensify Card details + Update design by @s77rt in https://github.com/Expensify/App/pull/96923 * Deferring & deprioritizing participant search render by @jmgraa in https://github.com/Expensify/App/pull/96485 * Fix reordered onboarding accounting flow by @nabi-ebrahimi in https://github.com/Expensify/App/pull/92375 * [A11y] Add Save button to auto-reporting frequency & monthly offset pages by @MelvinBot in https://github.com/Expensify/App/pull/94558 * Gate billable default and category tax selection behind a Save button (a11y On Input, PR 4) by @MelvinBot in https://github.com/Expensify/App/pull/97064 * Gate category receipt-threshold selection behind a Save button (a11y On Input, PR 3) by @MelvinBot in https://github.com/Expensify/App/pull/97063 * [No QA] Docs updates for E/A#96603 correct member vs admin room open flow by @MelvinBot in https://github.com/Expensify/App/pull/96713 * fix: make SKIP_ONBOARDING actually skip onboarding for fresh signups by @kacper-mikolajczak in https://github.com/Expensify/App/pull/96670 * perf: defer central report list on Inbox tab navigation by @BartekObudzinski in https://github.com/Expensify/App/pull/96374 * [No QA] Use upstream actions/checkout on macOS CI jobs by @JakubKorytko in https://github.com/Expensify/App/pull/97092 * Migrate Button to ButtonComposed (batch 3) by @mikolajpochec in https://github.com/Expensify/App/pull/96627 * Fix - Split Expense - Splitting is possible when the sum of splits is not equal to the total by @FitseTLT in https://github.com/Expensify/App/pull/96875 * [NoQA] fix(android): enable `largeHeap` for standalone debug builds by @WojtekBoman in https://github.com/Expensify/App/pull/97096 * Add Spend navigation suggestions to Search Router by @nabi-ebrahimi in https://github.com/Expensify/App/pull/96443 * Fix Agents - Input field does not auto scroll down when entering next line by @GCyganek in https://github.com/Expensify/App/pull/94565 * Add View on Spend button to Travel Invoicing settings by @ishpaul777 in https://github.com/Expensify/App/pull/97011 * Redirect invited member to workspace chat instead of Home by @Abdulloh0109 in https://github.com/Expensify/App/pull/95418 * Spend-Invoice report title in the message preview doesn't match the actual title by @lorretheboy in https://github.com/Expensify/App/pull/96770 * Fix context menu on completed streamed bot replies by @inimaga in https://github.com/Expensify/App/pull/96628 * Refactor: migrate convertToDisplayString to useCurrencyListActions hook (part 13) by @shubham1206agra in https://github.com/Expensify/App/pull/97035 * [Part 20] Remove Onyx.connect from LocalePhoneNumber by @marufsharifi in https://github.com/Expensify/App/pull/96973 * Add Enabled/Disabled status filter to multi-layer tags table by @MelvinBot in https://github.com/Expensify/App/pull/97048 * Add chatReportActions to getIOUActionForTransactions by @cretadn22 in https://github.com/Expensify/App/pull/96596 * [NoQA] Fix ESLint check failure: destructure isDraftPendingCompletion in MoneyRequestReportActionsList by @MelvinBot in https://github.com/Expensify/App/pull/97131 * 🍒 Cherry pick PR #97298 to staging 🍒 by @os-botify[bot] in https://github.com/Expensify/App/pull/97344 ## New Contributors * @mikolajpochec made their first contribution in https://github.com/Expensify/App/pull/96627 **Full Changelog**: https://github.com/Expensify/App/compare/9.4.44-6...9.4.45-14