9.4.99-2

Expensify/App9.4.99-2Sep 30, 2026by github-actions[bot]

Upgrading?

AI Summary

This release prioritizes web performance improvements using React Compiler and Brotli compression, alongside data integrity fixes for accounting integrations and transaction utilities.

Key Highlights

  • Web Performance: Uses OXC React Compiler for Jest and compresses web bundles with Brotli.
  • Accounting: Added XERO45 export error article and Auto-categorize new expenses workspace setting.
  • Refactoring: Moved transaction utility functions out of TransactionUtils/index.ts.
  • Data Integrity: Fixed bulk-edit tag deselect clearing untouched tag levels and added lock icons for GL codes.

New Features

  • Show Reject action to workspace admins, not just the report manager.
  • Add Sign out escape hatch to required 2FA overlay.
  • Add Auto-categorize new expenses workspace setting to let strict admins disable auto-categorization.
  • Use floating RHP style on web.

Full Release Notes

## What's Changed
* [No QA] Update help docs for Release 1: Greenhouse and Classic Parity by @MelvinBot in https://github.com/Expensify/App/pull/102428
* [No QA] Add XERO45 export error article by @jjcoffee in https://github.com/Expensify/App/pull/102255
* [No QA] Update PERFORMANCE.md by @mallenexpensify in https://github.com/Expensify/App/pull/102450
* Hide Request limit increase from admins when the settlement account is connected with Plaid by @allgandalf in https://github.com/Expensify/App/pull/101657
* Update websocket-driver to 0.7.5 by @MelvinBot in https://github.com/Expensify/App/pull/102417
* [No QA] Docs updates for E/A#101080 clarify distance rate behavior when moving expenses between workspaces by @MelvinBot in https://github.com/Expensify/App/pull/101619
* [No QA]  Add files via upload by @stephanieelliott in https://github.com/Expensify/App/pull/102499
* [Refactor] Move buildOptimisticTransaction and getUpdatedTransaction out of TransactionUtils/index.ts by @MelvinBot in https://github.com/Expensify/App/pull/102398
* [No QA] Normalize detected timezone before returning it by @iwiznia in https://github.com/Expensify/App/pull/102439
* Docs updates for E/A#102019 USD beneficial owners enter last four SSN digits by @MelvinBot in https://github.com/Expensify/App/pull/102301
* [No QA] Add DynamicReportDetailsPage perf test by @sosek108 in https://github.com/Expensify/App/pull/102401
* [Payment due @brunovjk] Fix empty notification preferences in admin rooms by @fedirjh in https://github.com/Expensify/App/pull/101664
* [No QA] Docs updates for E/A#102242 Add Tag column to personal card spreadsheet import by @MelvinBot in https://github.com/Expensify/App/pull/102465
* feat: use floating RHP style on web by @BartekObudzinski in https://github.com/Expensify/App/pull/101093
* `MenuItem` decomposition - html value by @war-in in https://github.com/Expensify/App/pull/102170
* [No QA] Rename title from 'Expensify Help' to 'ExpensifyHelp' by @stephanieelliott in https://github.com/Expensify/App/pull/102497
* Keep table search and filters fixed while columns scroll horizontally by @war-in in https://github.com/Expensify/App/pull/101564
* [No QA] Use the OXC React Compiler for Jest by @elirangoshen in https://github.com/Expensify/App/pull/102081
* [Payment due @mkhutornyi] Tell non-Control workspaces that auto-pay approved reports requires the Control plan by @NicolasBonet in https://github.com/Expensify/App/pull/102338
* Queue CompleteGuidedSetup when offline during web onboarding by @MelvinBot in https://github.com/Expensify/App/pull/102344
* [Payment due @hoangzinh] Handle Default workflow changes correctly by @Gonals in https://github.com/Expensify/App/pull/102189
* Group agent rule suggestions under collapsible help-article sections by @yuwenmemon in https://github.com/Expensify/App/pull/102244
* fix Onboarding - Accounting tiles show 1 column after rotating to portrait by @mkhutornyi in https://github.com/Expensify/App/pull/102486
* Add a server selection page (part 2/5) by @sharabai in https://github.com/Expensify/App/pull/100209
* Update the global RBR and GBR text colors by @marufsharifi in https://github.com/Expensify/App/pull/101735
* refactor: extract transaction selection and pending expense hooks, finish wiring by @sosek108 in https://github.com/Expensify/App/pull/101202
* Stop Search from firing twice on cached revisit by @TMisiukiewicz in https://github.com/Expensify/App/pull/102409
* [Payment due @huult] Display SearchForReports results in proper tiers order by @carlosmiceli in https://github.com/Expensify/App/pull/94362
* fix: show lock icon on tag GL code field when connected to accounting by @neerajbachani in https://github.com/Expensify/App/pull/102501
* Remove TranslateLocal in `src/libs/OptionsListUtils/searchMatchUtils.ts` by @parasharrajat in https://github.com/Expensify/App/pull/102362
* [Payment due @truph01] Add Auto-categorize new expenses workspace setting to let strict admins disable auto-categorization" by @dukenv0307 in https://github.com/Expensify/App/pull/100248
* [No QA] Fix SearchAutocompleteList typecheck after merge race by @carlosmiceli in https://github.com/Expensify/App/pull/102567
* Show Reject action to workspace admins, not just the report manager by @dukenv0307 in https://github.com/Expensify/App/pull/101503
* Add Sign out escape hatch to required 2FA overlay by @neerajbachani in https://github.com/Expensify/App/pull/100077
* Fix bulk-edit tag deselect clearing untouched tag levels by @dilshodmackbook-sketch in https://github.com/Expensify/App/pull/101460
* [Payment due @eh2077] Properly add members back to default workflow when removed from other workflows by @Gonals in https://github.com/Expensify/App/pull/102527
* Gate the Search optimistic watch key on a pending write by @mukhrr in https://github.com/Expensify/App/pull/102505
* Remove unsafe assertions from useGeographicalStateAndCountryFromRoute by @KJ21-ENG in https://github.com/Expensify/App/pull/100001
* [No QA] Compress web bundles with Brotli by @collectioneur in https://github.com/Expensify/App/pull/101730
* refactor: remove unsafe assertions from deployment tooling, Airship mocks, and FlatList by @KJ21-ENG in https://github.com/Expensify/App/pull/98877
* Show a reconnect warning when the QBO refresh token is about to expire by @KioCoan in https://github.com/Expensify/App/pull/101273
* [No QA] Update ChatGPT MCP help article to say plugin instead of connector by @MelvinBot in https://github.com/Expensify/App/pull/102449
* [No QA] Docs updates for E/A#99516 Book travel now available from Search by @MelvinBot in https://github.com/Expensify/App/pull/100223
* [cp staging] Fix bulk action bar blocker by @JS00001 in https://github.com/Expensify/App/pull/102582
* Resolve the member's own policy role when checking room member removal by @MelvinBot in https://github.com/Expensify/App/pull/101643
* Refresh Home data with OpenHomePage by @blimpich in https://github.com/Expensify/App/pull/102341
* Expense - Scan and per diem confirm page does not use dropdown-style rows by @thelullabyy in https://github.com/Expensify/App/pull/102580
* Move pre-selected item to top on Workflows pickers (day-of-month & payer) by @marufsharifi in https://github.com/Expensify/App/pull/101313
* [No QA] Align Greenhouse help article with HelpDot authoring rules by @MelvinBot in https://github.com/Expensify/App/pull/102536
* Revert "[Payment due @Krishna2323] Add NetSuite split exports by posting period toggle" by @Julesssss in https://github.com/Expensify/App/pull/102588


**Full Changelog**: https://github.com/Expensify/App/compare/9.4.98-0...9.4.99-2

Related Repositories