Skip to content

Flinging up a long thread waits at "Loading older messages…" because older history starts loading only 600 px ahead #7223

Description

@salemsayed

Summary

Flinging up through a long thread on a phone or with a trackpad reaches the top of the loaded history before the next page arrives. You wait at a blank "Loading older messages…" edge, about 1 s per page at 300 ms network latency and 2.6 s at 900 ms. Expected: the next page is usually in place by the time a steady fling gets there.

Versions and environment

main at e61446e15, built from source, headless Chromium 143 (Android UA with touch, and desktop with a wheel), older-page requests delayed 300 or 900 ms. Thread seeded with pnpm seed:perf -- --projects 1 --threads 4 --events 16000 --seed 7 (the 180-turn thread).

Steps to reproduce

  1. Open the longest seeded thread at the bottom.
  2. Fling up repeatedly (touch, or wheel bursts), about two per second.
  3. Watch the top of the timeline when the loaded history runs out.

Expected vs actual

Actual: "Loading older messages…" sits on screen for 1,022 ms (300 ms latency) or 2,572 ms (900 ms latency) per 16-fling climb on Android, and 817 / 2,616 ms on desktop (3 runs each). Expected: little or no time at the loading edge during a steady climb.

Evidence

AUTO_LOAD_OLDER_ROWS_PREFETCH_MARGIN_PX = 600. Measured as described in the PR.

What you ruled out

Server time is not the cause: locally the server answers a 162 KB timeline page in 4–9 ms (5 curl requests), and the delay added here stands in for the network. The wait comes from when the request starts.

AGENT GENERATED

Activity

  1. added theissue type on Nov 7, 2026
  2. added
    threadsTurns, timeline, messaging, forks
    partial-reproBug partially reproduced; some claims unverified; see linked report
    on Nov 7, 2026
  3. bb-slop-cop commented on Nov 7, 2026

    @bb-slop-cop
    Contributor

    🚨 SLOP COP 🚨 · new-issue-autopilot

    • Classification: Bug · Priority: Medium · Effort: Medium. Applied labels: threads, perf, partial-repro; no existing classifications were replaced.
    • Reproduction report: PARTIALLY REPRODUCED · High confidence in the root-cause mechanism. Native touch/wheel behavior and aggregate timings remain unverified because Chrome/Chromium is unavailable.
    • Root cause: The fixed 600 px threshold provides only about 150 ms of lead at 4,000 px/s, so delayed older-page loads remain pending at the loaded edge.
    • Evidence: The same diagnostic readiness assertion fails at 300/900 ms page latency in two clean trusted-main checkouts; all 36 related existing tests pass. The report includes the test and both run logs.
    • No new PR: Open PR Load older timeline rows three viewport heights ahead of the top #7224 already closes this issue; creating another would duplicate it. Its diff was inspected but never executed.

    AGENT GENERATED

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    partial-reproBug partially reproduced; some claims unverified; see linked reportperfthreadsTurns, timeline, messaging, forks

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions