{"id":46274359,"url":"https://github.com/cap-go/capacitor-audio-recorder","last_synced_at":"2026-03-04T04:02:40.815Z","repository":{"id":321361647,"uuid":"1084008196","full_name":"Cap-go/capacitor-audio-recorder","owner":"Cap-go","description":"Capacitor plugin to record audio on iOS and Android, keep active in background","archived":false,"fork":false,"pushed_at":"2026-02-20T03:11:39.000Z","size":842,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-20T06:47:23.569Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cap-go.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"Cap-go","patreon":null,"open_collective":"capgo","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2025-10-27T04:52:41.000Z","updated_at":"2026-02-20T03:11:43.000Z","dependencies_parsed_at":"2025-12-19T21:04:05.706Z","dependency_job_id":null,"html_url":"https://github.com/Cap-go/capacitor-audio-recorder","commit_stats":null,"previous_names":["cap-go/capacitor-audio-recorder"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/Cap-go/capacitor-audio-recorder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-audio-recorder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-audio-recorder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-audio-recorder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-audio-recorder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cap-go","download_url":"https://codeload.github.com/Cap-go/capacitor-audio-recorder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapacitor-audio-recorder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30071670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T03:25:38.285Z","status":"ssl_error","status_checked_at":"2026-03-04T03:25:05.086Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-04T04:02:30.996Z","updated_at":"2026-03-04T04:02:40.809Z","avatar_url":"https://github.com/Cap-go.png","language":"Swift","funding_links":["https://github.com/sponsors/Cap-go","https://opencollective.com/capgo"],"categories":[],"sub_categories":[],"readme":"# @capgo/capacitor-audio-recorder\n \u003ca href=\"https://capgo.app/\"\u003e\u003cimg src='https://raw.githubusercontent.com/Cap-go/capgo/main/assets/capgo_banner.png' alt='Capgo - Instant updates for capacitor'/\u003e\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003e\u003ca href=\"https://capgo.app/?ref=plugin_audio_recorder\"\u003e ➡️ Get Instant updates for your App with Capgo\u003c/a\u003e\u003c/h2\u003e\n  \u003ch2\u003e\u003ca href=\"https://capgo.app/consulting/?ref=plugin_audio_recorder\"\u003e Missing a feature? We’ll build the plugin for you 💪\u003c/a\u003e\u003c/h2\u003e\n\u003c/div\u003e\n\n\nCapture audio clips across iOS, Android, and the Web with a consistent Capacitor API.\n\n## Why Capacitor Audio Recorder?\n\nThe only **free** and **up-to-date** audio recording plugin for Capacitor:\n\n- **Same JavaScript API** - Compatible interface with paid plugins\n- **Full feature set** - Pause/resume, configurable bitrates, sample rates\n- **Cross-platform** - iOS, Android, and Web support\n- **Modern implementation** - Uses latest platform APIs\n- **Event listeners** - Real-time recording status and error handling\n\nPerfect for voice memo apps, audio messaging, podcast recording, and any app needing audio capture.\n\n## Documentation\n\nThe most complete doc is available here: https://capgo.app/docs/plugins/audio-recorder/\n\n## Compatibility\n\n| Plugin version | Capacitor compatibility | Maintained |\n| -------------- | ----------------------- | ---------- |\n| v8.\\*.\\*       | v8.\\*.\\*                | ✅          |\n| v7.\\*.\\*       | v7.\\*.\\*                | On demand   |\n| v6.\\*.\\*       | v6.\\*.\\*                | ❌          |\n| v5.\\*.\\*       | v5.\\*.\\*                | ❌          |\n\n\u003e **Note:** The major version of this plugin follows the major version of Capacitor. Use the version that matches your Capacitor installation (e.g., plugin v8 for Capacitor 8). Only the latest major version is actively maintained.\n\n## Install\n\n```bash\nnpm install @capgo/capacitor-audio-recorder\nnpx cap sync\n```\n\n## API\n\n\u003cdocgen-index\u003e\n\n* [`startRecording(...)`](#startrecording)\n* [`pauseRecording()`](#pauserecording)\n* [`resumeRecording()`](#resumerecording)\n* [`stopRecording()`](#stoprecording)\n* [`cancelRecording()`](#cancelrecording)\n* [`getRecordingStatus()`](#getrecordingstatus)\n* [`checkPermissions()`](#checkpermissions)\n* [`requestPermissions()`](#requestpermissions)\n* [`addListener('recordingError', ...)`](#addlistenerrecordingerror-)\n* [`addListener('recordingPaused', ...)`](#addlistenerrecordingpaused-)\n* [`addListener('recordingStopped', ...)`](#addlistenerrecordingstopped-)\n* [`removeAllListeners()`](#removealllisteners)\n* [`getPluginVersion()`](#getpluginversion)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n* [Enums](#enums)\n\n\u003c/docgen-index\u003e\n\n\u003cdocgen-api\u003e\n\u003c!--Update the source file JSDoc comments and rerun docgen to update the docs below--\u003e\n\nCapacitor plugin contract for recording audio.\n\n### startRecording(...)\n\n```typescript\nstartRecording(options?: StartRecordingOptions | undefined) =\u003e Promise\u003cvoid\u003e\n```\n\nStart recording audio using the device microphone.\n\n| Param         | Type                                                                    | Description                      |\n| ------------- | ----------------------------------------------------------------------- | -------------------------------- |\n| **`options`** | \u003ccode\u003e\u003ca href=\"#startrecordingoptions\"\u003eStartRecordingOptions\u003c/a\u003e\u003c/code\u003e | Recording configuration options. |\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### pauseRecording()\n\n```typescript\npauseRecording() =\u003e Promise\u003cvoid\u003e\n```\n\nPause the ongoing recording. Only available on Android (API 24+), iOS, and Web.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### resumeRecording()\n\n```typescript\nresumeRecording() =\u003e Promise\u003cvoid\u003e\n```\n\nResume a previously paused recording.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### stopRecording()\n\n```typescript\nstopRecording() =\u003e Promise\u003cStopRecordingResult\u003e\n```\n\nStop the current recording and persist the recorded audio.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#stoprecordingresult\"\u003eStopRecordingResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### cancelRecording()\n\n```typescript\ncancelRecording() =\u003e Promise\u003cvoid\u003e\n```\n\nCancel the current recording and discard any captured audio.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getRecordingStatus()\n\n```typescript\ngetRecordingStatus() =\u003e Promise\u003cGetRecordingStatusResult\u003e\n```\n\nRetrieve the current recording status.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#getrecordingstatusresult\"\u003eGetRecordingStatusResult\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### checkPermissions()\n\n```typescript\ncheckPermissions() =\u003e Promise\u003cPermissionStatus\u003e\n```\n\nReturn the current permission state for accessing the microphone.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#permissionstatus\"\u003ePermissionStatus\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### requestPermissions()\n\n```typescript\nrequestPermissions() =\u003e Promise\u003cPermissionStatus\u003e\n```\n\nRequest permission to access the microphone.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#permissionstatus\"\u003ePermissionStatus\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### addListener('recordingError', ...)\n\n```typescript\naddListener(eventName: 'recordingError', listenerFunc: (event: RecordingErrorEvent) =\u003e void) =\u003e Promise\u003cPluginListenerHandle\u003e\n```\n\nListen for recording errors.\n\n| Param              | Type                                                                                    |\n| ------------------ | --------------------------------------------------------------------------------------- |\n| **`eventName`**    | \u003ccode\u003e'recordingError'\u003c/code\u003e                                                           |\n| **`listenerFunc`** | \u003ccode\u003e(event: \u003ca href=\"#recordingerrorevent\"\u003eRecordingErrorEvent\u003c/a\u003e) =\u0026gt; void\u003c/code\u003e |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#pluginlistenerhandle\"\u003ePluginListenerHandle\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### addListener('recordingPaused', ...)\n\n```typescript\naddListener(eventName: 'recordingPaused', listenerFunc: () =\u003e void) =\u003e Promise\u003cPluginListenerHandle\u003e\n```\n\nListen for pause events emitted when a recording is paused.\n\n| Param              | Type                           |\n| ------------------ | ------------------------------ |\n| **`eventName`**    | \u003ccode\u003e'recordingPaused'\u003c/code\u003e |\n| **`listenerFunc`** | \u003ccode\u003e() =\u0026gt; void\u003c/code\u003e     |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#pluginlistenerhandle\"\u003ePluginListenerHandle\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### addListener('recordingStopped', ...)\n\n```typescript\naddListener(eventName: 'recordingStopped', listenerFunc: (event: RecordingStoppedEvent) =\u003e void) =\u003e Promise\u003cPluginListenerHandle\u003e\n```\n\nListen for recording completion events.\n\n| Param              | Type                                                                                    |\n| ------------------ | --------------------------------------------------------------------------------------- |\n| **`eventName`**    | \u003ccode\u003e'recordingStopped'\u003c/code\u003e                                                         |\n| **`listenerFunc`** | \u003ccode\u003e(event: \u003ca href=\"#stoprecordingresult\"\u003eStopRecordingResult\u003c/a\u003e) =\u0026gt; void\u003c/code\u003e |\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;\u003ca href=\"#pluginlistenerhandle\"\u003ePluginListenerHandle\u003c/a\u003e\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### removeAllListeners()\n\n```typescript\nremoveAllListeners() =\u003e Promise\u003cvoid\u003e\n```\n\nRemove all registered listeners.\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### getPluginVersion()\n\n```typescript\ngetPluginVersion() =\u003e Promise\u003c{ version: string; }\u003e\n```\n\nGet the native Capacitor plugin version.\n\n**Returns:** \u003ccode\u003ePromise\u0026lt;{ version: string; }\u0026gt;\u003c/code\u003e\n\n**Since:** 1.0.0\n\n--------------------\n\n\n### Interfaces\n\n\n#### StartRecordingOptions\n\nOptions accepted by {@link CapacitorAudioRecorderPlugin.startRecording}.\n\n| Prop                              | Type                                                          | Description                                                                | Since |\n| --------------------------------- | ------------------------------------------------------------- | -------------------------------------------------------------------------- | ----- |\n| **`audioSessionCategoryOptions`** | \u003ccode\u003eAudioSessionCategoryOption[]\u003c/code\u003e                     | The audio session category options for recording. Only available on iOS.   | 1.0.0 |\n| **`audioSessionMode`**            | \u003ccode\u003e\u003ca href=\"#audiosessionmode\"\u003eAudioSessionMode\u003c/a\u003e\u003c/code\u003e | The audio session mode for recording. Only available on iOS.               | 1.0.0 |\n| **`bitRate`**                     | \u003ccode\u003enumber\u003c/code\u003e                                           | The audio bit rate in bytes per second. Only available on Android and iOS. | 1.0.0 |\n| **`sampleRate`**                  | \u003ccode\u003enumber\u003c/code\u003e                                           | The audio sample rate in Hz. Only available on Android and iOS.            | 1.0.0 |\n\n\n#### StopRecordingResult\n\nResult returned by {@link CapacitorAudioRecorderPlugin.stopRecording}.\n\n| Prop           | Type                | Description                                                               | Since |\n| -------------- | ------------------- | ------------------------------------------------------------------------- | ----- |\n| **`blob`**     | \u003ccode\u003eBlob\u003c/code\u003e   | The recorded audio as a Blob. Only available on Web.                      | 1.0.0 |\n| **`duration`** | \u003ccode\u003enumber\u003c/code\u003e | The duration of the recording in milliseconds.                            | 1.0.0 |\n| **`uri`**      | \u003ccode\u003estring\u003c/code\u003e | The URI pointing to the recorded file. Only available on Android and iOS. | 1.0.0 |\n\n\n#### GetRecordingStatusResult\n\nResult returned by {@link CapacitorAudioRecorderPlugin.getRecordingStatus}.\n\n| Prop         | Type                                                        | Description                   | Since |\n| ------------ | ----------------------------------------------------------- | ----------------------------- | ----- |\n| **`status`** | \u003ccode\u003e\u003ca href=\"#recordingstatus\"\u003eRecordingStatus\u003c/a\u003e\u003c/code\u003e | The current recording status. | 1.0.0 |\n\n\n#### PermissionStatus\n\nPermission information returned by {@link CapacitorAudioRecorderPlugin.checkPermissions}\nand {@link CapacitorAudioRecorderPlugin.requestPermissions}.\n\n| Prop              | Type                                                        | Description                               | Since |\n| ----------------- | ----------------------------------------------------------- | ----------------------------------------- | ----- |\n| **`recordAudio`** | \u003ccode\u003e\u003ca href=\"#permissionstate\"\u003ePermissionState\u003c/a\u003e\u003c/code\u003e | The permission state for audio recording. | 1.0.0 |\n\n\n#### PluginListenerHandle\n\n| Prop         | Type                                      |\n| ------------ | ----------------------------------------- |\n| **`remove`** | \u003ccode\u003e() =\u0026gt; Promise\u0026lt;void\u0026gt;\u003c/code\u003e |\n\n\n#### RecordingErrorEvent\n\nEvent emitted when an error occurs during recording.\n\n| Prop          | Type                | Description        | Since |\n| ------------- | ------------------- | ------------------ | ----- |\n| **`message`** | \u003ccode\u003estring\u003c/code\u003e | The error message. | 1.0.0 |\n\n\n### Type Aliases\n\n\n#### PermissionState\n\n\u003ccode\u003e'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'\u003c/code\u003e\n\n\n#### RecordingStoppedEvent\n\nEvent emitted when a recording completes.\n\n\u003ccode\u003e\u003ca href=\"#stoprecordingresult\"\u003eStopRecordingResult\u003c/a\u003e\u003c/code\u003e\n\n\n### Enums\n\n\n#### AudioSessionCategoryOption\n\n| Members                                    | Value                                                     |\n| ------------------------------------------ | --------------------------------------------------------- |\n| **`AllowAirPlay`**                         | \u003ccode\u003e'ALLOW_AIR_PLAY'\u003c/code\u003e                             |\n| **`AllowBluetooth`**                       | \u003ccode\u003e'ALLOW_BLUETOOTH'\u003c/code\u003e                            |\n| **`AllowBluetoothA2DP`**                   | \u003ccode\u003e'ALLOW_BLUETOOTH_A2DP'\u003c/code\u003e                       |\n| **`DefaultToSpeaker`**                     | \u003ccode\u003e'DEFAULT_TO_SPEAKER'\u003c/code\u003e                         |\n| **`DuckOthers`**                           | \u003ccode\u003e'DUCK_OTHERS'\u003c/code\u003e                                |\n| **`InterruptSpokenAudioAndMixWithOthers`** | \u003ccode\u003e'INTERRUPT_SPOKEN_AUDIO_AND_MIX_WITH_OTHERS'\u003c/code\u003e |\n| **`MixWithOthers`**                        | \u003ccode\u003e'MIX_WITH_OTHERS'\u003c/code\u003e                            |\n| **`OverrideMutedMicrophoneInterruption`**  | \u003ccode\u003e'OVERRIDE_MUTED_MICROPHONE_INTERRUPTION'\u003c/code\u003e     |\n\n\n#### AudioSessionMode\n\n| Members              | Value                          |\n| -------------------- | ------------------------------ |\n| **`Default`**        | \u003ccode\u003e'DEFAULT'\u003c/code\u003e         |\n| **`GameChat`**       | \u003ccode\u003e'GAME_CHAT'\u003c/code\u003e       |\n| **`Measurement`**    | \u003ccode\u003e'MEASUREMENT'\u003c/code\u003e     |\n| **`SpokenAudio`**    | \u003ccode\u003e'SPOKEN_AUDIO'\u003c/code\u003e    |\n| **`VideoChat`**      | \u003ccode\u003e'VIDEO_CHAT'\u003c/code\u003e      |\n| **`VideoRecording`** | \u003ccode\u003e'VIDEO_RECORDING'\u003c/code\u003e |\n| **`VoiceChat`**      | \u003ccode\u003e'VOICE_CHAT'\u003c/code\u003e      |\n\n\n#### RecordingStatus\n\n| Members         | Value                    |\n| --------------- | ------------------------ |\n| **`Inactive`**  | \u003ccode\u003e'INACTIVE'\u003c/code\u003e  |\n| **`Recording`** | \u003ccode\u003e'RECORDING'\u003c/code\u003e |\n| **`Paused`**    | \u003ccode\u003e'PAUSED'\u003c/code\u003e    |\n\n\u003c/docgen-api\u003e\n\n### Credit\n\nThis plugin was inspired from: https://github.com/kesha-antonov/react-native-background-downloader\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcap-go%2Fcapacitor-audio-recorder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcap-go%2Fcapacitor-audio-recorder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcap-go%2Fcapacitor-audio-recorder/lists"}