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-11-03] Android-Home-Pick Top categories in Insight card page scroll up over that card #105108
Version Number: 9.5.23-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:#103210 Email or phone of affected tester (no customers):[email protected] Issue reported by: Applause Internal Team Bug source: Exploratory - Critical User Impact Device used: Pixel 7a Android 17 App Component: Left Hand Navigation (LHN)
Action Performed:
Preconditions:
An admin of a workspace with a few months of expenses across several categories and merchants, whose Home shows the Insights card with Spend over time.
Invite some member to workspace
New log in or Clearing cache and restart app
Open Hybrid app
Navigate to Home
Scroll down to Insight Card (showing Spending over time)
Tap on dropdown and pick Top spenders
Tap on dropdown and pick Top categories
Expected Result:
Page should stay on Insight card when pick Top categories title
👋 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.
Recommendation: Revert it. It is a self-contained part 2/2 feature, and nothing merged since touches its files, so the revert should be clean.
Why: Switching Top spenders (bar) to Top categories (pie) remounts the chart. The new ChartReveal reserves a placeholder height for the loading state and then swaps it for the real chart a render later. The Insights card is the last section on Home, so these height changes move the scroll limit, and Android pulls the scroll position up.
Investigation details
Why this PR
Applause linked this PR in the "caught during regression testing" field, so the bug was found while QA-ing it on staging.
Of the PRs in Deploy Checklist: New Expensify 2026-10-26, this is the only one that changes how Home Insights charts render or size on native. No PR in the deploy touches the Insights dropdown or PopoverMenu.
It merged 2026-10-26 and is in 9.5.23-0. The bug is not on production. Part 1 and the pie legend change were already on production.
Mechanism
InsightsSection is the last item in Home's scroll content (HomePage.tsx:102). Any change in its height changes the max scroll offset.
Top spenders is a bar chart and Top categories is a pie chart, so switching remounts the chart and resets its frame and width measurement.
The pie placeholder now reserves a full five-row legend (chartHeights.ts:33-45), about 430dp on phones. Production used a fixed 250dp spinner. The final card height then depends on how many categories exist.
Load state arrives one render late. The chart reports through a useLayoutEffect (ChartReveal.tsx:33). The spinner only becomes an absolute overlay once isReady is true (ChartReveal.tsx:68, ChartReveal.tsx:128-129). For one render, the in-flow placeholder and the chart can stack, or a revealed chart that goes back to loading can collapse to zero height. The code comment assumes no frame shows this, which may hold on web but not on Android.
Not verified: I could not test on Android, and the attached video was not reviewed frame by frame. The exact render that shrinks the card is not confirmed.
If you prefer to fix forward instead of reverting
In ChartReveal, keep the placeholder as an overlay at all times and give the wrapper minHeight: loadingHeight while not ready.
In src/components/Search/SearchChartView.tsx, keep the width-measuring frame above the chart-type switch, so Bar → Pie does not restart measurement.
On Home, don't let the placeholder grow past the outgoing card height, or reserve only as many legend rows as there are slices once the data is known.
Assignees:sharabai (author), luacmartins and daledah (reviewers) are already assigned.
changed the title [-]Android-Home-Pick Top categories in Insight card page scroll up over that card[/-][+][Due for payment 2026-11-03] Android-Home-Pick Top categories in Insight card page scroll up over that card[/+]on Oct 27, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.23-3 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2026-11-03. 🎊
The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]
Activity
applause-bot commentedon Oct 27, 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/03a40cb81dc7462e14de9f2ca4f5a3b256481f26df6fb856f0d10afe27382148
melvin-bot commentedon Oct 27, 2026
You have been assigned to this deploy blocker because you recently merged this PR: #103210
melvin-bot commentedon Oct 27, 2026
@luacmartins @daledah you have been assigned to this deploy blocker because you reviewed the offending PR: #103210
melvin-bot commentedon Oct 27, 2026
@sharabai you have been assigned to this deploy blocker because you authored the offending PR: #103210
melvin-bot commentedon Oct 27, 2026
💬 A slack conversation has been started in #expensify-open-source
github-actions commentedon Oct 27, 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:
MelvinBot commentedon Oct 27, 2026
Deploy Blocker Analysis
Causing PR (medium-high confidence): Feat: add spinner with fade-in to charts (part 2/2)
Recommendation: Revert it. It is a self-contained part 2/2 feature, and nothing merged since touches its files, so the revert should be clean.
Why: Switching Top spenders (bar) to Top categories (pie) remounts the chart. The new
ChartRevealreserves a placeholder height for the loading state and then swaps it for the real chart a render later. The Insights card is the last section on Home, so these height changes move the scroll limit, and Android pulls the scroll position up.Investigation details
Why this PR
PopoverMenu.Mechanism
InsightsSectionis the last item in Home's scroll content (HomePage.tsx:102). Any change in its height changes the max scroll offset.chartHeights.ts:33-45), about 430dp on phones. Production used a fixed 250dp spinner. The final card height then depends on how many categories exist.useLayoutEffect(ChartReveal.tsx:33). The spinner only becomes an absolute overlay onceisReadyis true (ChartReveal.tsx:68,ChartReveal.tsx:128-129). For one render, the in-flow placeholder and the chart can stack, or a revealed chart that goes back to loading can collapse to zero height. The code comment assumes no frame shows this, which may hold on web but not on Android.Not verified: I could not test on Android, and the attached video was not reviewed frame by frame. The exact render that shrinks the card is not confirmed.
If you prefer to fix forward instead of reverting
ChartReveal, keep the placeholder as an overlay at all times and give the wrapperminHeight: loadingHeightwhile not ready.src/components/Search/SearchChartView.tsx, keep the width-measuring frame above the chart-type switch, so Bar → Pie does not restart measurement.Assignees:
sharabai(author),luacmartinsanddaledah(reviewers) are already assigned.view run
sharabai commentedon Oct 27, 2026
Looking into this deploy blocker.
sharabai commentedon Oct 27, 2026
Atm, I can't reproduce the issue on either Android or iOS at the tip of my branch. I'll recheck on a release build using the exact version reported.
sharabai commentedon Oct 27, 2026
Finally, I could repro the issue. Working on fixing it.
sharabai commentedon Oct 27, 2026
Opened PR #105163
sharabai commentedon Oct 27, 2026
Fix is up and approved: #105163. It's marked for CP to staging, so it'll be ready for a retest once it's deployed there.
m-natarajan commentedon Oct 27, 2026
Xiaomi Redmi Note 10 / Android 12 , app 9.5.23-3, Passed
Screenrecorder-2026-10-27-22-46-59-983.mp4
[-]Android-Home-Pick Top categories in Insight card page scroll up over that card[/-][+][Due for payment 2026-11-03] Android-Home-Pick Top categories in Insight card page scroll up over that card[/+]melvin-bot commentedon Oct 27, 2026
@daledah
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.23-3 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2026-11-03. 🎊
The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]