Skip to content

v0.11.0

Latest

Choose a tag to compare

@noahkurz noahkurz released this 23 Sep 01:52
· 3 commits to main since this release

Three fixes from driving a real Expo app with v0.10.0.

#id targets work as printed

tree prints ids as #11, and both the README and the target description invite you to paste one back — but the comparison was against the bare number, so press "#11" failed with No visible element matches "#11". Only "11" worked.

Now either form matches, across every element tool. Text that merely begins with # ("#1 priority") is still matched as text. Not breaking — bare "11" still works.

A taken port says so

The bind error only reached stderr, so status looked normal and every call blamed useAgentJet() for a server that had never started listening. With two RN apps, or two editors on one app, this is where you land — and the app may well have connected to someone else's server.

status now carries the reason when there is one:

"serverError": "Port 8765 is already in use, so this server is not listening and no app can reach it. Another agent-jet server has it — a second editor, or another app's session. Give this one its own port with AGENT_JET_PORT, and start the app with EXPO_PUBLIC_AGENT_JET_PORT set to the same number."

The same message is the error for any tool call, returned immediately — including calls already waiting when the bind fails. doctor no longer implies all is well when the port is taken, and names the port when nothing connects.

The app can change ports without a source edit

The server read AGENT_JET_PORT; the bridge hardcoded 8765, so resolving a collision meant editing a root layout and remembering to revert it. The bridge now reads EXPO_PUBLIC_AGENT_JET_PORT, which Expo inlines:

AGENT_JET_PORT=8766 …                          # the server
EXPO_PUBLIC_AGENT_JET_PORT=8766 npx expo start # the app

useAgentJet({ url }) still overrides both. Non-Expo apps are unaffected.

If you develop against a linked checkout

Reading that variable makes Expo's Babel preset inject import "expo/virtual/env" into the package's own module. That resolves from node_modules, but not from a bun link checkout outside the app. If you use the setup in docs/local-development.md, update your app's metro.config.js to let the app own every expo subpath, as it already did for react and react-native — the guide has the new version. Normal installs need no change.

Also

207 tests (was 197), each new one confirmed to fail without its fix. Verified on the iOS Simulator and an Android emulator through the packed tarball.

Full changelog: v0.10.0...v0.11.0