A fully fledged audio module created for music apps. Provides audio playback, external media controls, chromecast support, background mode and more!
- Lightweight - Optimized to use the least amount of resources according to your needs
- Feels native - As everything is built together, it follows the same design principles as real music apps do
- Multi-platform - Supports Android, iOS and Windows
- Media Controls support - Provides events for controlling the app from a bluetooth device, the lockscreen, a notification, a smartwatch or even a car
- Local or network, files or streams - It doesn't matter where the media belongs, we've got you covered
- Casting support - Seamlessly switch to any Google Cast compatible device, supporting custom media receivers
- Adaptive bitrate streaming support - Support for DASH, HLS or SmoothStreaming
- Caching support - Cache media files to play them again without an internet connection
- Background support - Keep playing audio even after the app is in background
- Fully Customizable - Even the notification icons are customizable!
- Supports React Hooks 🎣 - Includes React Hooks for common use-cases so you don't have to write them
|Load from the app bundle||✓||✓||✓|
|Load from the network||✓||✓||✓|
|Load from the file system||✓||✓||✓|
|Adaptive Bitrate Streaming||✓||✓||✓|
|Remote Media Controls||✓||✓||✓|
Check Platform Support for more information.
Why another music module?
After trying to team up modules like
react-native-google-cast, I've noticed that their structure and the way should be tied together can cause a lot problems (mainly on Android). Those can heavily affect the app stability and user experience.
All audio modules (like
react-native-sound) don't play in a separated service on Android, which should only be used for simple audio tracks in foreground (such as sound effects, voice messages, etc)
react-native-music-controls is meant for apps using those audio modules, although it has a few problems due to how the audio is not directly tied to the controls, it can be pretty useful for casting (such as Chromecast)
react-native-google-cast works pretty well and also supports custom receivers, but it has fewer player controls, it's harder to integrate and still uses the Cast SDK v2
;// Creates the playerTrackPlayer;
You can find us as part of the React Native Folks Discord in the
Support the development
Support the further development of this and other libraries.