🚧 NOTE: iOS session replay is considered
betaand is free while in beta. We are keen to gather as much feedback as possible so if you try this out please let us know. You can send feedback via the in-app support panel or one of our other support options.
Installation
Install and configure PostHog as you normally would. Ensure you've enabled session recordings in your project settings and then add config.sessionReplay = true to your PostHog configuration alongside any of your other configuration options.  
Requires PostHog iOS SDK version >= 3.6.0, and it's recommended to always use the latest version.
Masking and redacting
Your replays may contain sensitive information. For example, if you're building a banking app you may not want to capture how much money a user has in their account.
To replace any type of UIView with a redacted version in the replay, set the accessibilityIdentifier to ph-no-capture:
Note: For SwiftUI please refer to the Masking in SwiftUI section below
Note: A technical issue is causing the SwiftUI Text view to be detected as a
SwiftUI Imageview. This means that it'll be automatically masked ifmaskAllImagesis set totrue, even if themaskAllTextInputsis disabled. We're investigating this issue.
Masking in SwiftUI
- When using the SwiftUI TextField with UITextInputTraits, setting traits such as - TextField("Email", text: ...).keyboardType(.emailAddress)will always be automatically masked since it's for private text.
- The SwiftUI SecureField view is always automatically masked. 
- You can manually mark a SwiftUI View for masking using the - postHogMask(_:)view modifier:Swift// This view will be masked in session replay recordingsMyCoolView().postHogMask()
Limitations
- SwiftUI is only supported if the screenshotModeoption is enabled.- Textviews in SwiftUI are considered images, so they are masked unless- maskAllImagesis disabled.
 
- Custom views are not fully supported if screenshotModeis disabled.
- WebView is not supported. A placeholder will be shown.
- Flutter for iOS isn't supported.