Skip to content

Releases: igorzheludkov/react-native-ai-devtools

v1.10.11

18 Jun 20:53

Choose a tag to compare

Fixes

  • Network capture no longer double-counts on RN 0.85. That backend (new arch, Hermes, Bridgeless) enables the CDP Network domain but never acknowledges Network.enable, so CDP support went undetected and every request was captured twice (CDP + JS interceptor). Support is now detected from the first Network.requestWillBeSent, restoring correct dedup.

  • SDK network/console buffer stays live across reload_app. When the in-app react-native-ai-devtools-sdk was the source, get_network_requests / get_logs briefly fell back to the duplicate-prone CDP/interceptor buffer after a reload (the JS context is recreated before the SDK's init() re-runs). reload_app now waits for the SDK to re-initialize before returning, a fast re-probe re-detects the SDK within a few hundred ms (covering shake / Metro r reloads), and hysteresis prevents a single stray probe from flipping detection off.

  • send_feedback scope clarified to target the ExecBro tooling itself rather than the app under test.

v1.10.10

12 Jun 17:10

Choose a tag to compare

get_screen_state — one-call orientation for AI agents

New MCP tool get_screen_state: the currently focused screen (route name, navigation stack, params), overlay-grouped tappable elements, and inputs — in a single compact summary designed for agents to orient after every tap or navigation. get_pressable_elements is soft-deprecated in its favor.

Highlights

  • Route context: 📍 Currently focused screen: "Checkout" [navigation stack: Tabs > Cart > Checkout] + route params
  • Overlay-aware grouping by fiber ancestry: bottom-sheet content is listed under the sheet; root pressables covered by the overlay appear in a 🚫 Blocked section (visible for context, marked unreachable) — gorhom full-screen backdrops no longer swallow the underlying screen
  • Custom component names as JSX tags (<OrderStepRow />, <CheckBox />) — directly greppable in the app codebase
  • Icon semantics: icon-only buttons get hints like SvgChevronBackward — possibly back button, possibly checkbox (word-boundary matching, no substring false positives)
  • TextInput detection with placeholder-based labels (<BottomSheetTextInput /> "name@example.com" [input])
  • Nearby text for unlabeled checkboxes/radios (row-sibling matching): near "Skip shipping address verification."
  • onPress handler hints: named handlers (onPress=startProcessing()) and prop-route fallback via function identity (onPress→onBack); Hermes bytecode junk filtered out
  • Mixed-text collection: "Create 2 digital items" instead of just "Create" for nested Text elements
  • Screenshots enriched with the same screen state (ios_screenshot / android_screenshot): route + overlay-grouped pressables converted to image pixels, replacing the flat pressables list when an RN app is connected

Also

  • get_pressable_elements gains the icon hints, mixed-text, and improved nearby-text matching (shared walker logic)
  • Pressables sorted visually (top-to-bottom) instead of mount order
  • Frame bounds on every pressable line

v1.10.9

10 Jun 19:52

Choose a tag to compare

fix(pressables): fix pressable element detection walker

v1.10.8

05 Jun 19:14

Choose a tag to compare

What's Changed

  • perf(license): License validation is no longer pre-loaded on server boot. It now runs lazily on first real tool use, so a bare MCP server boot that never invokes a tool doesn't hit the backend — keeping backend reads/writes proportional to active sessions.
  • docs(feedback): Added an end-of-session experience-report prompt and wired it to the send_feedback tool, so agents submit reports as GitHub issues instead of leaving an unsent Markdown file. README and the feedback usage guide updated.

Full Changelog: v1.10.7...v1.10.8

v1.10.7

01 Jun 22:20

Choose a tag to compare

What's Changed

  • Free & uncapped local product: removed the usage-limit gate so the local product is free and unlimited (open-core).
  • Lower cost: removed the OCR pre-warm probe that triggered paid Vision over-spend on tap.
  • Cleanup: removed vestigial OCR timeout-recovery dead code; gitignored .claude/scheduled_tasks.lock.

Full Changelog: v1.10.6...v1.10.7

v1.10.6

30 May 21:30

Choose a tag to compare

Official build attestation

Official npm builds are now stamped with a secret build token at publish time, so our telemetry backend can reliably distinguish official releases from source forks.

  • Telemetry payload carries a build-token field (inert placeholder in source; real token injected into the published build via CI).
  • New `scripts/inject-build-token.mjs` stamps the compiled output between build and publish.
  • Release workflow runs the injection step before `npm publish`.

No user-facing API changes. Telemetry behavior and opt-out are unchanged — see PRIVACY.md.

v1.10.5

23 May 20:34

Choose a tag to compare

Scroll-bug diagnostics

Three targeted improvements that surface a common class of layout/scroll bugs in one tool call instead of requiring manual frame-diffing or repeated probing.

get_screen_layout — overflow flags

Each node whose frame extends past its parent is now flagged inline with ⚠ overflows parent by Npt (side), plus a top-level [overflows] summary block sorted largest-first. Surfaces clipped UI, hidden modals, and sheet-vs-content size mismatches immediately.

swipe burst verification — typed kind

Burst analysis now returns a kind discriminator: "settled_elsewhere" | "snap_back" | "missed". Snap-back (content moved during drag then reverted) correctly reads as meaningful: false with a diagnostic message pointing at contentSize vs layoutSize — no longer collapses three distinct failure modes into one boolean.

inspect_componentscroll block

For ScrollView/FlatList/SectionList (or anything with onScroll), the response now includes a scroll block with layoutWidth/Height, contentWidth/Height, contentOffset, isScrollable, isAtTop, isAtBottom, plus scrollEnabled/bounces/horizontal. Turns "why isn't this scrolling?" into a one-line lookup.

v1.10.4

21 May 21:48

Choose a tag to compare

fix(telemetry): suppress noisy auto-reconnect events and attribute originating tool

  • Skip 'not_needed' and pre-session_id auto_reconnect events that dominated telemetry with no signal
  • Thread originatingToolName through executeInApp call sites so reconnect events are attributable
  • Suppress reconnect attempts on first-ever 'no_apps' so users see actionable scan_metro hint

v1.10.3

21 May 20:12

Choose a tag to compare

Fixes

  • focused-input: extend the "no focused TextInput" reason with explicit "tap the field first" guidance so agents recover instead of looping on the error.
  • inspect_at_point: collapse the dispatch → wait → resolve flow into a single awaitPromise call. The two-call design lost its globals when Fast Refresh or CDP reconnects landed between calls (~13 events / 2 days observed).
  • device targeting: route deviceId / udid through resolveAndroidDeviceId / resolveIosUdid so screenshots, installs, launches, key/long-press, input, and bundle-error fallbacks accept adb serials, simulator/emulator names, or RN deviceName substrings — matching the resolver used by tap / swipe.

v1.10.2

21 May 19:12

Choose a tag to compare

Fixes

  • resolver: Match device names across punctuation drift — SM_A356N now resolves to SM-A356N - 15 - API 35, and getConnectedAppByDevice also matches by simulator UDID / adb serial (e.g. emulator-5554).
  • tap: Raise coordinate strategy timeout from 3s to 8s; on dense iOS screens the strategy was finishing just past the cap while 20+ seconds of the overall budget were still unused.

Features

  • config: Allow EXECBRO_API_URL env var to override the API base URL (precedes config.json).

Docs

  • Reframe the README intro around the runtime-bridge framing and the end-to-end build/debug/verify workflow; correct the SDK claim (optional, improves log/network capture).