Skip to content

iOS: scroll down --until stops before the end on SwiftUI List (0 passes) and ScrollView #4216

Closed

Description

@antFrancon

On iOS, scroll down --until '<selector>' gives up on SwiftUI lists that plain scroll down scrolls through fine.

Repro: https://github.com/antFrancon/agent-device-scroll-until-repro (./repro.sh [version]). It's a one-file SwiftUI app showing the same 64 rows three ways, with one .ad per way, each running scroll down --until 'id="row-60"'.

Replay Rows in Result
list.ad a List, pushed fails after 0 passes: "scroll down reached the end of the scrollable content … without id="row-60" becoming visible"
sheet.ad the same List in a .sheet fails after 0 passes, same message
scrollview.ad a ScrollView + LazyVStack, pushed fails after 3 passes, same message, with rows 53–63 still below

Plain scroll down reaches row-60 in all three: 7 flings for the list, 8 for the sheet, 4 for the scroll view.

Likely cause for the List: it reaches the snapshot as [collection] with no [scrollable], so --until sees no scrollable content and never swipes (scroll_until_edge_reached, passes: 0, nothing dispatched). The ScrollView is [scroll-area] [scrollable], but end detection still trips one pass early.

Expected: --until keeps scrolling until the selector is visible or the content truly stops moving.

Seen on: agent-device 0.21.28, 0.21.36 and 0.21.37-nightly.20261103.128 (identical results) · iOS 26.5 simulator, iPhone 16 · Xcode 27.2 (27B52) · macOS 27.0 · Node 22.22.1

Activity

  1. thymikee commented on Nov 5, 2026

    @thymikee
    Member

    Triage: bug; actionable without more input from you. The --until path currently treats a missing scroll container or missing hidden-content evidence as end-of-content before dispatching a gesture. That matches the zero-pass failure you describe. The fix needs to cover the pushed List, sheet List, and LazyVStack cases, and distinguish an unproven edge from content that has actually stopped moving. Thanks for the version matrix and the three-case repro.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions