Skip to content

[Due for payment 2026-11-03] Android-Home-Pick Top categories in Insight card page scroll up over that card #105108

Closed

Description

@applause-bot

If you haven’t already, check out our contributing guidelines for onboarding. To join our Slack channel, fill out this form.


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
  1. Open Hybrid app
  2. Navigate to Home
  3. Scroll down to Insight Card (showing Spending over time)
  4. Tap on dropdown and pick Top spenders
  5. Tap on dropdown and pick Top categories

Expected Result:

Page should stay on Insight card when pick Top categories title

Actual Result:

Page scrolls up over the Insight card

Workaround:

Unknown

Platforms:

  • Android: App
  • Android: mWeb Chrome
  • iOS: App
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome Safari

Screenshots/Videos

Bug7297590_1793068088266.Scroll_Up.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Julia Ponikarchuk
Bug ID: 7297590

Issue OwnerCurrent Issue Owner: @daledah

Activity

  1. added
    DeployBlockerCashThis issue or pull request should block deployment
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 27, 2026
  2. applause-bot commented on Oct 27, 2026

    @applause-bot
    Author

    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

  3. melvin-bot commented on Oct 27, 2026

    @melvin-bot

    You have been assigned to this deploy blocker because you recently merged this PR: #103210

  4. melvin-bot commented on Oct 27, 2026

    @melvin-bot

    @luacmartins @daledah you have been assigned to this deploy blocker because you reviewed the offending PR: #103210

  5. melvin-bot commented on Oct 27, 2026

    @melvin-bot

    @sharabai you have been assigned to this deploy blocker because you authored the offending PR: #103210

  6. melvin-bot commented on Oct 27, 2026

    @melvin-bot

    💬 A slack conversation has been started in #expensify-open-source

  7. github-actions commented on Oct 27, 2026

    @github-actions
    Contributor

    👋 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:

    1. Identify the pull request that introduced this issue and revert it.
    2. Find someone who can quickly fix the issue.
    3. Fix the issue yourself.
  8. MelvinBot commented on Oct 27, 2026

    @MelvinBot
    Contributor

    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 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

    1. InsightsSection is the last item in Home's scroll content (HomePage.tsx:102). Any change in its height changes the max scroll offset.
    2. 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.
    3. 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.
    4. 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

    1. In ChartReveal, keep the placeholder as an overlay at all times and give the wrapper minHeight: loadingHeight while not ready.
    2. In src/components/Search/SearchChartView.tsx, keep the width-measuring frame above the chart-type switch, so Bar → Pie does not restart measurement.
    3. 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.


    view run

  9. sharabai commented on Oct 27, 2026

    @sharabai
    Contributor

    Looking into this deploy blocker.

  10. sharabai commented on Oct 27, 2026

    @sharabai
    Contributor

    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.

  11. sharabai commented on Oct 27, 2026

    @sharabai
    Contributor

    Finally, I could repro the issue. Working on fixing it.

  12. sharabai commented on Oct 27, 2026

    @sharabai
    Contributor

    Opened PR #105163

  13. sharabai commented on Oct 27, 2026

    @sharabai
    Contributor

    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.

  14. m-natarajan commented on Oct 27, 2026

    @m-natarajan

    Xiaomi Redmi Note 10 / Android 12 , app 9.5.23-3, Passed

    Screenrecorder-2026-10-27-22-46-59-983.mp4
  15. 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
  16. melvin-bot commented on Oct 27, 2026

    @melvin-bot

    @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]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

BugSomething is broken. Auto assigns a BugZero manager.DailyKSv2Engineering

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions