Proof

expo-camera

real getUserMedia preview + canvas-backed photo capture with base64 + MediaRecorder-backed video recording. recordAsync starts a MediaRecorder against the live stream (mp4 with webm fallback when video/mp4 is not supported), maxDuration auto-stops, stopRecording returns a real blob URL via URL.createObjectURL. Permissions go through navigator.permissions + getUserMedia probes. Live barcode scanning uses the lazy engine wasm reader; flash/torch/zoom remain unavailable.
93%
API coverage
No visual proof cases have been published for this package yet. The registry summary below describes what the compat layer implements.
Working (17)
CameraView (live video stream via getUserMedia)live barcode scanning with native result geometryfacing/mirror supporttakePictureAsync (canvas capture with base64)recordAsync via MediaRecorder with mp4/webm fallback returning a blob URLstopRecordingmaxDuration auto-stopuseCameraPermissionsuseMicrophonePermissionsgetCameraPermissionsAsyncrequestCameraPermissionsAsyncgetMicrophonePermissionsAsyncrequestMicrophonePermissionsAsyncpausePreview/resumePreviewgetAvailablePictureSizesAsync (real video.videoWidth/videoHeight)Camera.Constants compatenums (CameraType/FlashMode/AutoFocus/CameraMode/VideoQuality/PermissionStatus)
Missing (3)
scanFromURLAsync (no browser equivalent without an external library)flash/torch/zoom (browser MediaTrackConstraints expose torch on Android Chrome only — not wired)maxFileSize honoring (would need stream-size accounting)