HomeGuidesChangelogDiscussions
Hire a ReactVision Expert 🛠️Launch Studio 🖥️Sponsor on GitHub ❤️Log In
Guides

AR Session Recording

AR Session Recording

Capture an AR session to local storage — camera passthrough + raw IMU + ground-truth pose — for offline analysis (e.g. tinyvio / reactviro_validate_recording). This is not screen recording.

Not the same as startVideoRecording / stopVideoRecording, or ViroCameraTexture's startRecording. Those capture rendered / camera-texture video. Session recording keeps three separate streams a visual-inertial engine needs to replay the session offline.

Available since ViroReact 2.58.0. Documented here as part of the 3.0 docs catch-up.

Quick start

const { success, error } = await sceneNavigator.startRecording(outputDir);
// ...walk the space...
await sceneNavigator.stopRecording();
const status = await sceneNavigator.getRecordingStatus(); // "None" | "Recording" | "IOError" | "Unsupported"

outputDir should be a plain filesystem path (not a file:// URI). After stop it contains video.mp4 and session.jsonl.

API

MethodDescription
startRecording(outputDir)Starts capture. Returns { success, error? }.
stopRecording()Finalizes files. No-op if nothing is recording.
getRecordingStatus()"None" | "Recording" | "IOError" | "Unsupported".

Platform support

PlatformStatus
iOS✅
Android✅
Web / visionOS / Quest❌ — getRecordingStatus() returns "Unsupported"

Getting files off the device

On iOS, enable Files-app access (UIFileSharingEnabled + LSSupportsOpeningDocumentsInPlace) and/or share immediately with expo-sharing. Android app-external paths are reachable via adb pull or a file manager.

Related