left_click_drag fails to trigger pull-to-refresh in iOS Simulator
Summary
left_click_drag does not reliably trigger pull-to-refresh in the iOS Simulator on macOS. The list visually moves during the drag, but the refresh spinner never appears or begins to fill — the gesture is not recognized as a pull-to-refresh.
Environment
- macOS 26.4 / iOS Simulator 26.4 (iPhone 17 Pro)
- Claude Code with built-in computer-use MCP
What wasn't working
Using left_click_drag to perform a downward drag on a SwiftUI List with pull-to-refresh — regardless of distance (tested 300px through 500px within the device screen bounds) — caused the list to move but did not trigger the refresh spinner. The spinner never appeared or began to fill, indicating the gesture was not recognized as a pull-to-refresh.
The same was true for left_mouse_down + mouse_move + left_mouse_up when using large step sizes between mouse_move calls.
Notably, left_click (tap) works correctly — the Simulator receives and responds to click events without issue.
What we had to do to get it to work
The gesture worked reliably when broken into many small mouse_move increments (~40px per step) within a computer_batch:
mouse_move to start
left_mouse_down
wait 0.1s
mouse_move +40px → wait 0.03s (repeat ~10x)
wait 0.3s
left_mouse_up
Additional observations
Through binary search testing, we found that step sizes of ~58px or less consistently worked, while ~67px or more consistently failed. Whether this threshold reflects a spacing requirement, a timing constraint, or something else in how the Simulator processes the event stream is unclear — but the step granularity appears to be a significant factor.
left_click_drag likely generates too few intermediate events to satisfy whatever the Simulator needs, but the exact root cause (event spacing, timing, event count, or something else) was not fully isolated.
Workaround
Use computer_batch with left_mouse_down → multiple mouse_move calls in ~40px increments → left_mouse_up instead of left_click_drag.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗