---
description: Unofficial Capacitor plugin for the RealtimeKit SDK. Add real-time audio, video, and chat to your Capacitor apps on Android, iOS, and Web.
title: Capacitor RealtimeKit Plugin for Android & iOS - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/realtimekit.png
---

<!doctype html> 

[Skip to content ](#capacitor-realtimekit-plugin) 

[📲 Introducing **Build Sharing** — get your builds onto testers' devices with a link & QR code. No account required. ](/blog/share-mobile-app-builds-with-testers/) 

* [ SDKs ](/docs/sdks/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* RealtimeKit [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ iOS ](#ios)
* [ Usage ](#usage)
* [ API ](#api)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ iOS ](#ios)
* [ Usage ](#usage)
* [ API ](#api)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)

# Capacitor RealtimeKit Plugin[¶](#capacitor-realtimekit-plugin "Permanent link")

Unofficial Capacitor plugin for using the [RealtimeKit SDK](https://docs.realtime.cloudflare.com/).[1](#fn:1)

## Use Cases[¶](#use-cases "Permanent link")

The RealtimeKit plugin is typically used to add real-time meetings to an app, for example:

* **Video meetings**: Start a meeting with the built-in meeting UI without building your own interface.
* **Audio-only calls**: Join meetings with video disabled for voice-only communication.
* **Telehealth and remote support**: Let patients or customers join video sessions authenticated with a participant token.

## Compatibility[¶](#compatibility "Permanent link")

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 0.2.x          | \>=8.x.x          | Active support |
| 0.1.x          | 7.x.x             | Deprecated     |

## Installation[¶](#installation "Permanent link")

You can use our **AI-Assisted Setup** to install the plugin. Add the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:

`[](#%5F%5Fcodelineno-0-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-1-1) Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-realtimekit` plugin in my project.
 ``

If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:

`[](#%5F%5Fcodelineno-2-1)npm install @capawesome/capacitor-realtimekit
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

### Android[¶](#android "Permanent link")

This plugin is supported on Android SDK +24.

#### Variables[¶](#variables "Permanent link")

This plugin will use the following project variables (defined in your app’s `variables.gradle` file):

* `$realtimekitUiVersion` version of `com.cloudflare.realtimekit:ui-android` (default: `0.3.1`)

### iOS[¶](#ios "Permanent link")

#### Privacy Descriptions[¶](#privacy-descriptions "Permanent link")

Add the following keys to the `ios/App/App/Info.plist` file:

`[](#%5F%5Fcodelineno-3-1)<key>NSBluetoothPeripheralUsageDescription</key>
[](#%5F%5Fcodelineno-3-2)<string>We will use your Bluetooth to access your Bluetooth headphones.</string>
[](#%5F%5Fcodelineno-3-3)<key>NSBluetoothAlwaysUsageDescription</key>
[](#%5F%5Fcodelineno-3-4)<string>We will use your Bluetooth to access your Bluetooth headphones.</string>
[](#%5F%5Fcodelineno-3-5)<key>NSCameraUsageDescription</key>
[](#%5F%5Fcodelineno-3-6)<string>For people to see you during meetings, we need access to your camera.</string>
[](#%5F%5Fcodelineno-3-7)<key>NSMicrophoneUsageDescription</key>
[](#%5F%5Fcodelineno-3-8)<string>For people to hear you during meetings, we need access to your microphone.</string>
[](#%5F%5Fcodelineno-3-9)<key>NSPhotoLibraryUsageDescription</key>
[](#%5F%5Fcodelineno-3-10)<string>For people to share, we need access to your photos.</string>
[](#%5F%5Fcodelineno-3-11)<key>UIBackgroundModes</key>
[](#%5F%5Fcodelineno-3-12)    <array>
[](#%5F%5Fcodelineno-3-13)        <string>audio</string>
[](#%5F%5Fcodelineno-3-14)        <string>voip</string>
[](#%5F%5Fcodelineno-3-15)        <string>fetch</string>
[](#%5F%5Fcodelineno-3-16)        <string>remote-notification</string>
[](#%5F%5Fcodelineno-3-17)    </array>
`

## Usage[¶](#usage "Permanent link")

The following examples show how to initialize the plugin and start a meeting.

### Initialize the plugin[¶](#initialize-the-plugin "Permanent link")

Call `initialize()` before using any other method of the plugin:

`[](#%5F%5Fcodelineno-4-1)import { RealtimeKit } from '@capawesome/capacitor-realtimekit';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const initialize = async () => {
[](#%5F%5Fcodelineno-4-4)  await RealtimeKit.initialize();
[](#%5F%5Fcodelineno-4-5)};
`

### Start a meeting[¶](#start-a-meeting "Permanent link")

Start a meeting using the built-in UI. The options let you pass the participant's authentication token and control whether the participant joins with audio and video enabled. Only available on Android and iOS:

`[](#%5F%5Fcodelineno-5-1)import { RealtimeKit, StartMeetingOptions } from '@capawesome/capacitor-realtimekit';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const startMeeting = async (options: StartMeetingOptions) => {
[](#%5F%5Fcodelineno-5-4)  await RealtimeKit.startMeeting(options);
[](#%5F%5Fcodelineno-5-5)};
`

## API[¶](#api "Permanent link")

* [initialize()](#initialize)
* [startMeeting(...)](#startmeeting)
* [Interfaces](#interfaces)

### initialize()[¶](#initialize "Permanent link")

`[](#%5F%5Fcodelineno-6-1)initialize() => Promise<void>
`

Initialize the RealtimeKit plugin.

This method must be called before using any other methods in the plugin.

**Since:** 0.0.0

---

### startMeeting(...)[¶](#startmeeting "Permanent link")

`[](#%5F%5Fcodelineno-7-1)startMeeting(options: StartMeetingOptions) => Promise<void>
`

Start a meeting using the built-in UI.

Only available on Android and iOS.

| Param       | Type                                        |
| ----------- | ------------------------------------------- |
| **options** | [StartMeetingOptions](#startmeetingoptions) |

**Since:** 0.0.0

---

### Interfaces[¶](#interfaces "Permanent link")

#### StartMeetingOptions[¶](#startmeetingoptions "Permanent link")

| Prop            | Type    | Description                                     | Default | Since |
| --------------- | ------- | ----------------------------------------------- | ------- | ----- |
| **authToken**   | string  | The authentication token for the participant.   |         | 0.0.0 |
| **enableAudio** | boolean | Whether to join the meeting with audio enabled. | true    | 0.0.0 |
| **enableVideo** | boolean | Whether to join the meeting with video enabled. | true    | 0.0.0 |

## FAQ[¶](#faq "Permanent link")

### Do I have to call the `initialize` method before starting a meeting?[¶](#do-i-have-to-call-the-initialize-method-before-starting-a-meeting "Permanent link")

Yes, the `initialize()` method must be called before using any other method of the plugin, including `startMeeting(...)`.

### Can participants join a meeting without camera or microphone?[¶](#can-participants-join-a-meeting-without-camera-or-microphone "Permanent link")

Yes, set the `enableAudio` or `enableVideo` option of the `startMeeting(...)` method to `false` to join the meeting with the microphone or camera disabled. Both options default to `true`.

### Does this plugin work on the Web?[¶](#does-this-plugin-work-on-the-web "Permanent link")

No, the `startMeeting(...)` method is only available on Android and iOS, since it relies on the native RealtimeKit SDK and its built-in meeting UI.

### What do I need to configure on iOS?[¶](#what-do-i-need-to-configure-on-ios "Permanent link")

You must add privacy descriptions for Bluetooth, camera, microphone, and photo library access as well as the required background modes to your `Info.plist` file. See the [Installation](#installation) section for the exact keys.

### Which Android versions are supported?[¶](#which-android-versions-are-supported "Permanent link")

The plugin is supported on Android SDK 24 and newer. It also uses the `$realtimekitUiVersion` project variable to control the version of the `com.cloudflare.realtimekit:ui-android` dependency.

### Is this an official Cloudflare plugin?[¶](#is-this-an-official-cloudflare-plugin "Permanent link")

No, this is an unofficial plugin. The project is not affiliated with, endorsed by, sponsored by, or approved by Cloudflare, Inc. or any of their affiliates or subsidiaries.

## Related Plugins[¶](#related-plugins "Permanent link")

* [Audio Session](https://capawesome.io/docs/sdks/capacitor/audio-session/): Configure and observe the iOS audio session.
* [Speech Recognition](https://capawesome.io/docs/sdks/capacitor/speech-recognition/): Transcribe speech into text with advanced features like silence detection.

## Newsletter[¶](#newsletter "Permanent link")

Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).

---

1. This project is not affiliated with, endorsed by, sponsored by, or approved by Cloudflare, Inc. or any of their affiliates or subsidiaries. [↩](#fnref:1 "Jump back to footnote 1 in the text")

July 8, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/realtimekit/#article", "headline": "Capacitor RealtimeKit Plugin for Android & iOS", "name": "Capacitor RealtimeKit Plugin for Android & iOS", "description": "Unofficial Capacitor plugin for the RealtimeKit SDK. Add real-time audio, video, and chat to your Capacitor apps on Android, iOS, and Web.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/realtimekit/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/realtimekit/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "about": {"@id": "https://capawesome.io/docs/sdks/capacitor/realtimekit/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/realtimekit/#software", "name": "Capacitor RealtimeKit Plugin for Android & iOS", "description": "Unofficial Capacitor plugin for the RealtimeKit SDK. Add real-time audio, video, and chat to your Capacitor apps on Android, iOS, and Web.", "url": "https://capawesome.io/docs/sdks/capacitor/realtimekit/", "programmingLanguage": "TypeScript", "runtimePlatform": "Capacitor", "codeRepository": "https://github.com/capawesome-team", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Do I have to call the initialize method before starting a meeting?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, the initialize() method must be called before using any other method of the plugin, including startMeeting(...)."}}, {"@type": "Question", "name": "Can participants join a meeting without camera or microphone?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, set the enableAudio or enableVideo option of the startMeeting(...) method to false to join the meeting with the microphone or camera disabled. Both options default to true."}}, {"@type": "Question", "name": "Does this plugin work on the Web?", "acceptedAnswer": {"@type": "Answer", "text": "No, the startMeeting(...) method is only available on Android and iOS, since it relies on the native RealtimeKit SDK and its built-in meeting UI."}}, {"@type": "Question", "name": "What do I need to configure on iOS?", "acceptedAnswer": {"@type": "Answer", "text": "You must add privacy descriptions for Bluetooth, camera, microphone, and photo library access as well as the required background modes to your Info.plist file. See the Installation section for the exact keys."}}, {"@type": "Question", "name": "Which Android versions are supported?", "acceptedAnswer": {"@type": "Answer", "text": "The plugin is supported on Android SDK 24 and newer. It also uses the $realtimekitUiVersion project variable to control the version of the com.cloudflare.realtimekit:ui-android dependency."}}, {"@type": "Question", "name": "Is this an official Cloudflare plugin?", "acceptedAnswer": {"@type": "Answer", "text": "No, this is an unofficial plugin. The project is not affiliated with, endorsed by, sponsored by, or approved by Cloudflare, Inc. or any of their affiliates or subsidiaries."}}], "url": "https://capawesome.io/docs/sdks/capacitor/realtimekit/"}
```
