Video-Like Replay
Configure video like playback for iOS Session Replay. Set screenshot quality and pick a capturing mode, from navigation only to frequent capture.
Quick Start
Add these APIs before initializing the SDK for the best experience:
import Luciq
// Configure video-like replay
SessionReplay.screenshotCapturingMode = .frequency // 1 screenshot per second, value in ms
SessionReplay.screenshotCaptureInterval = 1000
SessionReplay.screenshotQualityMode = .normal
// Initialize SDK
Luciq.start(withToken: "YOUR_APP_TOKEN", invocationEvents: [.shake])#import <Luciq/Luciq.h>
// Configure video-like replay
LCQSessionReplay.screenshotCapturingMode = LCQCapturingModeFrequency; // 1 screenshot per second, value in ms
LCQSessionReplay.screenshotCaptureInterval = 1000;
LCQSessionReplay.screenshotQualityMode = LCQScreenshotQualityNormal;
// Initialize SDK
[Luciq startWithToken:@"YOUR_APP_TOKEN" invocationEvents:LCQInvocationEventShake];Capturing Modes
Control when screenshots are captured using the screenshotCapturingMode API.
Navigation Mode (Default)
Captures screenshots only when users navigate between screens. This is the default behavior, providing the lowest overhead.
Best for: Apps where screen transitions are the primary user flow
SessionReplay.screenshotCapturingMode = .navigationLCQSessionReplay.screenshotCapturingMode = LCQCapturingModeNavigation;Interactions Mode
Captures screenshots on screen navigation and user interactions. Includes debouncing to prevent excessive captures.
Best for: Debugging user interaction issues, understanding how users interact with complex screens
Supported Interactions
UIKit
SwiftUI
Tap
Tap
Double Tap
Double Tap
Long Press
Long Press
Force Touch
Force Touch
Swipe
Swipe
Pinch
Pinch
Scroll
Scroll*
*SwiftUI scroll detection requires manual integration, please refer to the SwiftUI Integration for iOS docs.
Frequency Mode
Captures screenshots at a fixed time interval for true video-like playback. Also captures on screen navigation.
Best for: Full video-like replay experience, debugging visual issues, understanding complete user journeys
Screenshot Capture Interval
When using Frequency mode, configure how often screenshots are captured.
Parameter
Description
intervalMs
Time between captures in milliseconds
Default
1000ms (1 screenshot per second)
Minimum
500ms
Note: Values below 500ms will automatically use 500ms - the default minimum. A warning will be logged to help you identify the issue.
Timer Reset Behavior
The capture timer resets when:
A manual screenshot is captured via the SDK API
Screen navigation occurs
This ensures you always capture important moments regardless of the timer state.
Screenshot Quality
Control the visual quality of captured screenshots. Higher quality provides better visuals but uses more storage.
Quality Profiles
Profile
Compression
Use Case
High
50% quality (WebP)
Detailed debugging, visual regression testing
Normal (Default)
25% quality (WebP)
Balanced quality and storage
Greyscale
25% quality + grayscale (WebP)
Maximum storage efficiency, text-heavy apps
Estimated Screenshots per Session
Based on the default 1MB session screenshot limit:
Quality Profile
Approx. Screenshots per Session
High
~62 screenshots
Normal
~104 screenshots
Greyscale
~130 screenshots
Tip: For video-like replay at 1 FPS with Normal quality, you can capture approximately 1-2 minutes of continuous session activity.
Configuration Timing
Recommended: Before SDK Initialization
For best results, configure Video-like Session Replay before calling Luciq.start():
Runtime Configuration
You can also change settings during the session. Changes take effect as follows:
Setting
When Applied
Capturing Mode
Next session
Screenshot Quality
Next screenshot
Capture Interval
After current interval completes
SwiftUI Considerations
For SwiftUI apps, most interactions are captured automatically. However, scroll detection in SwiftUI requires manual gesture handling if you want scroll events to trigger captures in Interactions mode.
UIKit views embedded in SwiftUI work as expected with full interaction detection.
→ Please refer to our SwiftUI integration docs for more details SwiftUI Integration for iOS.
Privacy & Masking
Video-like Session Replay respects all existing privacy configurations:
Auto-masking continues to work across all capturing modes
Private views are masked in all captured screenshots
Views marked with
luciq_privateViewmodifier are automatically masked
For more information on privacy controls, see Session Replay for iOS.
Best Practices
Recommended Configurations
Use Case
Configuration
General debugging
Navigation mode + Normal quality
UI/UX analysis
Interactions mode + Normal quality
Full video replay
Frequency mode (1000ms) + Normal quality
Visual debugging
Frequency mode (500ms) + High quality
Storage-conscious
Navigation mode + Greyscale quality
Code Examples
Video-like Replay (Balanced)
Interaction-Focused Debugging
Maximum Visual Fidelity
Storage-Optimized
API Reference
SessionReplay.screenshotCapturingMode
Sets when screenshots are captured.
Value
Description
.navigation
Capture on-screen changes only (default)
.interactions
Capture navigation and user interactions
.frequency
Capture at fixed time intervals
SessionReplay.screenshotQualityMode
Sets the visual quality of captured screenshots.
.high
50% WebP compression
.normal
25% WebP compression (default)
.greyscale
Grayscale + 25% WebP compression
SessionReplay.screenshotCaptureInterval
Sets the capture interval for Frequency mode.
intervalMs
Interval in milliseconds (min: 500, default: 1000)
Migration Guide
If you’re upgrading from a previous SDK version:
No breaking changes -> Default behavior remains Navigation mode with Normal quality
Opt-in feature -> Video-like replay must be explicitly configured
Repro Steps unaffected -> Bug and Crash report screenshots continue to use Navigation mode and Normal quality
Last updated