Screen recording
v1.8.0Recording is off by default. With tester approval, attach up to 30 seconds of recent activity at balanced quality.
Recording permission
- Requires iOS 15 or later, ReplayKit and a hardware H.264 encoder. BugScreen leaves any recording already started by your app alone. If capture is unsupported or busy, recording is unavailable.
- ReplayKit asks for recording permission. iOS shows its recording indicator and Stop control. Photo-library permission does not cover recording; microphone permission is not requested.
- ReplayKit records your app. Protected content and some video, including AVPlayer content, may be missing.
BugScreenSDK.configure(
apiKey: "fb_your_api_key_here",
startScreenRecordingImmediately: true
)Check the recording
- Open the app and accept the system recording prompt.
- Use the app for a few seconds, then open a bug report.
- Play the attached clip to check it shows what happened before the report.
If no clip appears, check the recording state and try again after collecting more footage.
| Option | Default | Description |
|---|---|---|
| startScreenRecordingImmediately: Bool | false | Start recording after system permission. |
| screenRecordingOptions: ScreenRecordingOptions | 30 seconds, .balanced | Set duration and .low, .balanced or .high quality. |
Duration and quality
Duration is clamped to 5–60 seconds. Clips may be shorter; video upload limits still apply.
BugScreenSDK.configure(
apiKey: "fb_your_api_key_here",
startScreenRecordingImmediately: true,
screenRecordingOptions: .init(durationSeconds: 45, quality: .low)
)Quality presets
- low: up to 480 × 1066, 10 fps, 0.75 Mbps; 8 MiB buffer.
- balanced (default): up to 720 × 1600, 15 fps, 1.5 Mbps; 16 MiB buffer.
- high: up to 1080 × 2400, 30 fps, 4 Mbps; 32 MiB buffer.
Sizes apply in either orientation, without stretching or upscaling. Frame rate and bitrate are targets. Buffer limits cover compressed history and exports, not total app memory.
Control recording at runtime
Start recording from a tester control to choose when the system asks for permission. Call the controls on the main actor.
BugScreenSDK.startScreenRecording()After the tester responds to the system prompt, check screenRecordingState for the current status.
let state = BugScreenSDK.screenRecordingStateTo stop recording, call:
BugScreenSDK.stopScreenRecording()When recording pauses or stops
- Recording stops and clears history when the app backgrounds or the phone locks. It can restart when the app returns, asking for permission again if needed. Call startScreenRecording() to retry after denial, a manual stop, or an interruption such as memory or thermal pressure. Rotation starts fresh history.
- Opening a report pauses recording before the reporter appears. The clip uses one of the four attachment slots; testers can preview or remove it before submitting. Closing the reporter starts fresh history if the session is still approved. Recording permission prompts stay paused while the reporter is open.
- Clips may be shorter after startup, rotation or dropped frames. If recording or preparation fails, reporting still works and existing attachments stay in place.
Performance
Choose Low quality to reduce encoding work, or shorten the duration to store less history.
Recording privacy
Recording stays on the device with no microphone or app audio. Only clips kept in submitted reports are uploaded. Stopping clears history; disabling recording keeps clips attached to a draft. Removed clips and temporary files are deleted. Videos cannot be redacted, so remove sensitive clips before submitting.
Configure recording in your app. The console and MCP cannot enable recording or approve permission. There is no React Native recording bridge.