9.4.89-0

Expensify/App9.4.89-0Sep 18, 2026by github-actions[bot]

Upgrading?

AI Summary

This release includes numerous bug fixes, UI enhancements, and integration updates for the Expensify App. Key improvements address app stability, such as fixing crashes in the Insights tab and public rooms, while also introducing new features like the Campfire integration and a floating action bar for bulk actions.

Key Highlights

  • Fixed app crashes when returning from Insights to Account via browser back button.
  • Added Campfire integration import pages.
  • Introduced a floating action bar for bulk actions.
  • Fixed public room loading infinitely and resolved unsafe assertions in dynamic routes and keyboard handling.
  • Fixed broken card feed connection for Company cards and personal card reconnection for error 434.

New Features

  • Campfire integration import pages.
  • Floating action bar for bulk actions.
  • New message marker when user marks their own message as unread.
  • Category description hint on expense creation description field.
  • Business Central connector entry and connection flow.
  • Use in-app VisionCamera for chat attachment photos.

Full Release Notes

## What's Changed
* Render the Concierge system message for an automatic distance rate change by @MelvinBot in https://github.com/Expensify/App/pull/100781
* Show New message marker when a user marks their own message as unread by @MelvinBot in https://github.com/Expensify/App/pull/95217
* [Insights] fix: App crashes when returning from Insights to Account via browser back button by @mhawryluk in https://github.com/Expensify/App/pull/101350
* [No QA] Docs updates for E/A#99400 Copilots can't close account owner's account by @MelvinBot in https://github.com/Expensify/App/pull/99604
* [No QA] Docs updates for E/A#93317 document Invoice fields on workspace Invoices page by @MelvinBot in https://github.com/Expensify/App/pull/100753
* [Bug] Hide cancelled reservations from Upcoming by @rlinoz in https://github.com/Expensify/App/pull/101385
* Remove unsafe assertion from dynamic route screen detection by @KJ21-ENG in https://github.com/Expensify/App/pull/100677
* Remove unsafe assertion from IME keyboard event handling by @KJ21-ENG in https://github.com/Expensify/App/pull/100578
* Docs updates for E/A#100872 document Upcoming travel section on Home by @MelvinBot in https://github.com/Expensify/App/pull/101001
* [No QA] Docs updates for E/A#97951 Bulk editing one tag level preserves other levels by @MelvinBot in https://github.com/Expensify/App/pull/100483
* [No QA] Docs updates for E/A#99639 Correct bulk duplicate reports UI labels by @MelvinBot in https://github.com/Expensify/App/pull/99956
* Fix - Company cards - Broken card feed connection RHP spins forever with no error when the feed has a feed-level error by @jmusial in https://github.com/Expensify/App/pull/100687
* Route personal details reads through PersonalDetailsStore and hooks by @TMisiukiewicz in https://github.com/Expensify/App/pull/101308
* [NoQA] fix: web ad-hoc builds serving stale code by @rinej in https://github.com/Expensify/App/pull/97243
* feat: Replace vacation delegate policy diff warning with RHP invite step by @jakubstec in https://github.com/Expensify/App/pull/99460
* Have number-keyed objects in approval rules start at 1 by @Gonals in https://github.com/Expensify/App/pull/101323
* [NoQA] Refactor search key to a query param followup by @bernhardoj in https://github.com/Expensify/App/pull/101397
* fix: Public room loads infinitely by @nkdengineer in https://github.com/Expensify/App/pull/101053
* refactor: extract useMoneyRequestReportPagination by @sosek108 in https://github.com/Expensify/App/pull/100030
* refactor: extract MoneyRequestReportTransactionList presentational components by @sosek108 in https://github.com/Expensify/App/pull/101199
* Add Campfire integration import pages by @s77rt in https://github.com/Expensify/App/pull/100580
* fix: show a "Refresh needed" empty state for stale search results by @BartekObudzinski in https://github.com/Expensify/App/pull/100176
* Remove vendor gate intacct by @KioCoan in https://github.com/Expensify/App/pull/100455
* [No QA] Guard line 1 of CONTRIBUTOR_PLUS_CHECKLIST.md in CI by @allgandalf in https://github.com/Expensify/App/pull/101290
* [No QA] Docs updates for E/A#100460 admins can attach receipts to approved expenses by @MelvinBot in https://github.com/Expensify/App/pull/100903
* Fix Workspace navigation tests after Insights tab addition by @nabi-ebrahimi in https://github.com/Expensify/App/pull/101024
* Use a floating action bar for bulk actions  by @Krishna2323 in https://github.com/Expensify/App/pull/100291
* [No QA] Add getRateForPolicyChange to select a distance rate when the policy changes by @MelvinBot in https://github.com/Expensify/App/pull/101080
* Show the category description hint on the expense creation description field by @MelvinBot in https://github.com/Expensify/App/pull/101072
* Remove getPersonalDetailByEmail from generateDefaultWorkspaceName by @bernhardoj in https://github.com/Expensify/App/pull/101165
* [No QA] Move Xero vendor matching docs into main helpsite nav  by @stephanieelliott in https://github.com/Expensify/App/pull/101384
* Expense-Empty report can be downloaded via reconciliation in workspace chat by @dukenv0307 in https://github.com/Expensify/App/pull/101048
* Fix: anonymous user first time tapping on sign in button or a thread open public room by @nkdengineer in https://github.com/Expensify/App/pull/99582
* [Payment due @bernhardoj] [No QA] Add apply to existing unsubmitted expenses toggle to personal expense rules by @NicolasBonet in https://github.com/Expensify/App/pull/100244
* Announce Badge as a single accessibility element by @MelvinBot in https://github.com/Expensify/App/pull/100462
* [Payment due @abdulrahuman5196] Improve column auto-mapping when the file structure is different by @Gonals in https://github.com/Expensify/App/pull/96654
* [BC][R1]Add the Business Central connector entry and connection flow by @c3024 in https://github.com/Expensify/App/pull/100857
* Recover the Pusher apply chain after a rejection, behind a watermark continuity guard by @adhorodyski in https://github.com/Expensify/App/pull/100594
* Part 5: Remove Onyx.connect() for the key: ONYXKEYS.SESSION in src/libs/ReportUtils.ts by @thelullabyy in https://github.com/Expensify/App/pull/100450
* warn when leaving a workspace with reports to approve by @dukenv0307 in https://github.com/Expensify/App/pull/101352
* [NoQA] Remove the DualEntry beta by @lakchote in https://github.com/Expensify/App/pull/100621
* Do not delete the dismissed expense from Onyx by @akinwale in https://github.com/Expensify/App/pull/101386
* [LegendList 3/7] fix: align report action loading skeletons by @chrispader in https://github.com/Expensify/App/pull/100884
* Only let policy admins and managers edit expenses on expense reports by @MelvinBot in https://github.com/Expensify/App/pull/101029
* [Payment due @nyomanjyotisa] Fix personal card reconnection for error 434 by @carlosmiceli in https://github.com/Expensify/App/pull/101045
* [No QA] support standalone Xcode 27 iOS builds and simulators by @jmgraa in https://github.com/Expensify/App/pull/101364
* [No QA] Add npm min-release-age cooldown for supply chain protection by @NicolasBonet in https://github.com/Expensify/App/pull/95897
* refactor createOption function to use data from useOnyx part 1 by @daledah in https://github.com/Expensify/App/pull/99270
* Fix time display format by using localized format by @shubham1206agra in https://github.com/Expensify/App/pull/101017
* `MenuItem` decomposition - secondary interaction handling by @war-in in https://github.com/Expensify/App/pull/100964
* Remove the noRightMarginOnSubscriptContainer prop from ReportAvatar by @jmusial in https://github.com/Expensify/App/pull/100575
* [No QA] fix: forward ref synchronously in `PressableWithSecondaryInteraction` by @war-in in https://github.com/Expensify/App/pull/101065
* Thread beta overrides into the remaining util call sites by @arekm213 in https://github.com/Expensify/App/pull/100061
* [Phase 2] Part 4 - Migrate deprecatedGetReportName to getReportName in libs by @hoangzinh in https://github.com/Expensify/App/pull/98047
* Show the grabbing cursor while dragging a custom column row by @MelvinBot in https://github.com/Expensify/App/pull/101334
* [No QA] Set `resizableActivity` to default `true` to match HybridApp manifest by @GCyganek in https://github.com/Expensify/App/pull/101067
* fix: use in-app VisionCamera for chat attachment photos (re-land) by @MelvinBot in https://github.com/Expensify/App/pull/96458
* [No QA] Add a non-production link back to token-based (SOAP) NetSuite setup by @yuwenmemon in https://github.com/Expensify/App/pull/101283
* [No QA] Drop approver-less workflows when removing an approver by @MelvinBot in https://github.com/Expensify/App/pull/100370
* [NoQA] Fix typecheck: pass movedFromReportName in ModifiedExpenseMessageTest by @mountiny in https://github.com/Expensify/App/pull/101467
* [NoQA] [Insights] Request and store a dashboard by @mhawryluk in https://github.com/Expensify/App/pull/100975


**Full Changelog**: https://github.com/Expensify/App/compare/9.4.88-0...9.4.89-0

Related Repositories