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