Last updated · 2026-08-31

04 · In practice

Watch the session.Keep the recording.

juuna records real sessions with masking on by default and keeps the recordings on your own dedicated instance: every input value is masked before it leaves the browser, no recording stores an IP, and everything expires on schedule.

I

The mechanism

How does session replay work?

The SDK records with rrweb: one snapshot of the page’s structure, then the stream of mutations, scrolls and clicks that follows. Playback rebuilds the session pixel for pixel. Recording is opt-in per product, sampled at whatever rate you set, and capped at 30 minutes per session, so a forgotten tab cannot record an afternoon.

Masking happens in the visitor’s browser, before anything is sent. Every input value is masked by default, and passwords are masked whatever you configure. Per element you can go further: one class removes an element from recordings entirely, one ignores its inputs, one masks its text, and a single option masks all visible text on the page.

Replay chunks post to their own endpoint on your instance, deliberately apart from analytics: a replay failure can never break your app or your event stream. A live panel follows a session while the visitor is still on the site.

II

The custody

Where do the recordings live?

On your instance and nowhere else. Recordings sit in your own Postgres on your own machine, are pruned after about 30 days by default, and on the Max plan you choose the retention yourself. An erasure request deletes a person’s recordings along with their events and traits.

Replay is part of the analytics, not a bolt-on: the replay index lists sessions beside the same traffic, funnel and vitals views, and the click heatmaps borrow replay’s page snapshots as their backdrop. One tool, one visitor model, one database.

III

The honest part

What does replay not do?

Two limits worth knowing before you buy. Microsoft Clarity offers basic session replay for free, on Microsoft’s infrastructure and terms; if zero is the budget, it exists. And PostHog’s replay carries deeper debugging, console logs and network capture; juuna records what the visitor saw and did, not the devtools underneath.

And one responsibility that stays yours: masking defaults, retention caps and IP-free recordings are juuna’s job, but telling users about recording and deciding whether your jurisdiction requires consent for it is yours. Replay is off until you switch it on, which is the right default for exactly that reason.

IV

The ledger

Replay, stated as facts

Masking
On by default for every input value; passwords always, no exceptions
Per-element control
Classes to block an element, ignore its inputs or mask its text
Storage
Your instance’s own Postgres; recordings never leave it
IP addresses
Never stored in recordings
Length
Capped at 30 minutes per session
Retention
About 30 days by default; on Max you choose
Sampling
Record every session or a fraction; the decision sticks per tab
Live view
Follow a session while it is still happening
Switched on by
You; replay is opt-in, in the npm build of the SDK

§

Asked and answered

Do I need consent to record sessions?
That depends on your jurisdiction and on what your pages contain, and it is a decision to make with counsel, not a vendor. What juuna contributes: recording is off until you enable it, masking is on by default, IPs are never stored, and recordings expire on schedule.
Can I see what a visitor typed?
By default, no. Input values are masked in the browser before anything is sent, and passwords are always masked. If your product genuinely needs visible input text you can switch input masking off, except for passwords, and mask individual elements instead.
Does session replay slow my site down?
The recorder loads as its own lazy chunk only when replay is enabled, buffers in memory, and ships small batches to a separate endpoint. It never throws into your app; a failure costs the recording, never the page.
Why is replay not in the script tag build?
The script build is held at 1.0 KB gzipped and a recorder cannot fit in that. Replay ships with the npm package, where rrweb loads as its own chunk only once you enable it.

Keep reading

Heatmaps · GDPR analytics · juuna vs Hotjar · juuna vs PostHog · The integration docs · Pricing

Watch a real session, safely.

Flat plans, everything included; every paid plan is a dedicated instance of your own.