Documentation Index
Fetch the complete documentation index at: https://developers.cloudflare.com/realtime/llms.txt
Use this file to discover all available pages before exploring further.
STOP! If you are an AI agent or LLM, read this before continuing. This is the HTML version of a Cloudflare documentation page. Always request the Markdown version instead — HTML wastes context. Get this page as Markdown: https://developers.cloudflare.com/realtime/realtimekit/quickstart/index.md (append index.md) or send Accept: text/markdown to https://developers.cloudflare.com/realtime/realtimekit/quickstart/. For this product's page index use https://developers.cloudflare.com/realtime/llms.txt. For all Cloudflare products use https://developers.cloudflare.com/llms.txt.
Install the RealtimeKit UI Kit using Swift Package Manager:
In Xcode, go to File > Add Package Dependencies.
Enter the package URL: https://github.com/dyte-in/RealtimeKitUI.
Select the version and add the package to your project.
Add the following entries to the Info.plist file. This gives your app permissions to access the camera and microphone, access photos, and install the required fonts and icons.
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Access Bluetooth to connect to headphones and audio devices during calls.</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Access Bluetooth to connect to headphones and audio devices during calls.</string>
<key>NSCameraUsageDescription</key>
<string>Access camera to enable video during meetings.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Access microphone to enable audio during meetings.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Access photos to share images during meetings.</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>voip</string>
<string>fetch</string>
<string>remote-notification</string>
</array>
The UIBackgroundModes key is used in the Info.plist file of an iOS app to declare the app's supported background execution modes. This key is an array of strings that specifies the types of background tasks that the app supports. By declaring the background modes, the app can continue to run in the background and perform specific tasks even when it is not in the foreground.
Install the RealtimeKit UI Kit by adding the dependency to your pubspec.yaml file:
Set compileSdkVersion 36 and minSdkVersion 24 in your build.gradle file at <project root>/android/app/build.gradle:
defaultConfig {
...
compileSdkVersion 36
minSdkVersion 24
...
}
Change the Kotlin version to 1.9.0:
ext.kotlin_version='1.9.0'
Set your platform to iOS 13.0 or above in your Podfile:
platform :ios, '13.0'
Add the following entries to the Info.plist file. This gives your app permissions to access the camera and microphone, access photos, and install the required fonts and icons.
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Access Bluetooth to connect to headphones and audio devices during calls.</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Access Bluetooth to connect to headphones and audio devices during calls.</string>
<key>NSCameraUsageDescription</key>
<string>Access camera to enable video during meetings.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Access microphone to enable audio during meetings.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Access photos to share images during meetings.</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>voip</string>
<string>fetch</string>
<string>remote-notification</string>
</array>
Optional: If you are allowing users to download attachments in chat, add the following permissions to your Info.plist:
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
Minimum requirements: React Native 0.84 or above, React 19 or above.
The SDK includes an Android foreground service that keeps audio and video running when the app moves to the background. The service starts automatically when a participant joins a meeting and stops when they leave.
By default the service is enabled with generic notification text. To customize the notification or disable the service, pass keepAliveService to the useRealtimeKitClient hook before calling initMeeting:
const[meeting,initMeeting]=useRealtimeKitClient({
keepAliveService:{
enabled: true,// set to false to disable entirely
title:"Team call",// notification title
text:"Tap to return to your meeting",// notification body
},
});
On Android 13 and above, the SDK automatically requests the POST_NOTIFICATIONS permission so the notification appears in the shade. No additional setup is required.
Minimum supported iOS version: 15.1.
Open your Podfile and set the platform to iOS 15.1:
platform :ios, '15.1'
Add the following permission entries to your Info.plist file:
<key>NSCameraUsageDescription</key>
<string>Access camera to enable video during meetings.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Access microphone to enable audio during meetings.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Access photos to share images during meetings.</string>
iOS screen sharing requires a Broadcast Upload Extension and additional native setup. Refer to the Screen Share Setup (iOS) guide for full instructions.
Once native setup is complete, pass iOSScreenshareEnabled={true} to RtkMeeting to enable the screen share button in the UI:
--data '{"title": "My First Cloudflare RealtimeKit meeting"}'
Add Participants
Create a Preset
Presets define what permissions a user should have. Learn more in the Concepts guide.
You can create new presets using the Presets API or via the RealtimeKit dashboard ↗.
Note: Skip this step if you created the app in the dashboard—default presets are already set up for you.
Note: Presets can be reused across multiple meetings. Define a role (for example, admin or viewer) once and apply it to participants in any number of meetings.
Add a Participant
A participant is added to a meeting using the Meeting ID created above and selecting a Preset Name from the available options.
The response includes an authToken which the Client SDK uses to add this participant to the meeting room.
Replace <auth-token> with the authToken obtained from the previous step.
Run the application and navigate to the meeting page to see the RealtimeKit Client SDK in action.
Terminal window
npmrundev
Optional: If you are using our ready-made template, run the following command to start the application:
Terminal window
npmi-gvite&&npmrundev
Open the app in your browser. To join the meeting, append your auth token to the preview URL:
Terminal window
http://localhost:5173?authToken=<auth_token>
Load the RTKComponentsModule into your app module. This is typically the app.module.ts file.
This allows you to use the UI components in your component HTML files.
TypeScript
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {RTKComponentsModule} from '@cloudflare/realtimekit-angular';
import {AppComponent} from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule,RTKComponentsModule],
providers: [],
bootstrap: [AppComponent],
})
exportclassAppModule{};
Optional: If you are using TypeScript, set allowSyntheticDefaultImports as true in your tsconfig.json.
TypeScript
{
"compilerOptions": {
"allowSyntheticDefaultImports":true
}
}
Load the RtkMeeting component to your template file (component.html).
<rtk-meeting#myid></rtk-meeting>
Initialise the Meeting
TypeScript
classAppComponent{
title='MyProject';
@ViewChild('myid') meetingComponent:RtkMeeting;
rtkMeeting:RealtimeKitClient;
asyncngAfterViewInit(){
constmeeting=awaitRealtimeKitClient.init({
authToken:'<auth-token>',
});
meeting.join();
this.rtkMeeting=meeting;
if (this.meetingComponent) this.meetingComponent.meeting=meeting;
}
}
Replace <auth-token> with the authToken obtained from the previous step.
Run the application and navigate to the meeting page to see the RealtimeKit Client SDK in action.
Terminal window
npmrundev
Optional: If you are using our ready-made template, run the following command to start the application:
Terminal window
npmi-gvite&&npmrundev
Open the app in your browser. To join the meeting, append your auth token to the preview URL: