Package Exports
- @supercorp/use-audio-capture
Readme
ποΈ use-audio-capture
A lightweight, zero-dependency React hook for audio recording using native Web APIs (MediaRecorder, getUserMedia). Perfect for building voice notes, podcasts, interviews, and real-time audio processing applications in React.
π Why use-audio-capture?
Stop struggling with complex audio libraries! This React hook leverages native browser APIs to provide:
- π― Simple API - Start recording with just one function call
- πͺΆ Lightweight - Zero external dependencies, uses native Web APIs
- π§ TypeScript Support - Fully typed for excellent developer experience
- ποΈ Full Control - Start, stop, pause, resume recordings programmatically
- π Real-time Data - Access audio chunks as they're recorded
- π¨ Error Handling - Built-in error management for robust applications
- π Cross-browser - Works in all modern browsers supporting MediaRecorder API
π¦ Installation
npm install use-audio-captureyarn add use-audio-capturepnpm add use-audio-captureπ― Use Cases
Perfect for building:
- ποΈ Voice note applications
- π§ Podcast recording tools
- π Interview and meeting recorders
- π΅ Music practice apps
- π£οΈ Voice memos and dictation tools
- π± Audio chat applications
- π¬ Content creation platforms
- π Audio feedback systems
- π€ Karaoke and singing apps
- π Language learning tools with pronunciation
π Quick Start
Basic Audio Recording
import { useAudioCapture } from 'use-audio-capture';
export const VoiceRecorder = () => {
const { start, stop, pause, resume } = useAudioCapture({
onStart: () => console.log('ποΈ Recording started'),
onChunk: (blobEvent) => console.log('Blob event here'),
onStop: (event, chunks) => {
// You can create audio file from recorded chunks on stop
const blob = new Blob(chunks, { type: chunks[0].type });
const file = new File([blob], 'sampleFile.webm', {
type: chunks[0].type,
});
console.log(file);
},
onError: (_event, { error }) => {
console.error('Recording error:', error);
},
});
return (
<div>
<button onClick={start}>ποΈ Start Recording</button>
<button onClick={stop}>βΉοΈ Stop</button>
<button onClick={pause}>βΈοΈ Pause</button>
<button onClick={resume}>βΆοΈ Resume</button>
</div>
);
};π See Live Example | π¨ Storybook Demo
More Advanced Example
Component example built based on use-audio-capture hook - See live example
π API Reference
Hook Usage
const { start, stop, pause, resume } = useAudioCapture(options);Available Functions
| Function | Description | Usage |
|---|---|---|
start() |
Start audio recording | await start() |
stop() |
Stop recording and trigger onStop callback | await stop() |
pause() |
Pause current recording session | await pause() |
resume() |
Resume paused recording | await resume() |
Callback Options
| Callback | Triggered When | Parameters |
|---|---|---|
onStart |
Recording begins | (event, { mediaStream }) |
onChunk |
New audio data available | (blobEvent, { mediaStream }) |
onStop |
Recording stops | (event, chunks[], { mediaStream }) |
onPause |
Recording paused | (event, chunks[], { mediaStream }) |
onResume |
Recording resumed | (event, chunks[], { mediaStream }) |
onError |
Error occurs | (event, { mediaStream, error }) |
π Browser Support
This hook works in all modern browsers that support:
| Browser | Support |
|---|---|
| Chrome | β 47+ |
| Firefox | β 29+ |
| Safari | β 14+ |
| Edge | β 79+ |
π License
MIT Β© breeg554
Keywords: react hook, audio recording, web api, mediarecorder, getusermedia, voice notes, podcast, interview, real-time audio, browser recording, typescript, react audio, voice recorder, audio capture, microphone access