ios_safari_trace
Record a Performance trace of a Safari page on an iOS device over a time window and write it to a file on the RDS host, returning { eventCount, durationMs, bytes, path }. The file loads directly in Chrome DevTools → Performance → "Load profile", so it can be handed to a human to read the flame chart. Traces are multi-MB, so the content is never returned inline. Captures main-thread work (tasks, script execution, style, layout, paint) together with a JavaScript CPU sample run, so the flame chart shows which functions the time went to. Use it for "why is this page slow/janky" — long tasks and repeated layout show up as wide bars. Pass url to navigate INSIDE the recording and capture the full page load, or triggerJs to fire an interaction inside the window (both are the usual way to trace something specific rather than idle time). Set screenshots=true to include a filmstrip (roughly doubles the file size). Default window: 5 000 ms. Maximum: 30 000 ms. Omit pageId to use the active tab. NOTE: on some iOS versions WebKit reports no elapsed time to a remote inspector, and every event is then stamped 0. The recorded work and its nesting are still real, but durations and the flame chart timeline are not; the result says timestamped=false when this happens, so do not read timings from a trace that reports it. Requires Web Inspector enabled: Settings → Safari → Advanced → Web Inspector.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Navigate the page to this URL inside the recording to capture the full page load | |
| udid | Yes | iOS device UDID | |
| pageId | No | Target page id from ios_safari_list_pages (default: active tab) | |
| triggerJs | No | JavaScript to evaluate inside the recording window to trigger the work being traced | |
| durationMs | No | Recording window in milliseconds (default: 5000, max: 30000) | |
| screenshots | No | Include a filmstrip (default: false) |