Skip to content
DocsiOS Simulator
Docs / Recording / iOS Simulator

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.

DemoTake AgentXcode Simulator

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.

Shortcut: ⇧⌘R

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.

  1. targets_listsim:<UDID>
  2. take_create
  3. capture_start
  4. your tool tapsXCUITest, idb, simctl
  5. take_log_eventevery tap
  6. take_checkpoint
  7. capture_stop
The agent loop for an iOS take. Repeat the middle steps for every scene.

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_log_event
{
  "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.

Welcome to Aurora

Plan launches with your team.

Get started
iPhone 16 Pro · iOS 18
The logged tap at (201, 780) becomes a touch indicator on “Get started”.

Checks 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).

9:16
Vertical1080 × 1920
16:9
Landscape1920 × 1080
With Device frame on Auto, the 9:16 export gets the phone frame and the 16:9 export doesn't.

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.

Next

Was this page helpful?