🚀 Launch Week Day 4:Introducing the Alert Details Page: A Better Way to Explore Alerts.Learn More
Socket
Book a DemoInstallSign in
Socket

use-simple-camera

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

use-simple-camera

Production-ready React Hooks for Camera, Video Recording, QR/Barcode Scanning, Motion Detection, and Audio Analysis. Zero dependencies, fully typed, and easy to use.

latest
Source
npmnpm
Version
2.0.1
Version published
Maintainers
1
Created
Source

🎥 Use Simple Camera

NPM Version Build Status Minzipped Size Dependencies TypeScript License: MIT Style: Biome Socket Badge npm downloads PRs Welcome FOSSA Status Snyk

Gitpod Ready semantic-release Contributor Covenant

Use Simple Camera is a production-ready, zero-dependency React hook library for comprehensive camera and media handling. It provides a robust set of hooks for video recording, local/remote storage, computer vision (barcodes, motion detection), and hardware controls (zoom, flash, pan, tilt).

✨ Features

  • 📸 Easy Camera Access: Simple API to get camera stream, switch cameras, and capture images.
  • 🎥 Video Recording: Record video/audio blobs with MediaRecorder API.
  • 💾 Storage: Save recordings to IndexedDB or upload via XHR/S3.
  • 🔍 Computer Vision: Built-in hooks for Barcode detection and Motion detection.
  • 🛠 Hardware Controls: Control Zoom, Flash, Pan, and Tilt if supported.
  • 🎙 Audio Utilities: Monitor microphone volume levels in real-time.
  • 📱 Orientation: Detect device orientation for responsive UI.
  • 🌲 Tree Shakeable: Import only the hooks you need.

📦 Installation

npm install /use-simple-camera
# or
pnpm add /use-simple-camera
# or
yarn add /use-simple-camera

Quick Start

The useSimpleCamera hook is the entry point that composes most features, but you can use individual hooks as standalone primitives.

import { useSimpleCamera } from "/use-simple-camera";

const App = () => {
  const { stream, ref, error, startCamera, captureImage } = useSimpleCamera();
  
  if (error) return <p>Error: {error.message}</p>;

  return (
    <div>
       <video ref={ref} autoPlay muted playsInline />
       <button onClick={() => captureImage()}>Take Photo</button>
    </div>
  );
};

📚 API Documentation

1. useSimpleCamera

The main hook for managing camera lifecycle, permissions, and stream state.

PropertyTypeDescription
streamMediaStream | nullThe active camera stream.
startCamera(constraints?) => PromiseManually starts the camera.
stopCamera() => voidStops all tracks and releases camera.
captureImage(options?) => stringCaptures a base64 image.
errorCameraError | nullTyped error object if something fails.
isCameraActivebooleanTrue if stream is active.
switchCamera() => voidToggles between front and back cameras.

2. useRecorder

Handles video and audio recording with support for separate streams and callbacks.

import { useRecorder } from "use-simple-camera";
const { startRecording, stopRecording, isRecording } = useRecorder(stream);
PropertyTypeDescription
startRecording(options?) => voidStarts recording media. Options: mode, onComplete.
stopRecording() => voidStops recording and triggers onComplete with blob.
takeSnapshot() => Promise<Blob>Captures a high-res still photo.

3. useStorage

Manage local persistence (IndexedDB) and remote uploads (S3/XHR).

import { useStorage } from "use-simple-camera";
const { saveToLocal, uploadToRemote } = useStorage();
PropertyTypeDescription
saveToLocal(blob, name, opts) => PromiseSave blob to IndexedDB with optional retention.
getFromLocal(name) => Promise<Blob>Retrieve blob from IndexedDB.
uploadToRemote(blob, opts) => PromiseUpload to signed URL. Options: headers, timeout, etc.

4. useCameraControls

Control hardware features like Zoom, Flash, Pan, and Tilt.

import { useCameraControls } from "use-simple-camera";
const { zoom, setZoom, flash, setFlash, supports } = useCameraControls(stream);

5. useBarcodeScanner

Detects QR codes and Barcodes in real-time.

const { barcodes, isScanning } = useBarcodeScanner(stream, { formats: ['qr_code'] });

6. useMotionDetection

Detects movement in the video feed using pixel differencing.

const { motionDetected } = useMotionDetection(stream, { threshold: 10 });

7. useAudioLevel

Monitors real-time microphone volume.

const { volume } = useAudioLevel(stream); // 0-100

8. useOrientation

Tracks device screen orientation.

const { orientation, angle } = useOrientation(); // 'portrait' | 'landscape'

9. useMediaDevices

Enumerates available audio and video inputs.

const { videoDevices, audioDevices } = useMediaDevices();

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📄 License

This project is licensed under the MIT License.

Keywords

react

FAQs

Package last updated on 09 Jan 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts