---
title: "Client (React Native) | Micdrop"
description: "Run a real-time voice conversation on iOS and Android, with the microphone, the audio session, voice activity detection and the WebSocket handled for you."
url: "https://micdrop.dev/docs/react-native"
---

*   [Getting Started](/docs/getting-started)
*   [Client (Browser)](/docs/client)
    
    *   [Installation](/docs/client/installation)
    *   [React Hooks](/docs/client/react-hooks)
    *   [Start/Stop Call](/docs/client/start-stop-call)
    *   [Pause/Resume Call](/docs/client/pause-resume-call)
    *   [Mute/Unmute Call](/docs/client/mute-unmute-call)
    *   [Call State](/docs/client/call-state)
    *   [Display Conversation Messages](/docs/client/display-conversation-messages)
    *   [Handling Tool Calls](/docs/client/handling-tool-calls)
    *   [Device Management](/docs/client/devices-management)
    *   [Voice Activity Detection (VAD)](/docs/client/vad)
    *   [Error Handling](/docs/client/error-handling)
    *   Utility Classes
        
        *   [Mic](/docs/client/utility-classes/mic)
        *   [MicdropClient](/docs/client/utility-classes/micdrop-client)
        *   [MicRecorder](/docs/client/utility-classes/mic-recorder)
        *   [Speaker](/docs/client/utility-classes/speaker)
        
    
*   [Client (React Native)](/docs/react-native)
    
    *   [Installation](/docs/react-native/installation)
    *   [Hooks and Call State](/docs/react-native/hooks)
    *   [Audio Output and Devices](/docs/react-native/audio-output)
    *   [Voice Activity Detection (VAD)](/docs/react-native/vad)
    *   [Using Another Audio Library](/docs/react-native/custom-audio)
    
*   [Server (Node.js)](/docs/server)
    
    *   [Installation](/docs/server/installation)
    *   [With Fastify](/docs/server/with-fastify)
    *   [With NestJS](/docs/server/with-nestjs)
    *   [Auth and Parameters](/docs/server/auth-and-parameters)
    *   [First Message](/docs/server/first-message)
    *   [Save Messages](/docs/server/save-messages)
    *   [Resume a Conversation](/docs/server/resume-conversation)
    *   [Recording Audio](/docs/server/recording-audio)
    *   [Error Handling](/docs/server/error-handling)
    *   [Tools](/docs/server/tools)
    *   [Extract Value from Answer](/docs/server/extract)
    *   [Auto End Call](/docs/server/auto-end-call)
    *   [Semantic Turn Detection](/docs/server/semantic-turn-detection)
    *   [Noise Filtering](/docs/server/noise-filtering)
    *   [Micdrop Protocol](/docs/server/protocol)
    
*   [AI Integrations](/docs/ai-integration)
    
    *   Provided Integrations
        
        *   [AI SDK](/docs/ai-integration/provided-integrations/ai-sdk)
        *   [Cartesia](/docs/ai-integration/provided-integrations/cartesia)
        *   [ElevenLabs](/docs/ai-integration/provided-integrations/elevenlabs)
        *   [Gladia](/docs/ai-integration/provided-integrations/gladia)
        *   [Gradium](/docs/ai-integration/provided-integrations/gradium)
        *   [Kokoro](/docs/ai-integration/provided-integrations/kokoro)
        *   [Mistral](/docs/ai-integration/provided-integrations/mistral)
        *   [OpenAI](/docs/ai-integration/provided-integrations/openai)
        *   [Piper](/docs/ai-integration/provided-integrations/piper)
        *   [Pocket TTS](/docs/ai-integration/provided-integrations/pocket-tts)
        *   [Whisper](/docs/ai-integration/provided-integrations/whisper)
        
    *   Custom Integrations
        
        *   [Agent (LLM)](/docs/ai-integration/custom-integrations/custom-agent)
        *   [Speech-to-Text (STT)](/docs/ai-integration/custom-integrations/custom-stt)
        *   [Text-to-Speech (TTS)](/docs/ai-integration/custom-integrations/custom-tts)
        
    *   Fallback Strategies
        
        *   [FallbackAgent](/docs/ai-integration/fallback-strategies/agent-fallback)
        *   [FallbackSTT](/docs/ai-integration/fallback-strategies/stt-fallback)
        *   [FallbackTTS](/docs/ai-integration/fallback-strategies/tts-fallback)
        
    *   [Local Models](/docs/ai-integration/local-models)
        
        *   [Choosing the Models](/docs/ai-integration/local-models/choosing-models)
        *   [Latency and Memory](/docs/ai-integration/local-models/performance)
        *   [Explorations](/docs/ai-integration/local-models/explorations)
        
    *   [IA Vocale Souveraine 🇫🇷🇪🇺](/docs/ai-integration/sovereign-voice-ai)
    
*   [Migration](/docs/migration)
    
    *   [Upgrade to v3](/docs/migration/v3)
    

[Micdrop](/) › [Documentation](/docs/getting-started)

# Client (React Native)

`@micdrop/react-native` runs a Micdrop call on a phone. It records the microphone, plays the assistant voice, detects who is speaking and streams both ways over a WebSocket, against the same [server](/docs/server) a browser talks to.

## Installation

Terminal window

```
npm install @micdrop/react-native react-native-audio-api
```

Audio goes through native code, so the app runs from a development build rather than from Expo Go. See [Installation](/docs/react-native/installation) for the permissions and the config plugin.

## Quick start

```
import { useMicdropState } from '@micdrop/react'import { Micdrop } from '@micdrop/react-native'import { Button, Text, View } from 'react-native'
export default function Call() {  const state = useMicdropState()
  const handlePress = () =>    state.isStarted      ? Micdrop.stop()      : Micdrop.start({ url: 'wss://example.com/call' })
  return (    <View>      <Text>{state.isUserSpeaking ? 'Listening' : 'Your turn'}</Text>      <Button        title={state.isStarted ? 'Hang up' : 'Start the call'}        onPress={handlePress}      />    </View>  )}
```

`Micdrop.start()` asks for the microphone permission, configures the audio session for a call, opens the connection and starts listening. The rest of the app only reads the state.

## What you get

*   Microphone capture at 16 kHz, and playback of the answer as it streams in
*   [Voice activity detection](/docs/react-native/vad), on volume or with the Silero model, so the user just talks
*   Interruption: the assistant stops the moment the user starts speaking
*   Mute, pause, and a choice between the loudspeaker and the earpiece
*   Reconnection when the network drops
*   React hooks for the whole [call state](/docs/react-native/hooks)

## Same API as the browser

Everything about running a call is shared with [@micdrop/react-native](/docs/client): `start`, `stop`, `mute`, `pause`, the `StateChange` event, the conversation, the error codes. Those pages apply here, with three differences:

*   Output is a route rather than a device, see [Audio output and devices](/docs/react-native/audio-output)
*   Voice activity detection is volume based, see [Voice activity detection](/docs/react-native/vad)
*   Preferences are not persisted, the system keeps its own audio routing

## Example

The [React Native example](https://github.com/lonestone/micdrop/tree/main/examples/react-native) is a complete screen: conversation, level meters, call controls, and the Node server it talks to.

[Previous← Speaker](/docs/client/utility-classes/speaker)[NextInstallation →](/docs/react-native/installation)

On this page

*   [Installation](#installation)
*   [Quick start](#quick-start)
*   [What you get](#what-you-get)
*   [Same API as the browser](#same-api-as-the-browser)
*   [Example](#example)
