Skip to main content

Recording and replaying user interactions

Most session replay tools, including Multiplayer, don’t record a literal video of a user’s screen.

Instead, they capture structured events from the DOM (the page’s blueprint of buttons, text, inputs, and layout).

Multiplayer saves these changes as users interact with your app, then rebuilds them step by step in your browser during playback. The result looks like a video, but it’s lighter, searchable, and more privacy-friendly.

Full stack visibility: including backend data


Most session replay tools stop at the frontend, showing you only what the user saw and did.

Multiplayer goes further by automatically correlating backend data with every session replay. Alongside the UI events, you also get traces, logs, request and response payloads, and header content captured in the same timeline.

This means you don’t just see that something broke in the browser, you also see why it broke across your services.

👀 To leverage end-to-end visibility from a single replay make sure to follow step 2 of the Multiplayer configuration.

How Multiplayer uses the rrweb library


Multiplayer leverages rrweb, an open-source JavaScript library for recording and replaying user interactions in the browser. Unlike a video recording, rrweb captures structured events that describe exactly what happened on the page, including:

  • DOM snapshots and mutations (how the page looked, and how it changed)
  • User interactions (clicks, scrolls, inputs, selections)
  • Network requests (XHR/fetch)
  • Media events (play, pause, etc.)
  • Console logs and errors
  • Inline styles, attributes, and layout changes
  • Viewport resize and device size changes

When you replay a session, rrweb reconstructs these events step by step inside the browser, producing a video-like experience while remaining lightweight, searchable, and accurate.

Limitations of the rrweb library


While rrweb is powerful, there are some limitations to what can be recorded and replayed. Certain elements are either not captured at all or only partially supported.

Not captured or limited

  • Cross-origin iframes: For security reasons, only the iframe container is recorded, not its DOM or interactions.
  • WebGL / Canvas rendering: <canvas> elements are recorded, but not the drawing operations (2D/3D rendering won't replay).
  • Video / audio playback: Media elements are captured, but not the actual frames or audio stream.
  • Plugins / Flash / native dialogs: Anything outside standard DOM APIs isn’t captured.
  • Browser UI elements: URL bar, alerts, print dialogs, and file pickers are not part of the DOM, so they aren’t recorded.
  • Shadow DOM quirks: Content is serialized, but certain runtime styles may not replay perfectly.
  • High-performance animations: CSS transitions are captured, but playback may not be perfectly smooth.

Partially captured

  • Form inputs: Text, checkbox, radio, and select changes are recorded, but browser autofill and password managers are not.
  • Scroll position: Tracked, though it may differ if layout shifts occur.
  • Stylesheets: External CSS is recorded, but if it’s blocked by CORS or loads late, replay may not match the live experience exactly.

Data privacy and masking


Multiplayer is built with privacy in mind. By default, all user inputs are masked in session replays so sensitive data such as passwords, credit card numbers, or personal information (PII) is never exposed.

This ensures you capture the system context you need to debug and test, while keeping end-user data secure and compliant.

Next steps


👀 If this is the first time you’ve heard about us, you may want to see full stack session recordings in action. You can do that in our free sandbox: sandbox.multiplayer.app

🚀 If you’re ready to trial Multiplayer, the fastest way to get started is to install our browser extension from the Chrome Web Store (Chrome, Firefox, and Edge supported).