Proof

expo-av

native-seam only. real expo-av package runs from the bundle (Audio.Sound + Audio.Recording classes, AVPlaybackStatus shape, PitchCorrectionQuality enum, RecordingOptionsPresets, Video component). sounds: EXAV.m numeric keys over the shared EXAVPlayerData model; recording keeps the web-ported MediaRecorder methods. video: the ExpoVideoView module and view follow ios/EXAV/Video (tag-addressed loadForVideo/setStatusForVideo/replayVideo/getStatusForVideo, the EXAVPlayerData status dictionary, onLoadStart/onLoad/onReadyForDisplay/onStatusUpdate/onError) over the shared video channel.
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 (9)
Audio.Sound (createAsync/loadAsync/unloadAsync/play/pause/stop/seek/setRate/setVolume/setMuted/setLooping/setProgressUpdateInterval/setOnPlaybackStatusUpdate with numeric keys and the iOS status dictionary)Audio.Recording (prepareToRecordAsync/startAsync/pauseAsync/stopAndUnloadAsync/getStatusAsync/getURI via singleton MediaRecorder)Video component playback of bundled and remote sources with the ref API (loadAsync/unloadAsync/playAsync/pauseAsync/setPositionAsync/setStatusAsync/replayAsync/setRate/setVolume/setIsMuted/setIsLooping) and its eventsreal getUserMedia permission probe with PermissionStatus reflectiondidUpdatePlaybackStatus + ExponentAV.onError events through the module emitterQualities as AVAudioTimePitchAlgorithm namesRecordingOptionsPresetsPitchCorrectionQuality enum (Low/Medium/High)ResizeMode
Missing (5)
setAudioModeAsync is noop (no browser equivalent for AVAudioSession)audio metering/analyzer data absent (would need AnalyserNode)Video fullscreen rejects (no system AVPlayerViewController) and useNativeControls draws no controlsrecording follows the web module (MediaRecorder, blob URI)shouldDuckAndroid / playThroughEarpieceAndroid ignored