Skip to content

v1.11.0

Choose a tag to compare

@igorzheludkov igorzheludkov released this 30 Jul 06:27
· 279 commits to main since this release

Native device logs in get_logs

When a React Native app dies below the JS layer — a missing .so, a JNI abort, a Java exception in MainApplication — the process dies before any JS runs. CDP never connects, Metro reports nothing, and get_logs returns an empty buffer while the answer sits in logcat/os_log the whole time.

get_logs now reads those logs, filtered to the app under test.

  • source — "js" (default), "native", or "all". The default never shells out, so the hot path is unchanged.
  • kind — crash | anr | exception | lifecycle | message
  • minLevel — relevance floor, default warn. Crashes and ANRs are returned regardless.
  • since — ISO timestamp or a relative form like 5m.

Native lines are correlated into events, so a 39-line crash backtrace costs one row. get_log_details(id) expands one on demand. JS console logs use the same event model, with stable [jN] ids.

When the JS buffer is empty and the app is disconnected — the signature of a native crash — native crash events are consulted automatically, turning the tool's most common dead end into an answer.

Scope: iOS Simulator and Android emulator/device. Physical iOS devices are not supported (simctl is simulator-only, and devicectl exposes no console subcommand).

Breaking

  • get_component_tree / find_components: format="tonl" is now format="compact". The old value is rejected by the enum.
  • get_logs, search_logs, get_network_requests, search_network: the format parameter is removed. TONL measured 10–18% larger than plain text on this output — an 83-char preamble per response plus quoting of every value containing a comma or quote — contradicting its own "30–50% smaller" claim. The componentTools formatters that shared the name are a different implementation that beats JSON 5–6×; those were kept and renamed.

Also

  • tools.json now records each tool's parameter names and ships in the package, so consumers can validate their docs against the real surface.