Skip to content

Cap-go/capacitor-audio-recorder

@capgo/capacitor-audio-recorder

Capgo - Instant updates for capacitor

Capture audio clips across iOS, Android, and the Web with a consistent Capacitor API.

Why Capacitor Audio Recorder?

The only free and up-to-date audio recording plugin for Capacitor:

  • Same JavaScript API - Compatible interface with paid plugins
  • Full feature set - Pause/resume, configurable bitrates, sample rates
  • Cross-platform - iOS, Android, and Web support
  • Modern implementation - Uses latest platform APIs
  • Event listeners - Real-time recording status and error handling

Perfect for voice memo apps, audio messaging, podcast recording, and any app needing audio capture.

Documentation

The most complete doc is available here: https://capgo.app/docs/plugins/audio-recorder/

Install

npm install @capgo/capacitor-audio-recorder
npx cap sync

API

Capacitor plugin contract for recording audio.

startRecording(...)

startRecording(options?: StartRecordingOptions | undefined) => Promise<void>

Start recording audio using the device microphone.

Param Type Description
options StartRecordingOptions Recording configuration options.

Since: 1.0.0


pauseRecording()

pauseRecording() => Promise<void>

Pause the ongoing recording. Only available on Android (API 24+), iOS, and Web.

Since: 1.0.0


resumeRecording()

resumeRecording() => Promise<void>

Resume a previously paused recording.

Since: 1.0.0


stopRecording()

stopRecording() => Promise<StopRecordingResult>

Stop the current recording and persist the recorded audio.

Returns: Promise<StopRecordingResult>

Since: 1.0.0


cancelRecording()

cancelRecording() => Promise<void>

Cancel the current recording and discard any captured audio.

Since: 1.0.0


getRecordingStatus()

getRecordingStatus() => Promise<GetRecordingStatusResult>

Retrieve the current recording status.

Returns: Promise<GetRecordingStatusResult>

Since: 1.0.0


checkPermissions()

checkPermissions() => Promise<PermissionStatus>

Return the current permission state for accessing the microphone.

Returns: Promise<PermissionStatus>

Since: 1.0.0


requestPermissions()

requestPermissions() => Promise<PermissionStatus>

Request permission to access the microphone.

Returns: Promise<PermissionStatus>

Since: 1.0.0


addListener('recordingError', ...)

addListener(eventName: 'recordingError', listenerFunc: (event: RecordingErrorEvent) => void) => Promise<PluginListenerHandle>

Listen for recording errors.

Param Type
eventName 'recordingError'
listenerFunc (event: RecordingErrorEvent) => void

Returns: Promise<PluginListenerHandle>

Since: 1.0.0


addListener('recordingPaused', ...)

addListener(eventName: 'recordingPaused', listenerFunc: () => void) => Promise<PluginListenerHandle>

Listen for pause events emitted when a recording is paused.

Param Type
eventName 'recordingPaused'
listenerFunc () => void

Returns: Promise<PluginListenerHandle>

Since: 1.0.0


addListener('recordingStopped', ...)

addListener(eventName: 'recordingStopped', listenerFunc: (event: RecordingStoppedEvent) => void) => Promise<PluginListenerHandle>

Listen for recording completion events.

Param Type
eventName 'recordingStopped'
listenerFunc (event: StopRecordingResult) => void

Returns: Promise<PluginListenerHandle>

Since: 1.0.0


removeAllListeners()

removeAllListeners() => Promise<void>

Remove all registered listeners.

Since: 1.0.0


getPluginVersion()

getPluginVersion() => Promise<{ version: string; }>

Get the native Capacitor plugin version.

Returns: Promise<{ version: string; }>

Since: 1.0.0


Interfaces

StartRecordingOptions

Options accepted by {@link CapacitorAudioRecorderPlugin.startRecording}.

Prop Type Description Since
audioSessionCategoryOptions AudioSessionCategoryOption[] The audio session category options for recording. Only available on iOS. 1.0.0
audioSessionMode AudioSessionMode The audio session mode for recording. Only available on iOS. 1.0.0
bitRate number The audio bit rate in bytes per second. Only available on Android and iOS. 1.0.0
sampleRate number The audio sample rate in Hz. Only available on Android and iOS. 1.0.0

StopRecordingResult

Result returned by {@link CapacitorAudioRecorderPlugin.stopRecording}.

Prop Type Description Since
blob Blob The recorded audio as a Blob. Only available on Web. 1.0.0
duration number The duration of the recording in milliseconds. 1.0.0
uri string The URI pointing to the recorded file. Only available on Android and iOS. 1.0.0

GetRecordingStatusResult

Result returned by {@link CapacitorAudioRecorderPlugin.getRecordingStatus}.

Prop Type Description Since
status RecordingStatus The current recording status. 1.0.0

PermissionStatus

Permission information returned by {@link CapacitorAudioRecorderPlugin.checkPermissions} and {@link CapacitorAudioRecorderPlugin.requestPermissions}.

Prop Type Description Since
recordAudio PermissionState The permission state for audio recording. 1.0.0

PluginListenerHandle

Prop Type
remove () => Promise<void>

RecordingErrorEvent

Event emitted when an error occurs during recording.

Prop Type Description Since
message string The error message. 1.0.0

Type Aliases

PermissionState

'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'

RecordingStoppedEvent

Event emitted when a recording completes.

StopRecordingResult

Enums

AudioSessionCategoryOption

Members Value
AllowAirPlay 'ALLOW_AIR_PLAY'
AllowBluetooth 'ALLOW_BLUETOOTH'
AllowBluetoothA2DP 'ALLOW_BLUETOOTH_A2DP'
DefaultToSpeaker 'DEFAULT_TO_SPEAKER'
DuckOthers 'DUCK_OTHERS'
InterruptSpokenAudioAndMixWithOthers 'INTERRUPT_SPOKEN_AUDIO_AND_MIX_WITH_OTHERS'
MixWithOthers 'MIX_WITH_OTHERS'
OverrideMutedMicrophoneInterruption 'OVERRIDE_MUTED_MICROPHONE_INTERRUPTION'

AudioSessionMode

Members Value
Default 'DEFAULT'
GameChat 'GAME_CHAT'
Measurement 'MEASUREMENT'
SpokenAudio 'SPOKEN_AUDIO'
VideoChat 'VIDEO_CHAT'
VideoRecording 'VIDEO_RECORDING'
VoiceChat 'VOICE_CHAT'

RecordingStatus

Members Value
Inactive 'INACTIVE'
Recording 'RECORDING'
Paused 'PAUSED'

Credit

This plugin was inspired from: https://github.com/kesha-antonov/react-native-background-downloader

About

Capacitor plugin to record audio on iOS and Android, keep active in background

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 5