Native Screen Recorder & Instant Replay

Native screen recording, instant replay, and screenshots for any Unity project — hardware-encoded on iOS and Android, with a software fallback everywhere else.

  • H.264 + HEVC
  • Hardware encoded
  • No CPU readback
Native Screen Recorder & Instant Replay cover art with the Unity inspector configuration panel
[#01]WHAT'S INSIDE

Four tools, one component.

Recording

Record gameplay to MP4 at your game's framerate and resolution. Pull marketing trailers straight off a real device, or hand your players a built-in record button.

Instant Replay

A rolling buffer captures continuously and exports the most recent seconds on demand — save the highlight after it has already happened.

Screenshots

Take screenshots on demand, including your Screen Space Overlay UI. Trigger them from code, or give your players a capture button.

Remote Dashboard

Trigger recordings, replays, and screenshots from your PC while the game runs on a device — and save them straight to your machine.

[#02]EASY TO SET UP

One component. Drop it in. Done.

Add the Facade

Drop the ScreenRecorderFacade component into your first scene. It marks itself DontDestroyOnLoad, so one instance follows your game across scene loads.

Create the Config

Right-click → Create → NF → Screen Recorder → Config. Pick a preset or set your own bitrate, codec, and framerate. Skip this entirely if the defaults work for you.

Unity Create menu showing NF → Screen Recorder → Config

Call the API

Day to day you touch three methods — RecordFor, SaveInstantReplay, TakeScreenshot. Hand each a callback for the bytes, or await the UniTask version.

// Record for a fixed duration
recorder.RecordFor(10, mp4 => File.WriteAllBytes(path, mp4));

// Save the last N seconds from the rolling buffer
recorder.SaveInstantReplay(15, mp4 => UploadClip(mp4));

// Screenshot — includes your Screen Space Overlay UI
recorder.TakeScreenshot(jpeg => ShareSheet.Show(jpeg));
ScreenRecorderFacade component shown in the Unity Inspector
The facade in the Inspector — one MonoBehaviour, one config asset.
[#03]TRUE NATIVE PERFORMANCE

Native where it matters.

Mobile recording goes through the platform's own hardware encoders — not a CPU readback loop. That means full game framerate, full game resolution, no thermal cliff, no dropped frames.

  • iOS — ReplayKit and AVAssetWriter. The included Xcode build post-processor links ReplayKit.framework and writes the required Info.plist keys for you.
  • Android — MediaProjection, MediaCodec, and MediaMuxer behind a foreground service. The library manifest is merged into your build automatically.
  • Editor · Windows · macOS · Linux — a pure C# software pipeline. Same API, same call sites.

Choose H.264 or HEVC — HEVC files run roughly 30–50% smaller at the same visual quality.

H.264 + HEVC · Hardware encoded · No CPU readback

[#04]INSTANT REPLAY

Save the moment after it happened.

A rolling in-memory buffer records continuously in the background. When the player dies, scores, finishes the lap, or pulls off something amazing, save the last few seconds and you have a clip.

Buffer length runs up to 10 minutes, with its own quality settings independent of your normal recordings — keep it light without compromising the main capture.

// Save the last 15 seconds instantly
recorder.SaveInstantReplay(15, mp4 => Save(mp4));

// UniTask variant — lights up when
// com.cysharp.unitask is present
var clip = await recorder.SaveInstantReplayAsync(15, token);

Rolling buffer · Zero re-encode · MP4 in one call

[#05]REMOTE DASHBOARD

Record from your PC. Game on the device.

The package ships with a small browser dashboard served by an embedded HTTP server. Open it on your laptop, point it at the device's IP, and trigger record, replay, and screenshot from a real keyboard while your game runs on a phone in your hand. No cables, no third-party apps.

The browser dashboard with Screenshot, Recording, and Instant Replay controls
[#06]TUNE IT TO YOUR GAME

Every detail, one ScriptableObject.

The ScreenRecorderConfig custom inspector with recording and instant-replay settings

Every recording detail lives on a single ScreenRecorderConfig ScriptableObject with a custom inspector:

  • Recorder mode — native or software
  • Native presets — Low, Medium, High, VeryHigh, or Custom
  • Codec — H.264 or HEVC
  • Match Application.targetFrameRate, or override it
  • Software path — output resolution, target FPS, JPEG quality
  • Independent settings for recordings and the instant-replay buffer
  • Instant-replay buffer length — 1 to 600 seconds
  • HTTP dashboard port

Need different settings per scene or per build flavour? Call Initialize(config) at runtime and the whole config swaps in one line.

Ship faster with a tool that just works.

  • Performance-optimized
  • Fully documented
  • Active support