9.3.60-22

gitbutlerapp/gitbutler9.3.60-22Apr 21, 2026by github-actions[bot]

AI Summary

A comprehensive update to the Expensify app focusing on UI consistency, navigation fixes, and accounting integrations.

Key Highlights

  • Replaced FullscreenLoadingIndicator with ActivityIndicator across multiple pages
  • Fixed the broken share sheet flow
  • Added a live map to the GPS screen
  • Implemented Sage Intacct autosync and accounting-method migration

New Features

  • Live map on GPS screen
  • Chronos OOO event creation UI
  • PDF attachment rotation
  • Sage Intacct autosync

Full Release Notes

## What's Changed
* Use ActivityIndicator in ReportChangeWorkspacePage by @MelvinBot in https://github.com/Expensify/App/pull/87592
* Replace FullscreenLoadingIndicator with ActivityIndicator in ScheduleCallPage by @MelvinBot in https://github.com/Expensify/App/pull/87590
* Replace FullscreenLoadingIndicator with ActivityIndicator in DisplayNamePage by @MelvinBot in https://github.com/Expensify/App/pull/87587
* Use ActivityIndicator in ConnectToXeroFlow native loading by @MelvinBot in https://github.com/Expensify/App/pull/87583
* Use ActivityIndicator in ConfirmCustomSegmentList by @MelvinBot in https://github.com/Expensify/App/pull/87584
* Use ActivityIndicator in ConnectToQuickbooksOnlineFlow by @MelvinBot in https://github.com/Expensify/App/pull/87594
* Replace FullscreenLoadingIndicator with ActivityIndicator in DateOfBirthPage by @MelvinBot in https://github.com/Expensify/App/pull/87589
* fix: Button Learn more not available for first time open No workspace found screen by @nkdengineer in https://github.com/Expensify/App/pull/87332
* Bump onyx to 3.0.59 by @VickyStash in https://github.com/Expensify/App/pull/87738
* Adjust Spend Over Time widget's visibility on home page by @mhawryluk in https://github.com/Expensify/App/pull/87577
* [Payment due @dukenv0307] Add a UI to Chronos for creating OOO events by @tgolen in https://github.com/Expensify/App/pull/87543
* Part 1 - Thread currentUserAccountID through hold/permission functions in ReportUtils by @Krishna2323 in https://github.com/Expensify/App/pull/87275
* Fix merchant rule row clipping descender characters by @MelvinBot in https://github.com/Expensify/App/pull/87300
* [NoQA] Fix reviewer inline comments not posting due to missing allowed-rules.txt by @kacper-mikolajczak in https://github.com/Expensify/App/pull/87803
* [No QA] Update Track-Taxes help article with tax disabled alert FAQ by @MelvinBot in https://github.com/Expensify/App/pull/87568
* fix: qbo travel invoicing copy by @ikevin127 in https://github.com/Expensify/App/pull/87713
* [No QA] perf: Raise BillingGracePeriodEnds subscriptions out of list items by @jmusial in https://github.com/Expensify/App/pull/87625
* Fix copy by @luacmartins in https://github.com/Expensify/App/pull/87821
* [No QA] Add images to expense duplicate articles  by @stephanieelliott in https://github.com/Expensify/App/pull/86831
* Fix reportAttributes recomputing all reports on transaction updates by @TMisiukiewicz in https://github.com/Expensify/App/pull/87747
* [No QA] Update help site docs for Attendees expense table columns by @MelvinBot in https://github.com/Expensify/App/pull/86991
* Fix Radio buttons are hidden behind navigation bar, unable to scroll down filters by @GCyganek in https://github.com/Expensify/App/pull/87376
* fix unable to scroll down share confirm page in landscape mode by @jakubstec in https://github.com/Expensify/App/pull/87626
* fix odometer receipt page not scrollable in landscape mode  by @jakubstec in https://github.com/Expensify/App/pull/87593
* Fix Different map expense creation layout in Track and Split expense by @GCyganek in https://github.com/Expensify/App/pull/87465
* migrate sage intacct autosync and accounting-method by @huult in https://github.com/Expensify/App/pull/87744
* refactor: PureReportActionItem, add SimpleMessageContent by @LukasMod in https://github.com/Expensify/App/pull/87359
* refactor: PureReportActionItem, add ApprovalFlowContent by @LukasMod in https://github.com/Expensify/App/pull/87462
* Filter pending-delete members from approval workflows by @MelvinBot in https://github.com/Expensify/App/pull/87775
* fix: Remove Onyx.connect() for the key: ONYXKEYS.COLLECTION.POLICY (part 3) by @truph01 in https://github.com/Expensify/App/pull/86908
* Release 3: UI Updates for Expensify Cards by @narefyev91 in https://github.com/Expensify/App/pull/86848
* Extract SelectionToolbar from MoneyRequestReportActionsList by @adhorodyski in https://github.com/Expensify/App/pull/87659
* refactor: PureReportActionItem, add PaymentContent by @LukasMod in https://github.com/Expensify/App/pull/87399
* refactor clearCreateChatError, clearTaskErrors and navigateToAndOpenReportWithAccountIDs to use isSelfTourViewed from useOnyx by @dukenv0307 in https://github.com/Expensify/App/pull/87231
* feat: show Invite button on Members page for money request reports by @M00rish in https://github.com/Expensify/App/pull/82065
* refactor: PureReportActionItem, add PolicyChangeLogContent by @LukasMod in https://github.com/Expensify/App/pull/87492
* refactor: PureReportActionItem, add ActionableWhisperContent by @LukasMod in https://github.com/Expensify/App/pull/87507
* Add a map on the GPS screen that shows the trip live by @GCyganek in https://github.com/Expensify/App/pull/87103
* Part 2: Remove Onyx.connect() for the key: ONYXKEYS.COLLECTION.REPORT_ACTIONS in src/libs/actions/Policy/Policy.ts by @DylanDylann in https://github.com/Expensify/App/pull/87335
* Fix unreported expenses not showing up in unapproved card by @JS00001 in https://github.com/Expensify/App/pull/87895
* [No QA] Simplify useAllPolicyExpenseChatReportActions by @TMisiukiewicz in https://github.com/Expensify/App/pull/87894
* refactor getSearchOptions to use conciergeReportID from useOnyx by @dukenv0307 in https://github.com/Expensify/App/pull/87772
* Fix: Share sheet flow is busted by @twilight2294 in https://github.com/Expensify/App/pull/86632
* [No QA] perf: Raise BillingGracePeriodEnds subscriptions out of list items v2 by @jmusial in https://github.com/Expensify/App/pull/87849
* Add rotation for PDF attachments by @pasyukevich in https://github.com/Expensify/App/pull/86760
* [No QA] Remove selector from useArchivedReportsIdSet by @TMisiukiewicz in https://github.com/Expensify/App/pull/87899
* Part 6 - Thread delegateEmail through getFinishOnboardingTaskOnyxData and completeTestDriveTask by @Krishna2323 in https://github.com/Expensify/App/pull/87809
* Refactor `deleteTrackExpense` by @parasharrajat in https://github.com/Expensify/App/pull/86608
* Fix issue with Split reverting was not successful for expense with negative amount by @ZhenjaHorbach in https://github.com/Expensify/App/pull/84705
* Add onSelected handler to Chronos timer dropdown option by @MelvinBot in https://github.com/Expensify/App/pull/87823
* [NO QA] Improve cherry-pick workflow Slack notifications by @MelvinBot in https://github.com/Expensify/App/pull/87791
* [No QA] refactor: move hold expense helpers into existing IOU/Hold.ts by @DylanDylann in https://github.com/Expensify/App/pull/87890
* [No QA] Remove green color from + button references in help docs by @MelvinBot in https://github.com/Expensify/App/pull/87573
* Update empty workspace copy text by @MelvinBot in https://github.com/Expensify/App/pull/86775
* Skip stale hasOutstandingChildRequest on empty trip rooms by @MobileMage in https://github.com/Expensify/App/pull/86744
* Add trackExpensesWithConcierge onboarding RHP variant by @MelvinBot in https://github.com/Expensify/App/pull/85762
* Call getThumbnailAndImageURIs unconditionally in ReceiptCell by @MelvinBot in https://github.com/Expensify/App/pull/87417
* [Payment due @DylanDylann] [NO QA] Add custom Sentry spans for odometer distance expenses by @Julesssss in https://github.com/Expensify/App/pull/87813
* [iOS] Fix crash after inviting a user to a group chat by @marufsharifi in https://github.com/Expensify/App/pull/87169
* [Onyx Audit] Migrate keys to RAM-only part 2/3 - fix by @JKobrynski in https://github.com/Expensify/App/pull/87254
* refactor markRejectViolationAsResolved to use isOffline by @dukenv0307 in https://github.com/Expensify/App/pull/86829
* [No QA] Add Connect-Personal-Cards.md for R3 new card import by @MelvinBot in https://github.com/Expensify/App/pull/87059
* [Payment due @situchan] Hide ACH if report is non reimbursable by @s77rt in https://github.com/Expensify/App/pull/87552
* [No QA][RN iOS prebuilds] Use `install_modules_dependencies` in `group-ib-fp.podspec` by @mateuuszzzzz in https://github.com/Expensify/App/pull/87879
* [No QA] Update Personal Karma help article for NewDot toggle flow by @MelvinBot in https://github.com/Expensify/App/pull/87571
* fix: Multiple expenses appears in confirmation page by @nkdengineer in https://github.com/Expensify/App/pull/87842
* fix: checkbox alignment and the padding of last item in onboarding interested features page  by @samranahm in https://github.com/Expensify/App/pull/87176
* Fix duplicate self DMs in LHN after splitting expense (Vacation Delegate) by @marufsharifi in https://github.com/Expensify/App/pull/87082
* [No QA] Create import-via-csv-personal.md by @dylanexpensify in https://github.com/Expensify/App/pull/80549
* [No QA] docs: Add help site docs for Assign new cards feature by @MelvinBot in https://github.com/Expensify/App/pull/86531
* [No QA] Update Account-Settings.md by @brianlee-expensify in https://github.com/Expensify/App/pull/87917
* [No QA] Add help site docs for Duplicate Report feature by @MelvinBot in https://github.com/Expensify/App/pull/87835
* Fix Chronos timer dropdown button layout on native platforms by @MelvinBot in https://github.com/Expensify/App/pull/87828
* [No QA] Update Distance-Expenses help article to include tax field by @MelvinBot in https://github.com/Expensify/App/pull/87248
* Fix lost/duplicated requests in PersistedRequests (Issues 2, 3, 4, 5) + deploy blocker fix by @szymonzalarski98 in https://github.com/Expensify/App/pull/85920
* Fix travel invoicing card display in expense detail and EReceipt by @blimpich in https://github.com/Expensify/App/pull/87918
* Fix  No members page has overlapping elements when changing approver by @GCyganek in https://github.com/Expensify/App/pull/87953
* fix text description "successfully authenticated" overlaps with the Got it in landscape mode  by @jakubstec in https://github.com/Expensify/App/pull/87845
* Fix spend rule card page landscape overlap by @MelvinBot in https://github.com/Expensify/App/pull/87678
* [Card Rules] Hide deactivated cards from rule summary and selection by @MelvinBot in https://github.com/Expensify/App/pull/87679
* Empty state hide top bar on scroll by @mrejdak in https://github.com/Expensify/App/pull/87620
* Add offline visual feedback for spend rules by @MelvinBot in https://github.com/Expensify/App/pull/87822
* [No QA] Revert "Do not show notifications for non-actionable actions" by @s77rt in https://github.com/Expensify/App/pull/87542
* feat: display assigned account manager, partner manager, guide by @Pujan92 in https://github.com/Expensify/App/pull/86952
* [NO QA] Fix flaky MiddlewareTest by using resetQueue() in beforeEach by @MelvinBot in https://github.com/Expensify/App/pull/87945
* Extract secondary action hooks and components from MoneyReportHeader by @TMisiukiewicz in https://github.com/Expensify/App/pull/87361
* Hide Edit expense context menu on settled/approved/closed reports by @wildan-m in https://github.com/Expensify/App/pull/87650
* Moved auth only providers to AuthScreen by @shubham1206agra in https://github.com/Expensify/App/pull/86441
* [Payment due @rojiphil] Deleted transactions on search V2 by @jnowakow in https://github.com/Expensify/App/pull/86938
* Fix blank VerticalCreditCards icon on native Wallet page by @MelvinBot in https://github.com/Expensify/App/pull/87723
* [No QA] refactor: move update params into existing IOU/UpdateMoneyRequest.ts by @DylanDylann in https://github.com/Expensify/App/pull/87896
* fix: UNREPORTEDTRANSACTION report action not show and no Explain sparkle link by @paulnjs in https://github.com/Expensify/App/pull/87704
* [Wiring the UI] Revamp search page actions bar by @bernhardoj in https://github.com/Expensify/App/pull/86297
* Migration navigation from InteractionManager to TransitionTracker V3 by @collectioneur in https://github.com/Expensify/App/pull/85759
* fix: Create expense from QAB after split expense, Confirm page loads infinitely by @TaduJR in https://github.com/Expensify/App/pull/87695
* Use threadReportID for report lookup in ReviewTaxCode by @MelvinBot in https://github.com/Expensify/App/pull/87943
* [No QA] refactor: extract bulk edit and report assignment functions from IOU/index.ts by @DylanDylann in https://github.com/Expensify/App/pull/87839
* [No QA] Rewrite React Compiler CI compliance check by @roryabraham in https://github.com/Expensify/App/pull/87182
* Refactor searchMatchUtils out from optionsListUtils by @sharabai in https://github.com/Expensify/App/pull/86982
* [Payment due @huult] Use error message from server for scan failed receipts by @MonilBhavsar in https://github.com/Expensify/App/pull/87111
* Refactor: migrate convertToDisplayString to useCurrencyListActions hook (part 1) by @shubham1206agra in https://github.com/Expensify/App/pull/87880
* [InternalQA] Update the GroupIB Fraud Protection snippet by @cristipaval in https://github.com/Expensify/App/pull/88006
* [No QA] Update help site: document bulk expense duplication by @MelvinBot in https://github.com/Expensify/App/pull/87569
* [No QA] Update React Compiler docs for new CI compliance check by @roryabraham in https://github.com/Expensify/App/pull/88001
* fix: correctly resolve mention whispers created during message edits by @deetergp in https://github.com/Expensify/App/pull/86264
* fix: Downloaded video has corrupted format by @Eskalifer1 in https://github.com/Expensify/App/pull/86915
* clean up shouldRestrictUserBillableActions by @dukenv0307 in https://github.com/Expensify/App/pull/87777
* Fix case-sensitive CSV import enabled column comparison by @MelvinBot in https://github.com/Expensify/App/pull/87783
* Expand fallback condition & DRY up message for clipboard copy by @deetergp in https://github.com/Expensify/App/pull/88004
* Add monthly spend limit per member for travel invoicing by @allgandalf in https://github.com/Expensify/App/pull/86398
* perf: decompose MoneyRequestConfirmationListFooter into section components by @OlimpiaZurek in https://github.com/Expensify/App/pull/87496
* Migrate main chat to FlashList with inverted flag by @VickyStash in https://github.com/Expensify/App/pull/85114
* Fix leading colon in tag value and false tag violations for non-required levels by @wildan-m in https://github.com/Expensify/App/pull/87198
* [Payment due @ikevin127] Fix how we handle card names on search/reports by @JS00001 in https://github.com/Expensify/App/pull/87922
* fix: Add updated automatic/scan flow to native share sheet creation flow by @TaduJR in https://github.com/Expensify/App/pull/87142
* Hide duplicate card row error when feed connection is broken by @MelvinBot in https://github.com/Expensify/App/pull/87553
* [No QA] Auto-check NO QA Mobile-Expensify PRs in deploy checklist by @MelvinBot in https://github.com/Expensify/App/pull/87816
* Fix infinite onboarding navigation loop crash on iOS by @mountiny in https://github.com/Expensify/App/pull/88014
* 🍒 Cherry pick PR #88185 to staging 🍒 by @os-botify[bot] in https://github.com/Expensify/App/pull/88369


**Full Changelog**: https://github.com/Expensify/App/compare/9.3.59-4...9.3.60-22