A React Native library for recording audio on iOS and Android with configurable encoding and quality.
react-native-audio is a React Native library that provides audio recording capabilities for iOS and Android applications. It solves the problem of capturing audio in mobile apps by offering a cross-platform API with configurable encoding, quality, and metering options. The library handles native permissions and file management, simplifying audio capture in React Native projects.
React Native developers building mobile applications that require audio recording features, such as voice memos, interviews, or audio note-taking apps.
Developers choose react-native-audio for its straightforward API, cross-platform consistency, and fine-grained control over audio settings without the overhead of playback functionality. It integrates seamlessly with React Native's ecosystem and defers playback to specialized libraries.
Audio recorder library for React Native
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a unified JavaScript API for recording on both iOS and Android, reducing the need for platform-specific code and simplifying development.
Allows fine-grained control over sample rates, channels, and encoding formats like AAC and AMR, as detailed in the usage examples for precise audio capture.
Supports current and peak audio level monitoring via MeteringEnabled, enabling features like volume visualization during recording, though limited to iOS.
Includes an IncludeBase64 flag to output audio data as base64 in events, useful for quick processing without file operations, though with performance caveats.
The project is no longer actively maintained by the original author, meaning no bug fixes, security updates, or support for newer React Native versions.
Features like audio metering are iOS-only, and encoding support varies between platforms (e.g., AAC on both, but AMR specifics differ), limiting cross-platform consistency.
Requires manual native configuration (e.g., editing Info.plist and AndroidManifest.xml) and has breaking changes across React Native versions, complicating integration and upgrades.