# 0.2.1

Released 16 October 2026.

## Desktop app

- **New**: a tour of Studio, offered when you finish onboarding
- **New**: the Renders tab shows what re-renders, what caused it, and which providers trigger extra renders, and warns you about render loops. The Inspector's Perf tab is now Renders too, and the component tree highlights each re-render
- **New**: Studio checks performance while you use the app, and tells you about each new problem once
- **New**: Insights can group recent sessions, so a problem that keeps coming back is one card
- **New**: the Performance screen opens on a dashboard
- **New**: Compare puts several metrics on one chart, with presets. Hover a metric to see what it measures
- **New**: Replay charts show CPU per thread, dropped frames, garbage-collection pauses and network
- **New**: Replay draws a recording's touches over the device, and the heatmap follows the playhead
- **New**: capture a CPU profile from the Flamegraph panel with one button
- **New**: the device menu lists running Mac apps
- **New**: notifications survive a restart, and clicking one takes you to what it's about
- **New**: Hardware → Shake shakes the simulator
- **Fix**: Studio uses less CPU, and animations and tooltips run at the right speed
- **Fix**: the Inspector no longer shows "0 nodes" for a connected device after an agent session
- **Fix**: hovering a row in the component tree outlines that component on the device
- **Fix**: expanding a row in the Network panel no longer shows an error
- **Fix**: a restarted run's charts no longer start with a sample from the previous run
- **Fix**: taps made by a flow or an agent no longer count as rage taps or dead zones

## CLI

- **Breaking**: `install-macos-agent.sh` is gone. Squiggle adds the agent to your Mac app's Debug build for you, so remove any build step that runs the script
- **New**: `squiggle init` finishes setting up an Expo app, adding the Babel config and entry file if they're missing. Anything it can't change safely, it lists for you to do
- **New**: `squiggle init` no longer creates a `.env` file. Your iOS app finds Squiggle without one
- **New**: `squiggle init --agent claude` also installs the Squiggle agent kit into `.claude/`
- **New**: `squiggle doctor` also checks your licence and the Babel plugin, and says how to fix either
- **New**: when your trial or licence expires, Squiggle tells you where to buy a key
- **Fix**: `squiggle perf diff --assert` exits with code 1 when a threshold is breached
- **Fix**: `squiggle crawl` exits with code 1, not 2, when it finds a crash
- **Fix**: two runs started at the same moment no longer merge into one history entry

## Agents & MCP

- **New**: `renders` gives your agent what Studio's Renders tab shows
- **New**: `propose_fix` turns a performance finding into a plan of code changes
- **Fix**: `batch` checks every step before it runs any, so a malformed step no longer runs the steps before it
- **Fix**: after a filtered `describe`, the next action no longer reports elements that were already on screen as new
- **Fix**: a tap by `ref` hits that element, even when another one has the same label
- **Fix**: the agent kit's Claude Code hooks run

## Flows & device

- **Breaking**: a misspelt key at the top of a flow file, such as `healng:`, is an error that lists the valid keys. It used to be ignored
- **New**: test an iOS app and a Mac app from one project: list both under `apps` in the config, and pick one with `--platform`. `squiggle init` fills them in
- **New**: results are kept per platform, so a flow that passes on iOS isn't counted as passing on macOS
- **New**: `squiggle flow --record` works for Mac apps
- **New**: Mac apps with App Sandbox turned on work too
- **Fix**: a run for your iOS app no longer connects to your Mac app, or the other way round
- **Fix**: scrolling works in Mac apps, sideways too
- **Fix**: a Mac app left open no longer slows down the start of a run
- **Fix**: `expectRoute` on a tap no longer shows an error in your editor

## Performance

- **New**: findings link to the line that declares the component
- **New**: when a context value is recreated on every render, the finding names the context and the component that provides it
- **New**: memo-miss also catches props that are new objects or arrays with the same contents
- **New**: `nav-loop` flags navigation loops your users don't usually take
- **New**: `squiggle perf insights` lists a session's findings, and `squiggle perf watch` shows them as they happen
- **New**: `perf diff --assert` can fail when a finding you name appears, with `failOnDetectors`
- **New**: `perf diff` and product analytics compare sessions from one platform at a time. Choose which with `--platform`

## SDK

- **New**: rage taps and dead zones are detected on every control, not only gesture-handler ones
- **New**: components wrapped in `memo()` or `forwardRef()` show up under their own names
- **Fix**: a button with no label or testID appears once in `describe`, not once for each component wrapping it
- **Fix**: Mac apps no longer report an impossible JS FPS

## Website

- **New**: the docs are rewritten, and cover every MCP tool, agent command and Performance panel
- **New**: more docs pages have live demos you can try
- **New**: search (⌘K) finds entries in reference tables
- **New**: Get Squiggle walks you from install to your first flow
- **Fix**: tooltips no longer stay open after you tap on a phone
- **Fix**: the phone menu lists every section of Why, Pricing and Download
- **Perf**: squiggle.sh pages load faster and jump around less while they load
