mixpanel/mixpanel-ios-session-replay-package
**Session Replay for iOS lets you visually replay your user's app interactions, providing powerful qualitative insights to complement your quantitative analytics.**
Overview
Mixpanel Session Replay enables you to quickly understand why users behave a certain way in your app, complementing analytics insights on where they drop off.
Requirements
- Active Mixpanel account (Enterprise)
- Mixpanel Swift SDK
v4.3.1or later
Installation
Using Swift Package Manager
Add the Session Replay SDK using Swift Package Manager directly in Xcode:
- In Xcode, go to File → Add Package Dependencies...
- Paste the GitHub URL:
https://github.com/mixpanel/mixpanel-ios-session-replay-package - Follow the prompts to select the latest version and add the package to your project.
Using Cocoapods
Open podfile and add Mixpanel Session Replay library to your dependencies:
target 'MyApp' do
pod 'MixpanelSessionReplay', :git => 'https://github.com/mixpanel/mixpanel-ios-session-replay-package.git', :tag => 'v1.0.0'
endInstall the Mixpanel Session Replay by running the following in the Xcode project directory:
pod installQuick Start
SwiftUI
import Mixpanel
import MixpanelSessionReplay
struct YourApp: App {
@Environment(\.scenePhase) private var scenePhase
var body: some Scene {
WindowGroup {
ContentView()
}
.onChange(of: scenePhase) {
if scenePhase == .active {
let config = MPSessionReplayConfig(wifiOnly: false, enableLogging: true)
MPSessionReplay.initialize(
token: Mixpanel.mainInstance().apiToken,
distinctId: Mixpanel.mainInstance().distinctId,
config: config
)
}
}
}
}UIKit
import UIKit
import Mixpanel
import MixpanelSessionReplay
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
Mixpanel.initialize(token: "YOUR_MIXPANEL_TOKEN")
let config = MPSessionReplayConfig(wifiOnly: false, enableLogging: true)
MPSessionReplay.initialize(
token: Mixpanel.mainInstance().apiToken,
distinctId: Mixpanel.mainInstance().distinctId,
config: config
)
return true
}
func applicationDidBecomeActive(_ application: UIApplication) {
MPSessionReplay.getInstance()?.startRecording()
}
}Configuration
Customize your session replay by modifying MPSessionReplayConfig:
wifiOnly: Restricts uploads to WiFi connections (default:true).autoMaskedViews: Automatically masks sensitive views (.image,.text,.web,.mapby default).autoStartRecording: Whether or not to automatically start recording upon initialization (default:true)autoStartRecordingSessionsPercent: Controls session sampling from0.0(none) to100.0(all, default) whenautoStartRecordingistrue.enableLogging: Turn on debug logs (default: false)flushInterval: How frequently to flush replay events (default: 10 seconds)
Privacy & Data Masking
By default, Mixpanel automatically masks sensitive views:
- All text field inputs (cannot be unmasked)
- Images, Labels, WebViews, MapViews (can be manually adjusted)
To manually control sensitivity:
// SwiftUI
Image("photo").mpReplaySensitive(true)
// UIKit
yourUIView.mpReplaySensitive = trueResources
Support
Questions or feedback? Contact your Mixpanel Account Manager.
Package Metadata
Repository: mixpanel/mixpanel-ios-session-replay-package
Default branch: main
README: README.md