Skip to content

v2.3.0

Choose a tag to compare

@igorzheludkov igorzheludkov released this 02 Aug 14:01
· 192 commits to main since this release

Audit of the layout and inspection tools against three real apps (RN 0.81 / 0.83 / 0.85, static-config and dynamic React Navigation and Expo Router, iOS and Android each). Twelve defects found; all fixed and verified on device.

Two silent failures

inspect_at_point was answering from partial data. A 500-node cap and a depth-250 cap discarded 45% of measurable host fibers on a mid-size screen, and the hit-test then ran against whatever survived — returning a confident wrong element rather than an error. Limits are now high enough not to bite, and anything that trips them is reported via incomplete.

The layout tools disagreed on what a coordinate meant. The screenshot formatters compensated for Android's status bar and for react-native-screens modals measuring from their own container; the point-space tools did not. So the documented "divide screenshot pixels by the device pixel ratio" landed an inset off whenever a modal was open. get_screen_state, get_screen_layout, measure, inspect_at_point, the screenshot summaries and tap now share one screen space — take a coordinate from any of them and pass it to any other unchanged.

Also fixed

  • Route detection failed under createStaticNavigation — every existing strategy missed it
  • Buttons inside a ScrollView were reported as <ScrollView />
  • A closed drawer's opacity: 0 scrim was listed as a full-screen tap target
  • Text frames reported the enclosing scroll container instead of the glyphs
  • Local-asset images were listed twice, once per source form
  • inspect_at_point reported an icon's box as its button's frame (fiber-alternate lookup)
  • inspect_at_point's hierarchy interleaved ancestors from two different screens
  • measure silently skipped screen-space normalisation, off by the status bar on Android

Removed

get_pressable_elements is gone. It was a weaker second implementation of get_screen_state, and its Android coordinates were wrong — five distinct list rows all reporting one 11x57 frame. Both screenshot fallbacks that called it are gone too; that fallback was what let the two renderings drift apart. Use get_screen_state, which additionally reports the active route, groups elements behind an open overlay or raised keyboard, and gives every element a tap-ready centre and frame.

58 tools (was 59). Net -652 lines.