Customization
Session Replay
Record and replay full user sessions
Session Replay
Ensora records full user sessions and lets you replay them in the dashboard to understand exactly how users interact with your app.
How It Works
Once EnsoraProvider is in your root layout, sessions are recorded automatically. Each session captures:
- Screen navigation (pathname changes via Expo Router)
- Touch events (taps, swipes — requires
touchCapture: true) - Unhandled errors with stack traces
- Custom events sent via
track()
Enabling Sessions
import { EnsoraProvider } from '@ensora/react-native';
export default function RootLayout() {
return (
<EnsoraProvider
apiKey="your_api_key"
projectId="your_project_id"
touchCapture={true}
>
<Stack />
</EnsoraProvider>
);
}Session Sampling
Record a fraction of sessions to control data volume:
<EnsoraProvider
apiKey="your_api_key"
projectId="your_project_id"
sessionSampleRate={0.25} // Record 25% of sessions
>
<Stack />
</EnsoraProvider>Sampling Recommendations
- 1.0 (100%) — All sessions, maximum visibility
- 0.5 (50%) — Good balance for high-traffic apps
- 0.1–0.25 — High-volume production apps
Viewing Sessions
From the dashboard Sessions tab:
- Filter by date range, duration, or error count
- Search by user ID or session ID
- Click any session to open the replay viewer
- Jump to specific events using the event timeline
Session Data
Each session record includes:
{
"session_id": "uuid",
"started_at": "2026-01-01T00:00:00Z",
"ended_at": "2026-01-01T00:05:23Z",
"duration_ms": 323000,
"event_count": 47,
"error_count": 0,
"platform": "ios",
"app_version": "2.1.0"
}Error Handling
The SDK queues events locally and retries on the next foreground cycle if the network is unavailable.
Privacy
Sessions never capture keyboard input, passwords, or fields marked as sensitive in your masking rules. Configure masking under Settings → Privacy in the dashboard.
Next Steps
- Heatmaps — Visualize touch patterns across sessions
- Error Tracking — Filter sessions by errors
- API Reference — Complete session API
Last updated on