npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, πŸ‘‹, I’m Ryan HefnerΒ  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you πŸ™

Β© 2025 – Pkg Stats / Ryan Hefner

@supercorp/use-audio-capture

v1.0.1

Published

πŸŽ™οΈ A lightweight React hook for audio recording using native Web APIs (MediaRecorder, getUserMedia). Start, stop, pause, resume audio recordings with customizable callbacks. Perfect for voice notes, interviews, podcasts, and real-time audio processing in

Readme

πŸŽ™οΈ use-audio-capture

npm version License: MIT TypeScript

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-capture
yarn add use-audio-capture
pnpm 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