Add experimental session replay capturing on Linux - #1428
Merged
Conversation
Contributor
|
tustanivsky
marked this pull request as ready for review
June 11, 2026 08:19
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d511222. Configure here.
JoshuaMoelans
approved these changes
Jun 11, 2026
JoshuaMoelans
left a comment
Member
There was a problem hiding this comment.
nice consolidation work! (also cool that Linux is way less additional work than macOS 😁 )
tustanivsky
added a commit
to getsentry/sentry-docs
that referenced
this pull request
Jun 11, 2026
This PR adds Linux-specific details to the Session Replay docs for Unreal SDK. Related items: - getsentry/sentry-unreal#1428
2 tasks
inventarSarah
pushed a commit
to getsentry/sentry-docs
that referenced
this pull request
Jun 15, 2026
This PR adds Linux-specific details to the Session Replay docs for Unreal SDK. Related items: - getsentry/sentry-unreal#1428
This was referenced Jun 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

This PR adds an opt-in session replay feature for Linux allowing the SDK to continuously record the last several seconds of gameplay into a MP4 file and attach it to crash reports.
Example crash event with Session Replay attached (Linux)
Key Changes
The desktop recorder lifecycle (initialization, crash-time attachment, teardown, and replay path) is now consolidated into
FGenericPlatformSentrySubsystem, the sharedsentry-nativebase. All native desktop backends (Windows, Linux and the macOS Native backend) now use this unified path for Session Replay, and the duplicated implementations have been removed fromFWindowsSentrySubsystemand the Native branch ofFMacSentrySubsystem. The Cocoa backend retains its own implementation as it lives in a separate class hierarchy (FAppleSentrySubsystem).FSentryBackBufferCapturenow selects the encoder input texture interop flag at runtime based on the active RHI type -Externalfor Vulkan (Linux, or Windows with-vulkan) andSharedfor D3D - aligning with how the engine’sFVideoResourceRHI::Createchooses the appropriate flag per RHI.Engine Dependencies
In addition to
AVCodecsCore, Linux builds require the experimentalNVCodecsplugin (which provides the NVENC encoder, available on Win64/Linux from UE 5.2+). Both must be enabled in the project forUSE_SENTRY_SESSION_REPLAYto be defined (guards session replay code), and the platform must be Win64, Mac, or Linux.Other Considerations
OPAQUE_FDon Linux), which requires the texture to be created withTexCreate_Externalrather than the D3D-orientedTexCreate_Shared. The capture path now picks the flag per RHI so the Vulkan allocation exposes a shareable handle; with the wrong flag the resource has no shareable handle and the encoder rejects every frame.Known Limitations
Documentation
Related items: