Skip to main content
Comparison

Frontend monitoring vs session replay.

Both observe what users do in the browser. They answer different questions — one tells you "something broke", the other shows you "what the user saw when it broke". Here's the technical difference, the workflow overlap, and how to wire them together.

TL;DR
Frontend monitoring (Sentry, Datadog RUM, New Relic Browser) captures error stack traces + performance metrics + breadcrumbs across many users. Session replay (Relyv, Hotjar, FullStory) captures the full DOM + network + console for individual sessions. Monitoring tells you a 500 error fired in checkout 47 times this hour; replay shows you the user who hit it. Most teams run both, with shared session IDs so you can jump from a Sentry exception to the Relyv replay of that exact session.
Session replay vs frontend monitoring — at a glance
#ToolBest forFromAITest genPII on-deviceScore
1Session replay (Relyv, Hotjar, FullStory)Individual session debug + AI workflowsFree / $24/moFullYesYes4.6 / 5
2Frontend monitoring (Sentry, Datadog, New Relic)Cross-user error + perf aggregatesFree / $26/moPartialNoYes4.5 / 5

Editorial scoring on a 0–5 scale, weighted toward engineering use cases (capture depth, AI workflows, privacy, integrations, pricing).

The one-sentence answer

Frontend monitoring (also called Real User Monitoring or RUM) aggregates errors + performance metrics + breadcrumb events across all users. Session replay captures the full reconstructable session — DOM, network, console, user inputs — for an individual user. Monitoring tells you what broke and how often; replay shows you what the user saw when it broke.

What each one captures

The technical surface area differs substantially:

Frontend monitoring captures

JavaScript errors with stack traces (deminified via source maps), uncaught promise rejections, Web Vitals (LCP, INP, CLS, FCP, TTFB), navigation timings, resource timings, network request errors (5xx, timeouts), console errors, user-defined custom events, breadcrumbs (clicks, navigations, network calls — typically the last 10-50 leading to an error), and aggregate dashboards across all users.

Session replay captures

The full DOM at initial snapshot + every mutation since (so the page can be exactly reconstructed). All network requests with bodies. All console output. All click + keystroke + scroll + form events. Page navigation. The reconstructed result is a viewable session you can scrub, with dev-tools-style inspection inside the replay.

When monitoring wins

Frontend monitoring is the better fit when:

  • <strong>You need cross-user aggregates.</strong> "How many users hit this error this week?" Monitoring is built for this; replay isn't.
  • <strong>You need Web Vitals dashboards.</strong> LCP/INP/CLS trend lines across releases; monitoring is the right tool.
  • <strong>You need release-health correlation.</strong> Crash-free-sessions percentage per release tag; this is monitoring's sweet spot.
  • <strong>Storage volume is a hard constraint.</strong> Monitoring captures ~5-50 KB per session (depending on breadcrumb depth); replay is ~30 KB per session (DOM-only) or more if you keep long flows.

When replay wins

Session replay is the better fit when:

  • <strong>You need to see what the user saw.</strong> Stack trace alone can't tell you whether the button was visible, whether the form was filled, whether a modal was blocking the click. The DOM at-the-moment-of-the-error is the only ground truth.
  • <strong>You need to debug silent failures.</strong> No error fired but the user left — monitoring has no signal; replay does.
  • <strong>You're drafting bug tickets.</strong> A ticket with "user clicked Add to Cart and nothing happened, replay link below" is actionable; "uncaught TypeError at line 42" requires the engineer to imagine the context.
  • <strong>You're generating tests.</strong> Replay captures the action sequence Playwright needs; monitoring captures breadcrumbs that aren't reconstructable into a runnable spec.

Why most teams run both

The two tools answer different questions in the same workflow:

  • <strong>Monitoring: "what is broken?"</strong> Aggregates show 147 users hit a 500 error on /checkout this week.
  • <strong>Replay: "what does broken look like to the user?"</strong> Click a session from the aggregate, watch the replay, see the half-rendered confirmation page.
  • <strong>Loop closes: "is the fix shipped?"</strong> Monitoring tracks the error rate over time after deploy; replay confirms no new edge cases.

Wiring them together: shared session IDs

The pattern most teams converge on: capture the same session ID in both tools, so a Sentry exception view links directly to the Relyv replay of that session. Implementation is a few lines:

// One init that tags Sentry events with the Relyv session ID
import * as Sentry from '@sentry/browser';
import { init as initRelyv, getSessionId } from '@relyv/sdk';

initRelyv({ apiKey, projectId });
Sentry.init({
  dsn,
  beforeSend: (event) => ({
    ...event,
    tags: { ...event.tags, relyv_session_id: getSessionId() },
  }),
});

Now every Sentry exception carries a relyv_session_id tag — click it to jump straight to the captured session. The same pattern works for Datadog RUM (datadogRum.setRumGlobalContext({ relyv_session_id })) and New Relic (newrelic.setCustomAttribute).

What about Sentry Replay specifically?

Sentry has its own session-replay product bolted onto the error-monitoring core. If you're already on Sentry and want replay attached to exceptions, it's the lowest-friction path. Trade-offs: requires Sentry subscription (no standalone), less mature than the dedicated replay tools on cross-session intelligence + AI workflows + test generation. Standalone tools like Relyv work alongside Sentry via the shared-session-ID pattern above without requiring you to leave Sentry.

Frequently asked questions

Do I need session replay if I already have Sentry?

Yes if you want to see what the user actually saw (DOM, network, console at the moment the error fired). Sentry's breadcrumbs give you the last 10-50 events but not the full reconstructable session. Most teams add a dedicated replay tool alongside Sentry and link them via shared session IDs.

Do I need frontend monitoring if I already have replay?

Yes for aggregate metrics — error counts per release, Web Vitals trend lines, crash-free-sessions percentage. Replay is per-session; monitoring is per-cohort. You need both views to manage frontend reliability at scale.

Can session replay replace Sentry entirely?

No. Replay captures individual sessions in depth but doesn't do the aggregate-error-grouping + release-health views Sentry is built for. They overlap on "an error happened in this session" but the aggregate dashboards are monitoring's territory.

What's the storage cost difference?

Monitoring at typical breadcrumb depth: ~5-50 KB per session. Replay: ~30 KB per session for a short flow, ~100-300 KB for a longer session with more mutations. Total cost depends on retention period and session volume — both are usually well under 1 GB/month/100K-sessions, so cost is not usually the deciding factor at mid-market scale.

Does session replay work with Sentry source maps?

They serve different purposes — Sentry source maps de-minify stack traces; replay captures the live DOM/network/console regardless of source maps. You'd use both: source maps in Sentry to read the stack trace, replay to see what the user was doing when that stack trace fired.

Which tool should I deploy first?

If you're error-blind today, deploy monitoring first (Sentry, Datadog RUM, or New Relic Browser) — you'll catch silent crashes immediately. Add session replay within 30 days for the "what did the user see" layer. Doing them simultaneously is fine if you have the engineering capacity to wire both up; otherwise sequence by which gap is more painful.

Ready to record your first session?

Free 1,000 sessions/mo. No credit card. Cancel anytime, no refunds.