Session Replay
See exactly what your users experienced by replaying their sessions with full context.
Overview
Session replay reconstructs a user's journey through your application -- the pages they visited, the actions they took, the performance they experienced, and any errors they hit. It's not a video recording; it's a structured timeline built from telemetry data collected by the RUM (Real User Monitoring) agent.
This is invaluable for debugging user-reported issues. Instead of asking "what were you doing when it broke?", you can look at the session and see for yourself.
Enabling RUM
Session data is only collected when RUM is enabled in your Meteor settings. Add this to your settings.json:
{
"public": {
"skysignal": {
"publicKey": "pk_live_xxx",
"rum": {
"enabled": true,
"trackUserActions": true,
"trackPageViews": true
}
}
}
}
| Setting | Description |
|---|---|
enabled | Turns on RUM data collection |
trackUserActions | Captures clicks, form submissions, and other user interactions |
trackPageViews | Tracks page navigations and time spent per page |
Both trackUserActions and trackPageViews should be true for full session replay functionality. You can disable either if you only need partial data, but the session timeline will have gaps.
Viewing a Session
- Navigate to a site's Sessions tab
- Find the session you want to investigate (filter by user, time range, or error presence)
- Click View Session Details
The Session Detail dialog shows four sections:
Page Flow
A visual timeline of pages the user visited. For each page you see:
- Page URL/route
- Time spent on the page
- Core Web Vitals scores for that page
- Transition arrows showing the navigation path
This answers "where did the user go?" at a glance.
Event Timeline
A chronological feed of everything that happened during the session:
- Navigations - Page changes with timestamps
- User actions - Clicks, form submissions, input changes
- Method calls - Meteor method invocations with response times
- Errors - Any errors that occurred, correlated with the preceding action
The timeline makes it easy to see the exact sequence: the user clicked a button, which called a method, which threw an error. That causal chain is often all you need to reproduce and fix a bug.
Performance
Per-page Web Vitals breakdown with quality indicators:
| Metric | What It Measures | Good | Needs Work | Poor |
|---|---|---|---|---|
| TTFB | Time to First Byte | < 800ms | 800-1800ms | > 1800ms |
| FCP | First Contentful Paint | < 1.8s | 1.8-3.0s | > 3.0s |
| LCP | Largest Contentful Paint | < 2.5s | 2.5-4.0s | > 4.0s |
| TTI | Time to Interactive | < 3.8s | 3.8-7.3s | > 7.3s |
Each metric is color-coded: green for good, orange for needs work, red for poor. This shows you whether the user experienced a fast, responsive app or was staring at loading spinners.
Errors
Any errors that occurred during the session, displayed with:
- Error message and type
- Timestamp
- The user action that preceded the error
- Stack trace (if available)
Seeing errors in session context is far more useful than seeing them in isolation. You know exactly what the user was doing when things went wrong.
Common Use Cases
Debugging User-Reported Issues
When a user reports "it broke when I tried to save", find their session, look at the event timeline around the time they reported the issue, and you'll see exactly what happened -- the form submission, the method call, and the error response.
Understanding User Journeys
Page Flow shows you how users actually navigate your app. You might discover they're taking unexpected paths, hitting dead ends, or bouncing between pages in ways you didn't anticipate.
Correlating Errors with User Actions
The Errors view shows you that an error happened, but session replay shows you why. Maybe it only occurs when users fill out a form in a specific order, or when they navigate to a page before data has finished loading.
Performance Investigation
If a user complains that "the app is slow", check their session's Performance tab. You might find that one specific page has terrible LCP because of a heavy subscription, while the rest of the app is fine.
Privacy Considerations
Session replay captures user actions and page navigations but does not record screen content or keystrokes. Form input values are not captured -- only the fact that an input event occurred. The data collected is limited to what's needed for debugging: routes visited, elements clicked, methods called, and performance metrics.
Next Steps
- Error Tracking - Investigate errors found in session replays
- Performance Optimization - Fix performance issues identified through session data
- Agent Configuration - Fine-tune RUM settings