Screen replay

The headline feature: pixel-accurate playback of everything the user saw on screen.

How it works

PlatformTechnique
WebDOM snapshots via rrweb — serializes the full tree once, then ships incremental diffs
React Native (Android)Native screen frames captured at 1–4 fps, JPEG-compressed, streamed as binary
React Native (iOS)Same as Android — native frame capture via CoreGraphics

Web replay is vector-based (you can inspect the DOM at any point during playback). RN replay is raster (JPEG frames played back as a video).

Turning it off

You rarely want to. But if your app has legal reasons to not record visuals:

// Web
<GalachaProvider projectKey="..." />
// No toggle — DOM capture is always on. Use <PrivateBlock> to hide specific parts.
 
// React Native
Galacha.init({ projectKey: "...", captureScreen: false });

Setting captureScreen: false on RN ships everything except frames: clicks, errors, network, navigation, custom events. Useful for text-only replay views.

Tuning frame rate (React Native)

Galacha.init({
  projectKey: "...",
  screenCaptureFps: 1,          // 1–4 fps. Default 1.
  screenCaptureQuality: 0.4,    // JPEG quality 0.1–1.0. Default 0.4.
  screenCaptureScale: 0.35,     // Downscale factor 0.25–1.0. Default 0.35.
});
SettingDefaultTrade-off
screenCaptureFps1Higher = smoother playback, more bandwidth
screenCaptureQuality0.4Higher = crisper frames, larger payload
screenCaptureScale0.35Higher = more detail, larger frames

A 3-minute RN session at defaults ships ~300 KB. Cranking everything to max (fps: 4, quality: 1.0, scale: 1.0) can push that to 5 MB+.

What the dashboard plays back

  • A full scrubber with keyboard shortcuts (← → for frame-by-frame)
  • Speed controls (0.5×, 1×, 2×, 4×)
  • Timeline markers for errors, clicks, navigations
  • Network panel overlay (toggle with N)
  • Console panel overlay (toggle with C)
  • DevTools-like element inspector (web only)

What's NOT captured in the replay

  • <canvas> / WebGL contents on web — rrweb doesn't serialize canvas pixels by default. You see the canvas outline but not what was drawn.
  • <video> / <iframe> contents — the element is captured but not what it played
  • Native alerts / popups on RN — system UI isn't part of the view tree
  • Off-screen content — only the viewport is recorded

Related