Custom Branding
RealtimeKit's UI Kit provides all the necessary UI components to allow complete customization of all its UI Kit components. You can customize your meeting icons such as chat, clock, leave meeting, mic on and off, and more.
To get started with customizing the icons for your meetings, you need to first integrate RealtimeKit's Web SDK into your web application.
Install the package using npm, Yarn, or CDN.
To set up UI Kit components and web-core, add the following script tags inside the <head> tag:
<head> <script type="module"> import { defineCustomElements } from "https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit-ui@latest/loader/index.es2017.js"; defineCustomElements(); </script> <!-- Import Web Core via CDN --> <script src="https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit@latest/dist/browser.js"></script></head>You can also import utilities or any other export from CDN:
<head> <script type="module"> import { provideRtkDesignSystem, extendConfig, } from "https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit-ui/dist/esm/index.js"; </script></head>npm install @cloudflare/realtimekit-ui @cloudflare/realtimekit- Create a meeting room using the Create Meeting API
- Generate an
authTokenusing the Add Participant API. AnauthTokenis a unique token that is used to identify a user in the meeting - Initialize the RealtimeKit client using
RealtimeKitClient.init({ authToken }). It returns the meeting object - Pass the meeting object to the UI Kit
The rtk-meeting component generates the default UI experience.
<body> <rtk-meeting id="my-meeting"></rtk-meeting>
<script> const init = async () => { const meeting = await RealtimeKitClient.init({ authToken: "<participant_auth_token>", defaults: { audio: true, video: true, }, });
const meetingEl = document.getElementById("my-meeting"); meetingEl.meeting = meeting; };
init(); </script></body>import { RealtimeKitProvider, useRealtimeKitClient,} from "@cloudflare/realtimekit-react";import { RtkMeeting } from "@cloudflare/realtimekit-react-ui";import { useEffect } from "react";
function App() { const [meeting, initMeeting] = useRealtimeKitClient();
useEffect(() => { initMeeting({ authToken: "<participant_auth_token>", defaults: { audio: true, video: true, }, }); }, []);
return ( <RealtimeKitProvider value={meeting}> <RtkMeeting meeting={meeting} /> </RealtimeKitProvider> );}RealtimeKit's default icon set is available at icons.dyte.io ↗. You can modify and generate your custom icon set from there.
To replace RealtimeKit's default icon set with your own, pass the link to your icon set in the UI component.
<body> <rtk-meeting id="my-meeting"></rtk-meeting>
<script> const init = async () => { const meeting = await RealtimeKitClient.init({ authToken: "<participant_auth_token>", defaults: { audio: true, video: true, }, });
const meetingEl = document.getElementById("my-meeting"); meetingEl.meeting = meeting;
// Pass custom icon pack URL meetingEl.iconPackUrl = "https://example.com/my-icon-pack.json"; };
init(); </script></body>import { RealtimeKitProvider, useRealtimeKitClient,} from "@cloudflare/realtimekit-react";import { RtkMeeting } from "@cloudflare/realtimekit-react-ui";import { useEffect } from "react";
function App() { const [meeting, initMeeting] = useRealtimeKitClient();
useEffect(() => { initMeeting({ authToken: "<participant_auth_token>", defaults: { audio: true, video: true, }, }); }, []);
return ( <RealtimeKitProvider value={meeting}> <RtkMeeting meeting={meeting} iconPackUrl="https://example.com/my-icon-pack.json" /> </RealtimeKitProvider> );}The IconPack is an object where:
- Object key - Denotes the name of the icon
- Object value - Stores the SVG string
The default icon pack includes the following icons:
attachcall_endchatcheckmarkchevron_downchevron_leftchevron_rightchevron_upclockcopydisconnecteddismissdownloademoji_multiplefull_screen_maximizefull_screen_minimizeimageimage_offjoin_stageleave_stagemic_offmic_onmore_verticalparticipantspeoplepinpin_offpollrecordingrocketsearchsendsettingsshareshare_screen_personshare_screen_startshare_screen_stopspeakerspinnerspotlightstop_recordingsubtractvertical_scrollvertical_scroll_disabledvideo_offvideo_onwandwarningwifi
Each icon in your custom icon pack JSON file should be defined as a key-value pair where the key matches one of the icon names above, and the value is the SVG string for that icon.
Explore additional customization options:
- Render Default Meeting UI - Complete meeting experience out of the box
- Build Your Own UI - Create custom meeting interfaces
Was this helpful?
- Resources
- API
- New to Cloudflare?
- Directory
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- © 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark
-