iOS Simulator
DemoTake Agent records an iOS Simulator device straight from its screen, so the Simulator window can be covered, minimized or on another desktop. Your tools drive the device, and each logged tap becomes a touch indicator in the video.
Two ways to record an iOS app
| DemoTake Agent | DemoTake Studio | |
|---|---|---|
| What is recorded | The simulator device's own screen | The Simulator app's window |
| Simulator window | Can be covered, minimized or on another desktop | Must stay visible |
| Screen Recording permission | Not needed for the device | Needed, as for any window |
The Simulator app draws with the GPU and stops drawing while its window is covered. That is why DemoTake Studio needs it visible, and why DemoTake Agent records the device itself instead. In DemoTake Studio, any blank stretches are cut from the edit automatically; see Choosing a window.
The rest of this page is about DemoTake Agent.
Record a simulator device
Open a device in Simulator, or boot one from the terminal with xcrun simctl boot <UDID>. Install and launch your app.
In Choose Window…, booted devices appear under iOS Simulators with their runtime and screen size. Agents find them with targets_list as kind simulator and target id sim:<UDID>.
Start recording as usual. The first frame can take a few seconds to arrive. Put the Simulator window wherever you like; DemoTake keeps recording the device.
If a device isn't booted, DemoTake says so and asks you to boot it, then list targets again.
Drive the device with your own tools
DemoTake records and edits; it doesn't tap on devices for you. Drive the app with whatever you already use: xcrun simctl openurl or launch, XCUITest, idb, or a computer-use agent. You can also click through it in Simulator yourself.
So DemoTake knows where each tap happened, log it with take_log_event right after the action. Taps render as a touch indicator: a soft circle with a ripple, instead of a Mac arrow gliding between clicks.
- targets_listsim:<UDID>
- take_create
- capture_start
- your tool tapsXCUITest, idb, simctl
- take_log_eventevery tap
- take_checkpoint
- capture_stop
Give the tap point in one of two ways:
point: normalized to the device screen, from 0 to 1 with the origin at the top left.device_point: in device points, as XCUITest or idb report them. DemoTake converts them using the device's screen size.
{
"take_id": "take_…",
"kind": "tap",
"label": "Tap Get started",
"device_point": { "x": 201, "y": 780 }
}kind can be "tap" or "click"; both mean a touch on the device. Set "redact": true for anything secret, and never put passwords in text.
Plan launches with your team.
Get startedChecks on a device
observe_state and assert_text work on simulator devices too. They read the device screen with text recognition, so an agent can confirm "Project created" is visible before it checkpoints the scene.
A phone frame for vertical exports
A simulator take can be drawn inside a plain phone frame. In the editor, the inspector's Background section has Device frame for simulator takes:
| Setting | Result |
|---|---|
| Auto (default) | A frame on 9:16 exports, none on wide ones |
| On | A frame on every format |
| Off | Just the screen |
Agents set it with the device_frame operation of edit_apply (auto, on or off).
In DemoTake Studio
DemoTake Studio runs in the App Sandbox and can't record simulator devices directly. Record the Simulator window instead and keep it visible while you record. If it gets covered, the blank stretches are cut automatically, but the moments you missed are gone, so leave it in front.