Changelog

0.2.0

Released 11 October 2026.

Desktop app

  • Newagentic flows: a step can be a goal an agent drives. Flows has Scripted and Agentic tabs, shows how many agent steps each flow has recorded, and edits an agent step's prompt, verifier and recording. Intent runs moved here too, replacing the Agents screen
  • Newthe Runtime Inspector: a component tree beside four views of the selection — Details, Graph, Perf and Screen map
  • NewInspector Details: a component's props, hooks and state, its context and stores, renders, accessibility, style and structure, read live from the app
  • Newedit a prop or a hook's state from the Inspector and the app on the simulator changes with it, until it reloads
  • Newpick a component by pointing at it on the device mirror; where several are stacked under the pointer, the scroll wheel walks through them and a click lists them all
  • NewFollow in app: selecting a component in the tree or the graph brings it on screen, navigating to its screen and scrolling it into view
  • Newopen the line that writes an element, or where its component is defined, in your editor
  • Newthe Inspector's Graph draws the live component graph as a tree or a force layout, with pan, zoom and the lineage of whatever you hover
  • Newthe Screen map: your app's screens and the taps between them, drawn as a roadmap with each navigator's screens grouped under its name, the screen the app is on ringed, and every screen's picture
  • NewCrawl the app from the Screen map: it presses each control in turn, maps every screen a press opens and photographs it, signing in with the values your flows type. Crawl from here starts on one screen, and the map fills in as it goes
  • NewGo to screen: pick a screen from the map or the menu, and Go there drives the app along the known path to it
  • Newfrom any screen on the map, start a scripted flow that taps its way there, or an agentic flow that starts there
  • Newthe Screen map shows which screens no flow reaches, filters to the screens reachable from where the app is, and adds the screens you open yourself
  • NewReplay, redesigned around what went wrong: Studio keeps the five seconds before a crash, error, stall or spike as an incident, and the player opens on it with a screenshot and a report you can copy
  • Newfrom an incident, explain the component it blames, open the run in Performance or Analytics, or make a regression flow from it
  • NewReplay's event list says what was tapped, swiped or scrolled, where, and what it led to, and its timeline has metric lanes for frames, activity, memory and latency, each with a legend
  • NewDrive device: scrubbing a recording, pressing an event or playing it drives the app on the simulator to the same moment
  • Newrecordings are named the way you would describe them, and you switch between them without leaving the player
  • Newa gallery for screenshots and screen recordings, with a swipeable, zoomable viewer. Screen recordings are H.264 or HEVC video
  • Newsimulator tools and real device skins
  • Newcompact mode: a small simulator-only window with its own toolbar, which you customise and reorder, and a row of live graphs
  • Newinstalling the app installs the squiggle command too: it links itself into your terminal, and offers to add it to your PATH when your shell cannot find it. Settings → Command line removes it
  • FixStudio no longer runs out of memory while the device mirror streams
  • Fixclicks on a menu or tooltip land on it rather than the control underneath, overlays open beside their control, and buttons keep working after compact mode
  • Fixthe simulator mirror takes input with no app connected, and an overlay over it no longer passes clicks through to the simulator
  • Fixre-running a flow from History uses the settings the run was recorded with
  • Fixthe notification bell reports failed runs (flows, benches, crawls, recordings, agent runs) and stays quiet about a command you typed in a terminal, which already showed its error
  • PerfStudio's idle CPU dropped from 22% to 6% of a core, and the device mirror costs about 20 points of a core less
  • Perfflows run from Studio at the same speed as from the terminal
  • Perfa 2,000-node graph pans and zooms at 60 fps, and switching tree and force layouts takes a tenth of the time
  • Perfmemory stays flat in a long session: an hour at 60 renders a second holds 11.6 MB instead of 90.7 MB, and a two-hour recording writes 130 MB instead of 968 MB
  • PerfStudio uses 43% less CPU while other tools read the app through it

CLI

  • Newdrive react-native-macos apps as well as iOS: --platform macos on every device command, and install-macos-agent.sh, shipped beside the binary, puts the agent in your app
  • Newsquiggle flow --record saves the run as a video, and an agent can attach it to a pull request
  • Newsquiggle probe reads live values from the running app's JavaScript over Metro
  • Newsquiggle crawl writes screen memory as it goes, and crawl --changed revisits only the screens a change touches
  • Newa failed step says why and what to do next, and --log <level> streams the run's events as it goes
  • Newsquiggle init --agent claude|copilot|codex registers the MCP server with the agent you use, for Claude Code, Copilot or Codex
  • Newsquiggle bench --pr <N> posts the result as a sticky comment on the pull request
  • Fixscroll no longer crashes the simulator, and it actually scrolls
  • Fixa tap on an element off screen is refused instead of landing on whatever is there
  • Fixback-to-back flow runs pass: no screens left open by the previous run, and each run starts from where its flow expects to
  • Fixa run that launched your app gives up on one that never connects, and says why
  • Fixsquiggle flows takes flow files as well as directories, and squiggle agent run <name> finds a program by name
  • Fixa react-native-macos app is driven in the background, and an action that did nothing is reported as a failure rather than a success
  • Perfsquiggle --version answers in about 20 ms

Agents & MCP

  • Breakingtool names drop the squiggle_ prefix your client already adds, so mcp__squiggle__squiggle_tap is now mcp__squiggle__tap. Update any permission grant that names a tool. squiggle_exec is now probe_read
  • Newrun_flow runs agentic flows: your agent drives each agent step once, and every run after that replays it without a model
  • Newfilmstrip reads a recording's frames, for defects the graph cannot see
  • Newdescribe and find see native views, such as an Expo Router native tab bar, that tap could already reach
  • Newan action returns the screen it just changed, so the next step needs no second look
  • Newevery tool has a display title in your client
  • Newevery element knows the line that writes it: describe {fields: 'source'} shows it, and find {callSite} shows what a line renders
  • Newinspect reads a component's live props, hooks and state
  • Fixno tool call waits forever, and one that hangs no longer blocks the rest
  • Fixinput_text waits for the field to take focus, so the tap after it lands
  • FixStudio and the CLI take port 7777 back from an idle MCP server
  • Fixa flow's secrets never reach the model, the run report or the recording
  • Fixthe agent kit's hooks and slash commands run your installed squiggle, and its plugin.json starts the server with squiggle mcp. The kit no longer carries a Stop hook that only applied to Squiggle's own repository. Regenerate the kit after upgrading
  • Perfa tap with its observation returns in 110–185 ms, and choosing the target takes 7 ms instead of 300
  • Perfperf_sql and saved queries answer within a 24 KB budget with a truncation note, instead of reading the whole table first

Flows & device

  • Breakinga step key that nothing reads is a parse error with its line number. It used to be ignored, and surfaced later as a selector that would not match
  • Newagent: steps: a goal an agent drives, checked by a verifier you write, recorded beside the flow as .agent.json and replayed from then on
  • Newdeclared routes, with route hints for agent steps
  • Newa flow can declare that it fails by design, or that it runs some other way
  • Newa flow's config: block carries the run settings it needs (scroll mode, settle and step timing, autoScroll, strictAssert), so a suite runs every flow the way it was written to run
  • Newa recorded tap names the control it pressed
  • Fixan app launched without the agent is relaunched with it before a run, instead of running slower without it
  • Fix"keep software keyboard: off" keeps it off, and a run never takes over another app on its device
  • Perfa login flow runs in about a quarter of the time: the median went from 10.9 s at 0.1.0 to 2.7 s, and 2.3 s with --direct-scroll
  • Perfsquiggle flow starts about 1.4 s sooner, and reconnects after a relaunch in 1.0 s instead of 6.2 s
  • Perfa suite spends less time resetting between flows, and its shards pull from one queue ordered by each flow's last duration

Performance

  • Newwhat Studio derives live (dead zones, scrolls, gesture tracks, the touch heatmap) is stored in perf.db, so your agent can query it
  • Perfthe metric store keeps older samples at coarser resolution, so a store that had grown to 1.5 GB now takes about 30 MB. Product reads take under 2 ms, and writes are 4× cheaper

SDK

  • NewLegend State stores are instrumented by the Babel plugin, alongside Zustand, MMKV, AsyncStorage and SQLite
  • Perfthe SDK does less work on your app's JavaScript thread, and sends about 31% fewer bytes per frame. Encoding a frame takes 122 ns instead of 360, and an app nobody connects to no longer holds 2.3 MB of memory for it

Website

  • Newtry Studio in your browser at squiggle.sh/studio, against a live demo app, with a guided tour of 21 chapters across every screen
  • Newdocs pages open on live slices of it, and every page's header opens Studio over the page you are on
  • Newon a phone, Studio plays its own tour, sized to read, with a chapter menu

Everything else

  • Perfa crawl of the example app's 18 screens takes 46 s instead of 94 s, and never leaves the app
  • Perfchecking the assertions of 421 recordings takes 3.9 s instead of 209 s, and seeking a recording is about 3.4× faster