Auto-generated session recordings for exceptions and errors
Multiplayer is versile by design and you can record full stack session recordings in 3 modes:
- On-demand
- Continuous
- Remote
With continuous recordings Multiplayer keeps a rolling record of your recent activity. If something doesn’t work as expected, you can manually save the recording and continue working.
If you encounter exceptions or errors Multiplayer will automatically save recordings that include them. This makes it effortless to capture elusive, hard-to-reproduce problems.
How Multiplayer continuous recording works
To turn this mode on, toggle "Continous recording" on in the browser extension or in the in-app widget.
- It keeps rolling window of up to 2 minutes of user session data.
- Data that is older than 2 minutes is automatically discarded.
- At any point, you can manually save the most recent window of data using “Save recording.”
- If an exception or error occurs, the snapshot that includes it is automatically saved in your "Sessions" tab.
Exceptions vs. Errors in OpenTelemetry
Exceptions
An exception is a very specific type of error in the code. For example:
- In JavaScript: throw new Error("...") that gets caught and logged.
- In Java, Python, Go, etc.: thrown/caught exceptions.
OTel has a standard semantic convention for exceptions (exception.type, exception.message, exception.stacktrace).
Errors
Errors are a broader category of “something went wrong”. However, while all exceptions are errors, not all errors are exceptions. Examples:
- HTTP 500 response codes.
- A failed file open (“file not found”).
- Database query timeout.
- These aren’t exceptions in the language runtime, but they are marked as error spans in traces (status.code=ERROR).
What triggers Multiplayer to automatically save a session
A continuous session will be saved instead of discarded if any of these occur:
- Manual save: the user manually clicks “save recording”
- Frontend exception: e.g. a JS runtime error thrown by the app.
- Backend error: any span with
status=ERROR
(e.g. failed HTTP call, DB timeout, etc.). - Programmatic trigger: you can set a custom attribute in any span (
multiplayer.session.auto-save =true
) and Multiplayer will save the current rolling buffer at that point.
Languages supported for programmatic triggers
- JavaScript
- 🚧 Python
- 🚧 Java
- 🚧 .NET
- 🚧 Go
- 🚧 Ruby
- 🚧 PHP
- 🚧 Rust
- 🚧 Swift
- 🚧 Generic
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).