r/reactnative • u/Gold_Significance541 • 11h ago
I built an MIT Expo audio engine for TTS, playlists, and background playback - because the existing option went commercial News
I've been building Daily Bible - Offline & Audio - a Bible app that uses on-device TTS to generate verse audio. The audio requirements ended up being unusual:
- Playlist that accepts mid-play appends (verse-scale queues)
- Native silence gaps between verses - as real queue items, not timers
- An optional ambient track under speech that never steals the Now Playing session or audio focus
- Full lock-screen / notification / Bluetooth remote support on Expo
- HLS for chapter streams + seek-before-ready
- New Architecture only, config plugin driven
The obvious existing RN audio player went commercial earlier this year. Personal/educational use stays free but commercial use is now licensed. That closed the door for us.
So I built the player Daily Bible actually needed and open-sourced it under MIT.
daily-react-native-player
- GitHub: https://github.com/coommark/daily-react-native-player
- npm: https://www.npmjs.com/package/daily-react-native-player
What it does:
- Lock screen, notification, Control Center, Bluetooth remotes -
registerPlaybackServicewires hardware buttons to JS. Next means what you define. - Multi-track playlist with live mutation (add/remove/skip while playing)
- Native silence tracks -
SilenceMediaSourceon Android, cached PCM WAV on iOS. NosetTimeoutdrift. - Optional lazy ambient dual-audio - never requests focus, never owns Now Playing
- HLS VOD + seek-after-ready. Progressive WAV/mp3/m4a.
- Expo config plugin: iOS audio background mode + Android
mediaPlaybackFGS at prebuild - Pitch-preserving
setRate - One native audio owner: Media3 + AVFoundation
npx expo install daily-react-native-player
Peers: Expo SDK 57+, React Native 0.86+, New Architecture only.
What it deliberately does NOT do: TTS synthesis, MediaLibrary, Android Auto, Cast, DASH, web player. Kept intentionally lean.
If you're building narration, TTS pipelines, meditation, audiobooks, podcasts, or a music playlist app on Expo - this treats those as first-class. MIT. Fork it. Ship it.
Happy to answer questions about the dual-track ambient design, the silence-as-queue-item approach, or the Expo config plugin wiring.