Session Replays
Session Replays let you watch a video-like recording of what a user did in their browser before, during, and after an error occurred.
How It Works
The @unseenr/replay SDK uses rrweb to capture DOM mutations, mouse movements, clicks, scrolls, and other interactions. The recording is split into segments, gzip-compressed, and stored in Hetzner S3 (EU).
Privacy
- Input masking: All text inputs are masked by default. Users see
***instead of actual typed values. - PII scrubbing: Email addresses are automatically removed from replay metadata before storage.
- Replay data is stored in Hetzner S3 buckets located in the EU (Nuremberg).
Installation
npm install @unseenr/replay
Replay Quota
Session replays have a separate quota from error events:
| Plan | Replays / Month |
|---|---|
| Free | 500 |
| Starter | 5,000 |
| Pro | 50,000 |
| Business | 500,000 |
| Scale | 1,000,000 |
| Platform | 5,000,000 |
When the replay quota is exceeded, new replay envelopes are silently dropped (HTTP 200 is still returned to the SDK).
Viewing Replays
Navigate to your project's Replays page. Each replay shows:
- Timeline: A playback scrubber showing the session duration
- URLs visited: Pages the user navigated to during the session
- Linked errors: Error events that occurred during this session
- User context: Information about the user (if provided)
- Environment: The environment tag
- Duration: Total session length
- Segment count: Number of recording segments
Linking Errors to Replays
When an error occurs during a recorded session, the error event includes the replay ID. In the issue detail view, you can jump directly to the replay at the exact moment the error happened.