[ Package conformance ]

Media · >=3.0.0

react-native-vision-camera

real navigator.mediaDevices-backed camera (same real-getUserMedia + canvas-photo + MediaRecorder tier as expo-camera@0.85, with a larger surface). Camera mounts a <video> bound to a getUserMedia stream (facingMode from device.position), takePhoto draws a frame to OffscreenCanvas → PNG blob URL, startRecording/stopRecording use MediaRecorder with mp4/webm fallback honoring videoBitRate, useCameraDevice(s) enumerate via mediaDevices.enumerateDevices, useCameraPermission/useMicrophonePermission read navigator.permissions.query, front camera mirrored via CSS scaleX(-1). useCodeScanner now REALLY scans: while the camera is active the live video is polled with the native BarcodeDetector API (the same API the @react-native-ml-kit/barcode-scanning seam uses) and onCodeScanned fires with BarcodeDetector formats mapped to vision-camera codeTypes. remaining gaps are genuine browser MediaStreamTrack-capability limitations (faithful, not sootsim deficiencies).
93%
API coverage
No visual conformance cases have been published for this package yet. The registry summary below describes what the compat layer implements.
Working (12)
Camera component live preview through getUserMediatakePhoto returning a real PNG blob URL with correct dimensionsstartRecording/stopRecording/pauseRecording/resumeRecording via MediaRecorderonRecordingFinished/onRecordingError callbacks fire correctlyuseCameraDevice/useCameraDevices via enumerateDevicesuseCameraPermission/useMicrophonePermission read + request real permission stateuseCameraFormat returns a sensible default formatisActive toggles stream start/stopposition prop switches facingModeonInitialized/onStarted/onStopped/onError fire at correct lifecycle momentsuseCodeScanner performs real BarcodeDetector scanning on the live preview (onCodeScanned fires with mapped codeTypes)useFrameProcessor type-correct passthrough
Missing (6)
tap-to-focus (browser tracks have no focus point API)real torch/flash control (no MediaStreamTrack constraint for torch on most devices)zoom sliderexposure compensationframe processor callback never fires per-frame (browser has no native frame-level callback comparable to Vision frameworks) — all genuine browser MediaStreamTrack limitationsfaithful (not sootsim-specific)