See the gestures behind app behavior
Review taps, Apple Pencil strokes and hover, and cancellations with screenshots and telemetry.
Touch capture adds the user’s actions to the evidence you review in a session. It records app-window touch locations while the runtime is active, letting you line up gestures with the visible result.
The aggregate iOS developer defaults enable touch capture. Core-only apps can enable or disable it explicitly.
Enable Touch Capture
let options = try AnsightOptions.createBuilder()
.withTouchCapture()
.build()
Disable it:
let options = try AnsightOptions.createBuilder()
.withoutTouchCapture()
.build()
What Gets Captured
Each touch record includes:
- action: down, move, up, or cancel
- pointer id and index
- app-window coordinates
- surface width, height, and scale when available
- normalized coordinates when surface dimensions are known
- capture timestamp
Apple Pencil samples also carry available force and maximum possible force, altitude, azimuth, roll, and estimated-property update metadata. Move events include coalesced Pencil samples, preserving finer stroke motion. Supported iPads can report Pencil hover enter, move, and exit with position, angles, and hover distance. Values that the device does not report are omitted. Estimated updates correct earlier samples and do not start another gesture; predicted points are not recorded.
Touch records are streamed as input-capture records over an open host connection and are stored separately from metric samples and app events.
Pair With Screenshots
Touch input is most useful when the session has visual context. The aggregate setup already enables JPEG capture every 2000ms at quality 60 and max width 480.
Important: Pairing touch input with screen capture will result in an FPS drop while frames are rendered, encoded, and transported. Disable session JPEG capture for trend-focused runs unless visual evidence is required.
For core-only setup:
let options = try AnsightOptions.createBuilder()
.withTouchCapture()
.withSessionJpegCapture(
intervalMilliseconds: 2000,
quality: 60,
maxWidth: 480,
captureGpuBackedSurfaces: true
)
.build()
Privacy
Touch records can reveal user behavior and sensitive screen locations. Keep touch capture out of distributable builds unless explicitly approved.