You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Due for payment 2026-10-09] Android - Home - "Spend over time" section loads infinitelly after expense creation. #102619
Version Number: 9.4.97-0 Reproducible in staging?: Yes Reproducible in production?: No If this was caught during regression testing, add the test name, ID and link from BrowserStack:https://test-management.browserstack.com/projects/2219752/test-runs/76328606/folder/40579099/96594248/1811657036 Email or phone of affected tester (no customers):ibellicotest+3215@gmail.com Issue reported by: Applause Internal Team Bug source: Exploratory - Significant User Experience Deterioration Device used: Motorola MotoG60 / Android 12 (Hybrid app) App Component: Other
Action Performed:
Open the Expensify app.
Sign up with a new account.
During onboarding, select "Track expenses for my business", "Manage my team´s expenses" or "Submit expenses to my employer.
Navigate to "Home" and scroll down to "Spend over time"
Note that "Chart Unavailable" message is visible, as there are no expenses created yet.
Navigate to workspace chat.
Create a manual expense.
Return to "Home" > "Spend over time"
Note that now, section loads infinitelly.
Expected Result:
Chart should be visible on "Spend over time" section in "Home", after expenses are created.
Actual Result:
"Spend over time" section in "Home", displays infinite loading after expense creation.
👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:
Identify the pull request that introduced this issue and revert it.
Result: needs investigation. No App PR in 9.4.97-0 changes the code that decides whether "Spend over time" shows a spinner. Keep DeployBlockerCash for now.
Low-confidence candidate:Refresh Home data with OpenHomePage by blimpich. It is the only PR in this release that touches src/pages/home, but it does not touch the chart code. A revert is not justified yet.
Suggested next steps:
Check the tester's logs (ibellicotest+3215@gmail.com, 2026-09-30) for Chart fonts failed to load. Also check whether the month-grouped spend Search request returned.
Try the repro on web and iOS staging. If only Android HybridApp fails, suspect the native side or chart fonts.
The chart spins in two cases (permalinks at 7d4feda, which includes every PR in the release):
Search data counts as not loaded.useInsightData.ts:33-54 returns LOADING while isSearchDataLoaded is false. That happens when the saved results' type or hash doesn't match the query. Home re-runs the search on focus (useInsightData.ts:88-93). Duplicate in-flight calls are dropped (Search.ts:1282-1314), so one request that never returns spins forever.
Why #102341 is low confidence: it calls openHomePage() on Home focus and reconnect (HomePage.tsx:47-57). It does not touch InsightsSection, Search actions, saved results, or charts. It could only cause this if the backend response changes search data, which I can't verify from App code.
Ruled out:#102409, #102505 (Search page only), #100248, #102398, #101202 (don't change how new expenses update saved search results), #102344 (online onboarding unchanged), #100209 (behavior-neutral refactor), #101735 (theme colors), #94362 (RAM-only key). The production-to-staging compare has no changes to InsightsSection, Charts, Search.ts, SearchUIUtils.ts, or the Skia patch/version.
Other possible sources: Android HybridApp native changes in this release, or a staging backend change. Either would need an internal investigation.
Web repro: I tried to reproduce on web, but the test session broke during onboarding, so I have no web result.
[Contributor] The offending PR and associated issue have been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion:
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
Regression Test Proposal
Test:
Sign up with a new account.
During onboarding, select "Track expenses for my business", "Manage my team´s expenses" or "Submit expenses to my employer.
Navigate to "Home" and scroll down to "Spend over time"
Note that "Chart Unavailable" message is visible, as there are no expenses created yet.
Navigate to workspace chat.
Create a manual expense.
Return to "Home" > "Spend over time"
Verify that chart is visible on "Spend over time" section in "Home", after expenses are created.
changed the title [-]Android - Home - "Spend over time" section loads infinitelly after expense creation.[/-][+][Due for payment 2026-10-09] Android - Home - "Spend over time" section loads infinitelly after expense creation.[/+]on Oct 9, 2026
Skipping the payment summary for this issue since all the assignees are employees or vendors. If this is incorrect, please manually add the payment summary SO.
Activity
applause-bot commentedon Sep 30, 2026
While Applause doesn't embed attachments for this bug, here are the links for quick view:
https://platform.applause.com/services/links/v1/external/35bce9fea47effceabd8adbd76c28cd5237bf40e51796a6f31b54bba43e49d01
melvin-bot commentedon Sep 30, 2026
Triggered auto assignment to @AndrewGable (
DeployBlockerCash), see https://stackoverflowteams.com/c/expensify/questions/9980/ for more details.github-actions commentedon Sep 30, 2026
👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:
melvin-bot commentedon Sep 30, 2026
💬 A slack conversation has been started in #expensify-open-source
MelvinBot commentedon Sep 30, 2026
Deploy Blocker Investigation
Result: needs investigation. No App PR in 9.4.97-0 changes the code that decides whether "Spend over time" shows a spinner. Keep
DeployBlockerCashfor now.Low-confidence candidate: Refresh Home data with OpenHomePage by
blimpich. It is the only PR in this release that touchessrc/pages/home, but it does not touch the chart code. A revert is not justified yet.Suggested next steps:
Chart fonts failed to load. Also check whether the month-grouped spendSearchrequest returned.Investigation details
The chart spins in two cases (permalinks at
7d4feda, which includes every PR in the release):LOADINGwhile isSearchDataLoaded is false. That happens when the saved results' type or hash doesn't match the query. Home re-runs the search on focus (useInsightData.ts:88-93). Duplicate in-flight calls are dropped (Search.ts:1282-1314), so one request that never returns spins forever.!fontManager. A font failure (chartFontsCache.ts:102-131) leaves it null. This fits the repro: before the first expense only the empty state renders, so the chart first draws right after the expense is created. The earlier iOS - Home - Spend over time chart loads infinitely had this cause and was fixed by [CP Staging] Patch Skia to fix iOS chart crash and charts stuck loading.Why #102341 is low confidence: it calls
openHomePage()on Home focus and reconnect (HomePage.tsx:47-57). It does not touchInsightsSection, Search actions, saved results, or charts. It could only cause this if the backend response changes search data, which I can't verify from App code.Ruled out: #102409, #102505 (Search page only), #100248, #102398, #101202 (don't change how new expenses update saved search results), #102344 (online onboarding unchanged), #100209 (behavior-neutral refactor), #101735 (theme colors), #94362 (RAM-only key). The production-to-staging compare has no changes to
InsightsSection,Charts,Search.ts,SearchUIUtils.ts, or the Skia patch/version.Other possible sources: Android HybridApp native changes in this release, or a staging backend change. Either would need an internal investigation.
Web repro: I tried to reproduce on web, but the test session broke during onboarding, so I have no web result.
view run · no recording available
mkhutornyi commentedon Sep 30, 2026
Checking
melvin-bot commentedon Sep 30, 2026
If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.
If a regression has occurred and you are the assigned CM follow the instructions here.
If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.
mkhutornyi commentedon Sep 30, 2026
I am not able to reproduce on
mainandroid.mov
AndrewGable commentedon Sep 30, 2026
@mkhutornyi is able to reproduce on staging. Hunting for the issue now.
9 remaining items
AndrewGable commentedon Oct 1, 2026
@mkhutornyi Yes, keeping open for payment
mkhutornyi commentedon Oct 4, 2026
Contributor+ Checklist:
[Contributor] The offending PR and associated issue have been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
Link to the comment on the PR: [DX] Replace Metro with Re.Pack + a Rust transform pipeline for native builds #100202 (comment)
Link to the comment on the Issue: [Due for payment 2026-11-05] [DX] Consolidate on the OXC React Compiler and delete the Babel one #101668 (comment)
[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion:
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
Regression Test Proposal
Test:
Do we agree 👍 or 👎
[-]Android - Home - "Spend over time" section loads infinitelly after expense creation.[/-][+][Due for payment 2026-10-09] Android - Home - "Spend over time" section loads infinitelly after expense creation.[/+]melvin-bot commentedon Oct 9, 2026
Triggered auto assignment to @mallenexpensify (
Awaiting Payment)melvin-bot commentedon Oct 9, 2026
Skipping the payment summary for this issue since all the assignees are employees or vendors. If this is incorrect, please manually add the payment summary SO.
mallenexpensify commentedon Oct 13, 2026
Payment Summary
Contributor+: @mkhutornyi due $175 via NewDot
Thx for the quick help here
Match Metro's Android release assets in Re.Pack
trjExpensify commentedon Oct 15, 2026
approved $175 for @mkhutornyi