From d1ab805a14c51a97f5f3a560da8cff160aac58cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Wed, 9 Sep 2026 18:30:30 +0200 Subject: [PATCH 1/5] 0.21.1 --- package.json | 2 +- server.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 8f152d9904..9e6e1d52bd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "agent-device", - "version": "0.21.0", + "version": "0.21.1", "description": "Mobile app automation and verification for AI coding agents. CLI, MCP server, and typed Node.js API for iOS, Android, HarmonyOS, TV, web, macOS, and Linux.", "mcpName": "io.github.callstack/agent-device", "license": "MIT", diff --git a/server.json b/server.json index 48362f1728..a808e6bf81 100644 --- a/server.json +++ b/server.json @@ -7,12 +7,12 @@ "url": "https://github.com/callstack/agent-device", "source": "github" }, - "version": "0.21.0", + "version": "0.21.1", "packages": [ { "registryType": "npm", "identifier": "agent-device", - "version": "0.21.0", + "version": "0.21.1", "transport": { "type": "stdio" }, From d8b2aa9a35a7e069d5c2d8786f74a308421b1e9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Fri, 11 Sep 2026 13:12:50 +0200 Subject: [PATCH 2/5] chore(react-devtools): pin agent-react-devtools 0.5.0 and document the React Native 0.87 setup step agent-react-devtools 0.5.0 restores attachment on React Native 0.87+, where the built-in DevTools websocket was removed (facebook/react-native#56897). The app now needs a one-time `agent-react-devtools init` plus a rebundle; the help topic says so, and warns that an empty observation is not a pass. Verified live: a bare react-native@0.87.1 app attaches through `agent-device react-devtools` with 149 components. Refs #2430 --- src/__tests__/cli-react-devtools.test.ts | 6 +++--- src/cli-schema/cli-help.ts | 2 ++ src/cli/commands/react-devtools.ts | 2 +- website/docs/docs/commands.md | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/__tests__/cli-react-devtools.test.ts b/src/__tests__/cli-react-devtools.test.ts index 76b21cd51c..34f0b38caa 100644 --- a/src/__tests__/cli-react-devtools.test.ts +++ b/src/__tests__/cli-react-devtools.test.ts @@ -43,12 +43,12 @@ afterEach(() => { }); test('react-devtools passthrough pins agent-react-devtools package version', () => { - assert.equal(AGENT_REACT_DEVTOOLS_PACKAGE, 'agent-react-devtools@0.4.0'); + assert.equal(AGENT_REACT_DEVTOOLS_PACKAGE, 'agent-react-devtools@0.5.0'); assert.deepEqual(buildReactDevtoolsNpmExecArgs(['get', 'tree', '--depth', '3']), [ 'exec', '--yes', '--package', - 'agent-react-devtools@0.4.0', + 'agent-react-devtools@0.5.0', '--', 'agent-react-devtools', 'get', @@ -221,7 +221,7 @@ test('react-devtools stop cleans up remote companion', async () => { 'exec', '--yes', '--package', - 'agent-react-devtools@0.4.0', + 'agent-react-devtools@0.5.0', '--', 'agent-react-devtools', 'stop', diff --git a/src/cli-schema/cli-help.ts b/src/cli-schema/cli-help.ts index c585131e01..0d2afece55 100644 --- a/src/cli-schema/cli-help.ts +++ b/src/cli-schema/cli-help.ts @@ -502,6 +502,8 @@ Rules: For cross-platform validation with explicit device selectors, use separate sessions/devices and restart react-devtools between platforms. Remote Android and iOS bridge runs normally through agent-device react-devtools; the CLI keeps the needed local service tunnel alive until agent-device react-devtools stop or disconnect. Expo support depends on the SDK's bundled React Native runtime. Remote iOS apps attempt the legacy React DevTools websocket during JavaScript startup. If the app was already open before react-devtools start, run open --platform ios --relaunch, then wait --connected. + React Native 0.87+ removed the built-in DevTools websocket. The app must run agent-react-devtools init once (Metro wrapper plus an entry import) and be rebundled, or wait --connected never succeeds. On older React Native no app change is needed. + With no app attached, status reports 0 connected and the observation commands fail; never read an empty result as a clean pass. Example: agent-device react-devtools status diff --git a/src/cli/commands/react-devtools.ts b/src/cli/commands/react-devtools.ts index 149ebd1be3..4a69f206f3 100644 --- a/src/cli/commands/react-devtools.ts +++ b/src/cli/commands/react-devtools.ts @@ -8,7 +8,7 @@ import { isRemoteBridgeBackend } from './remote-bridge.ts'; import type { CliFlags } from '@agent-device/contracts/command'; import { connectionProviderCapabilities } from '../connection/provider-policy.ts'; -const AGENT_REACT_DEVTOOLS_VERSION = '0.4.0'; +const AGENT_REACT_DEVTOOLS_VERSION = '0.5.0'; export const AGENT_REACT_DEVTOOLS_PACKAGE = `agent-react-devtools@${AGENT_REACT_DEVTOOLS_VERSION}`; const AGENT_REACT_DEVTOOLS_BIN = 'agent-react-devtools'; diff --git a/website/docs/docs/commands.md b/website/docs/docs/commands.md index 560f244557..c4d3d9434a 100644 --- a/website/docs/docs/commands.md +++ b/website/docs/docs/commands.md @@ -851,7 +851,7 @@ agent-device react-devtools profile timeline --limit 20 agent-device react-devtools profile report @c5 ``` -- `react-devtools` dynamically runs pinned `agent-react-devtools@0.4.0` through npm and passes arguments through 1:1. +- `react-devtools` dynamically runs pinned `agent-react-devtools@0.5.0` through npm and passes arguments through 1:1. - The first run may download the pinned package from npm; later runs can reuse the npm cache. - `agent-device` global flags work before or after `react-devtools`. Use `--` before downstream flags only when they intentionally share an `agent-device` global flag name. - Use it when a React Native workflow needs component hierarchy, props, state, hooks, render causes, slow components, or re-render counts. From 8f8f8140269594811809941dd5c0fd17d60bad27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Fri, 11 Sep 2026 13:17:42 +0200 Subject: [PATCH 3/5] docs(react-devtools): tell agents to run uninit when the task is done --- src/cli-schema/cli-help.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cli-schema/cli-help.ts b/src/cli-schema/cli-help.ts index 0d2afece55..d4a2097025 100644 --- a/src/cli-schema/cli-help.ts +++ b/src/cli-schema/cli-help.ts @@ -503,6 +503,7 @@ Rules: Remote Android and iOS bridge runs normally through agent-device react-devtools; the CLI keeps the needed local service tunnel alive until agent-device react-devtools stop or disconnect. Expo support depends on the SDK's bundled React Native runtime. Remote iOS apps attempt the legacy React DevTools websocket during JavaScript startup. If the app was already open before react-devtools start, run open --platform ios --relaunch, then wait --connected. React Native 0.87+ removed the built-in DevTools websocket. The app must run agent-react-devtools init once (Metro wrapper plus an entry import) and be rebundled, or wait --connected never succeeds. On older React Native no app change is needed. + init edits the project's metro.config.js and entry file. When the profiling or debugging task is done, run agent-react-devtools uninit in the project and rebundle, so those edits are not left in the user's diff. Skip uninit only if the user asked to keep the setup. With no app attached, status reports 0 connected and the observation commands fail; never read an empty result as a clean pass. Example: From 139b81febe5b875f94f7a502ad0f995380f774fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Fri, 11 Sep 2026 15:06:35 +0200 Subject: [PATCH 4/5] docs(react-devtools): trim the help topic to the current setup facts --- src/cli-schema/cli-help.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/cli-schema/cli-help.ts b/src/cli-schema/cli-help.ts index d4a2097025..2e8511fb7e 100644 --- a/src/cli-schema/cli-help.ts +++ b/src/cli-schema/cli-help.ts @@ -502,9 +502,8 @@ Rules: For cross-platform validation with explicit device selectors, use separate sessions/devices and restart react-devtools between platforms. Remote Android and iOS bridge runs normally through agent-device react-devtools; the CLI keeps the needed local service tunnel alive until agent-device react-devtools stop or disconnect. Expo support depends on the SDK's bundled React Native runtime. Remote iOS apps attempt the legacy React DevTools websocket during JavaScript startup. If the app was already open before react-devtools start, run open --platform ios --relaunch, then wait --connected. - React Native 0.87+ removed the built-in DevTools websocket. The app must run agent-react-devtools init once (Metro wrapper plus an entry import) and be rebundled, or wait --connected never succeeds. On older React Native no app change is needed. - init edits the project's metro.config.js and entry file. When the profiling or debugging task is done, run agent-react-devtools uninit in the project and rebundle, so those edits are not left in the user's diff. Skip uninit only if the user asked to keep the setup. - With no app attached, status reports 0 connected and the observation commands fail; never read an empty result as a clean pass. + React Native 0.87+ needs a one-time npx agent-react-devtools init in the app project, then a rebundle, before wait --connected can succeed. Run npx agent-react-devtools uninit when the task is done unless the user wants to keep the setup. + If status shows 0 connected apps, nothing was observed; an empty result is not a clean pass. Example: agent-device react-devtools status From d14189a5297adce88dfcba1f0782ee009751cf8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Fri, 11 Sep 2026 15:15:56 +0200 Subject: [PATCH 5/5] docs(react-devtools): state the app dependency and the attachment check --- src/cli-schema/cli-help.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cli-schema/cli-help.ts b/src/cli-schema/cli-help.ts index 2e8511fb7e..95f25efab3 100644 --- a/src/cli-schema/cli-help.ts +++ b/src/cli-schema/cli-help.ts @@ -502,8 +502,8 @@ Rules: For cross-platform validation with explicit device selectors, use separate sessions/devices and restart react-devtools between platforms. Remote Android and iOS bridge runs normally through agent-device react-devtools; the CLI keeps the needed local service tunnel alive until agent-device react-devtools stop or disconnect. Expo support depends on the SDK's bundled React Native runtime. Remote iOS apps attempt the legacy React DevTools websocket during JavaScript startup. If the app was already open before react-devtools start, run open --platform ios --relaunch, then wait --connected. - React Native 0.87+ needs a one-time npx agent-react-devtools init in the app project, then a rebundle, before wait --connected can succeed. Run npx agent-react-devtools uninit when the task is done unless the user wants to keep the setup. - If status shows 0 connected apps, nothing was observed; an empty result is not a clean pass. + React Native 0.87+ needs agent-react-devtools installed as a dev dependency of the app project, then a one-time npx agent-react-devtools init there and a rebundle, before wait --connected can succeed. The npm exec package this wrapper runs is temporary and does not install it into the app. Run npx agent-react-devtools uninit when the task is done unless the user wants to keep the setup. + Verify an attached app with status or wait --connected before trusting any result. With 0 connected apps, count, errors, and get tree return empty results that look like a clean pass. Example: agent-device react-devtools status