Skip to content

v2.8.4

Choose a tag to compare

@igorzheludkov igorzheludkov released this 13 Aug 20:30
· 114 commits to main since this release

Long press in tap

tap({ duration: 800 }) holds the touch instead of releasing it, so context menus, drag starts and multi-select can be reached by testID/text/component rather than only by raw coordinates. Works on both platforms and through every strategy.

The fiber search previously could not see the elements long press exists for — a Pressable wired only for onLongPress was invisible to it. It can now, but only when a hold is requested, so an ordinary tap still refuses to resolve elements whose short press does nothing.

The response carries longPress.handlerFound: true/false when the fiber strategy inspected the element, null when the resolving strategy cannot see handlers. A hold on an element with no onLongPress warns and still reports success — the gesture was delivered, and React Native fires onPress on release.

android_long_press stays for coordinate holds without a React Native connection.

Android gestures reach the device you named

resolveDeviceTarget produced an adb serial that reached nothing: the UI dump, the OCR screenshot, the density read, the tap itself and the verification frames all fell through to adb's default device. On two emulators tap resolved coordinates against one device and delivered the touch to another, then judged the result against a third screen. swipe and pinch had the same gap in their verification frames. The Android tap branches also discarded adb's result, so a tap that never happened reported success.

Connections stop lying about themselves

get_screen_state, get_screen_layout and measure gave up the instant the registry was empty, which a reconnecting socket makes true for a second or two — they now wait out an in-flight reconnection, and only when one is actually pending. The "no Metro" message no longer names unrelated attached devices or tells you to run scan_metro when a reconnection is already under way.

Two ways a live CDP socket was being discarded are fixed: the keepalive terminated on a single missed pong at a 1s interval, killing sockets mid-setup while they carried traffic, and a stale socket's close event could evict the live connection that had replaced it.

swipe works without React Native

A no-op swipe on a non-RN screen returned an error instead of its result: the diagnosis that explains why nothing moved needs a JS connection, and threw when there wasn't one. It now degrades, and says it could not inspect the screen rather than claiming the gesture missed a scroll view.