Skip to main content
Record pixel-accurate replays, auto-captured taps and gestures, custom events, crashes, and performance vitals — with one call at launch. Requires iOS 15+.

Install

The module you import is always Replay, regardless of installer.

Initialize

1

Import and start at launch

Start Replayfy as early as possible — recording begins immediately.
2

SwiftUI-only apps

No AppDelegate? Start it from App.init.
3

Identify and track (optional)

Attach a known user and record custom events.
A properties["picture"] (or its alias ["avatar"]) set to a public https image URL becomes the user’s avatar on the recording header and Users list — top-level or nested in customProps; non-URL values are ignored.

Verify

Run the app, interact for a few seconds, then background it. Your first session appears in the Replayfy dashboard within a minute.
Wire up Replay.addVerificationListener { ... } to light up an in-app “Verify integration” state — it fires once after the first successful upload.

Configuration

Only apiKey and apiHost are required. Pass any subset to ReplayConfig(...).

API reference

All methods are static on the Replay type.

Lifecycle

Identify & analytics

Error monitoring

Uncaught exceptions and crashes are captured automatically when captureErrors is true.

Screens

Exclusion is distinct from occludeSensitiveScreen(_:) — that keeps recording but blanks the frame, whereas an excluded screen captures no frames at all. Seed the list at launch, or manage it at runtime:

Logging

Metadata

Text input

Network capture

Set captureNetwork: true. URLSession.shared is captured automatically. For a custom configuration, register it before creating the session.

Integration verification

Cross-platform bridges

Entry points for host frameworks (React Native, Flutter) that capture interactions, inputs, and frames themselves. Native iOS apps don’t need them.

Privacy & masking

Sensitive content never has to leave the device. Secure/password fields (isSecureTextEntry) are masked automatically; everything else is opt-in.

Choose a mask style

ReplayMaskStyle values: .blur, .overlay, .pixelate.

UIKit masking

SwiftUI masking

Import the optional ReplaySwiftUI module:
replayOcclude(blockGestures:) also suppresses taps on the masked region when blockGestures is true (the default).

Identify users

Link sessions to known users and their properties.

Track events

Fire custom events to power funnels and filters.

Privacy & masking

Redact sensitive views, fields, and regions.