ChangelogSetup is the SDK, and your agent watches the app
0.5.0
Released 29 October 2026.
Adding the SDK is the whole setup for an iOS app: a debug build on the simulator starts Squiggle by itself, so squiggle up is optional, the first performance baseline is taken on your first run, and updating Squiggle needs no rebuild. Your agent's MCP server now watches the app the whole time it runs and tells the agent what broke, with a recording of it. Squiggle also runs inside a Niteshift task.
A release build of your app carries no Squiggle unless you set "release": true in .squiggle/config.jsonc. In CI, the runner must be able to reach license.squiggle.sh over HTTPS on its first licensed command.
Desktop app
- Newcompact mode has an App menu with Reload JS, Open link from clipboard and your recent links
- Newthe device heatmap labels the drags Analytics reads as a gesture, such as "Swipe to dismiss"
- FixRelaunch app, Relaunch injected, the permission switches and the launch after a boot act on your app, not Squiggle's example app
- Fixreloading Studio no longer crashes it or leaves the loading banner stuck
CLI
- New
squiggle agent watch --incidentsprints one line per recorded incident, so an idle agent can wait for the next one - New
squiggle releasefrees the app from whatever holds it, including a run waiting for an agent's answer - Fix
squiggle flow --from-recording -o <file>creates the file's folder when it doesn't exist - Fix
squiggle crawlskips controls named "Log out" and "Check out", as it does "logout" and "checkout" - Fix
--freshcaptures the app's log output, so log asserts work after a relaunch - Fixevery error message names a fix you can run, and an agent port already in use is
E_AGENT_PORT_BUSY - Fixa device command on Linux with no device provider says how to reach a device, instead of asking you to build a macOS helper
Agents & MCP
- Newthe MCP server watches the app from the moment it starts, the way Studio does. When the app throws, crashes or stalls, it records the moment, and your agent's next tool result says what broke, at which line of your code, and which of its own actions it followed
- Newlive performance findings, such as a render storm or a long task, reach your agent the same way while the app runs
- Newthe
incidentstool lists what was recorded, each one replayable withreplay_recording, andsquiggle://incidentsserves the newest ones - New
watchin.squiggle/config.jsoncsets whether the server watches, how it tells your agent (push:notice,channelornone), whether it records, and how much it keeps.SQUIGGLE_WATCH=0turns it off for one run - New
publish_evidenceputs screenshots and recordings in the description of a pull request you opened, and needs no app running.squiggle init --pr-evidenceturns it on - Fixthe safety rail checks the control a tap actually lands on, not only the selector your agent sent
Flows & device
- New
setLocationandsetPermissionsrun on the iOS simulator - New
toggleAirplaneModeis in the published flow schema, so your editor stops flagging it
SDK
- Newa release build gets a stand-in for the SDK: the same exports with none of its code, and Squiggle's native library links into Debug builds only. Set
"release": truein.squiggle/config.jsoncto keep Squiggle in a release build - Newa production build of a web app gets a 10 KB stand-in for
@squiggle.sh/react, with no setup
Everything else
- Newa debug build of your app on the iOS simulator loads Squiggle's agent by itself, so you no longer run
squiggle upbefore driving it.squiggle initno longer adds it to youriosscript - Newyour first
squiggle flow,squiggle flowsorrun_flowrecords the first performance baseline when the project has none - Newafter you update Squiggle, the next
squiggle flowbrings your app's copy of the agent up to date and relaunches the app if it still runs the old one.squiggle doctor --fixdoes the same - New
squiggle flowslaunches your app itself, from theappIdin your flows orapps.iosin.squiggle/config.jsonc - Newrun Squiggle in a Niteshift task: set
"device": { "provider": "niteshift" }, and the CLI and MCP server on the task's Linux sandbox drive the app on its simulator. Steps outside the app, such as a launch or a system dialog, go to the task's agent - Newin a Niteshift task, nothing leaves the sandbox on Squiggle's initiative: no telemetry, crash reports or update checks, and
publish_evidencewrites its files for the task to attach - New
squiggle doctorsays when the app's agent comes from another release, andsquiggle benchnever compares a run on a Niteshift simulator with a local one - Fixa CI runner that can't reach
license.squiggle.shstops withE_LICENSE_UNREACHABLE(exit 3) and names the host to allow, unless it got a place with the same token in the last 24 hours. Before, it ran unlicensed - Fixa CI runner is counted by a random ID kept in
~/.squiggle, never by anything about the machine, and keeps its place for as long as a long run or an MCP session lasts - Fixa project's
.squiggle/config.jsonccan turn telemetry and crash reports off for everyone who clones it, never on. Studio asks again when you switch to such a project - Fixan incident recording stops 20 seconds or 8 MB after its trigger, the same problem again isn't recorded twice, and old data is cleaned up during a long session