Feature Requests

With Expo, you can write iOS and Android experiences in JavaScript using React Native.
[expo-audio] Surface audio sampling on AudioPlaylist (setAudioSamplingEnabled + audioSampleUpdate)
AudioPlayer already ships PCM sampling — isAudioSamplingSupported , setAudioSamplingEnabled(enabled) , and the audioSampleUpdate event. AudioPlaylist has none of it: its entire event map is playlistStatusUpdate and trackChanged . The ask: mirror those onto AudioPlaylist , emitting for whichever track is current ( currentIndex is already tracked and surfaced). Use case — a hands-free voice assistant. TTS clips play through AudioPlaylist because one queue gives synthesis/playback overlap, ordering, and a single stop/kill switch in one place. The UI has a presence indicator that should pulse with the assistant's actual voice, but with no sampling on the playlist it has to run off a synthetic timer instead. The alternatives are adding a native audio dependency, or moving playback to individual AudioPlayer s and rebuilding the queue/skip machinery — neither is proportionate to needing an amplitude number. It looks small on both platforms (read against 57.0.4): Android: AudioPlayer sources its samples from Visualizer(ref.audioSessionId) in createVisualizer() . AudioPlaylist extends the same BaseAudioPlayer and so has the same ref.audioSessionId , and Visualizer binds to the audio session rather than the media item — so track changes need no special handling. Lifting samplingEnabled + createVisualizer() + sendAudioSampleUpdate() into BaseAudioPlayer would give both classes the feature at once. iOS: AudioTapProcessor is initialised with an AVPlayer , and AudioPlaylist is a SharedRef<AVQueuePlayer> — already an AVPlayer . The tap attaches to player.currentItem 's audio mix, so the only additional piece is re-installing it on track change, which the playlist already observes. Happy to put up a PR if that would be welcome.
0
expo-audio: option to keep haptics working while recording (iOS)
iOS silences all haptics and system sounds for as long as an app holds a recording-capable audio session (any category set with allowsRecording). For a chat app this is painful: recording a voice note is exactly when you want haptic feedback for things like recording lock and slide-to-cancel, and right now every haptic in the app goes dead the moment the recorder configures the session. Apple has an opt-in for this: AVAudioSession.setAllowHapticsAndSystemSoundsDuringRecording(true). expo-audio doesn't expose it, so the only way to get it today is a patch-package patch on the native module (which is what we ship). Proposal: a boolean on AudioMode, e.g. allowsHapticsAndSystemSoundsDuringRecording, default false so nothing changes for existing apps. Two details worth knowing from running this in production: The property belongs to the session configuration, so it needs re-asserting after every setCategory call, not once at startup. A category change drops it. There are three setCategory sites in expo-audio as of SDK 57: the setAudioModeAsync path in AudioModule, AudioRecorder.prepare, and the new AudioStream (measurement mode). The first two should respect the flag. The AudioStream one is a judgment call, measurement mode exists to keep the input clean and the mic picks up the Taptic Engine, which is also why Apple made muting the default. Happy to send a PR if the shape gets a thumbs up, we already run the equivalent change in production.
0
Load More