Skip to main content
The Calls SDK includes a comprehensive set of features for building professional calling experiences. Each feature is designed to work seamlessly across platforms while providing the flexibility to customize for your specific use case.

Core Calling Features

Voice Calls

High-quality audio calls powered by WebRTC with enterprise-grade infrastructure designed for reliability and clarity. How It Works: Voice calls use WebRTC’s audio processing pipeline with automatic codec selection (Opus preferred) for optimal quality. The SDK handles all the complexity of establishing peer connections, managing ICE candidates, and maintaining stable audio streams. Technical Capabilities:
  • Adaptive bitrate encoding that adjusts to network conditions
  • Automatic noise cancellation and echo reduction
  • Automatic gain control for consistent volume levels
  • Low latency audio streaming optimized for real-time communication
  • Automatic reconnection on network interruptions
Call Types Supported:
  • 1-to-1 private voice calls
  • Group voice calls with multiple participants
  • Audio-only mode in video calls
Use Cases: Customer support calls, team meetings, social audio rooms, telehealth consultations

Video Calls

HD video calling with adaptive quality optimization that delivers smooth video across varying network conditions. How It Works: Video calls leverage WebRTC’s video processing with VP8/VP9/H.264 codec support. The SDK automatically selects the best codec based on browser/device capabilities and negotiates optimal resolution and framerate. Technical Capabilities:
  • HD video support with adaptive bitrate
  • Automatic quality adjustment based on network conditions
  • Front/back camera switching on mobile devices
  • Camera on/off toggle during calls
  • Video preview before joining calls
Use Cases: Video consultations, remote interviews, virtual events, family video calls, remote team collaboration

Group Calls

Multi-participant calling with intelligent layout management and active speaker detection. How It Works: Group calls use a Selective Forwarding Unit (SFU) architecture where media streams are routed through CometChat’s servers. This enables efficient bandwidth usage as each participant only uploads one stream while receiving multiple streams. Participant Features:
  • Support for multiple simultaneous video/audio participants
  • Dynamic participant join/leave handling
  • Participant list with real-time status (muted, video off)
  • Active speaker detection and highlighting
Use Cases: Team meetings, webinars, virtual classrooms, group therapy sessions, online workshops

Call Layouts

Three view modes that automatically adapt to participant count and call context. Available Layouts:
LayoutDescriptionBest For
TileGrid layout with equally-sized tilesGroup discussions, team meetings
SidebarMain speaker with participants in a sidebarPresentations, webinars
SpotlightLarge view for active speaker, small tiles for othersOne-on-one calls, focused discussions
Features:
  • Set initial layout when joining a session
  • Switch layouts dynamically during calls
  • Each participant can independently choose their preferred layout
  • Automatic layout optimization based on participant count

Screen Sharing

Share your screen with other participants during a call. How It Works: Screen sharing uses the browser’s getDisplayMedia API (web) or native screen capture APIs (mobile). The shared content is encoded as a video stream and transmitted to other participants. Sharing Options (Web):
  • Entire screen
  • Application window
  • Browser tab
Features:
  • Start/stop screen sharing programmatically
  • Screen share events for local and remote participants
  • Configurable screen share button visibility
  • Button click interception for custom behavior
Use Cases: Software demos, slide presentations, collaborative document editing, remote tech support, code reviews

Recording

Server-side call recording with cloud storage for later playback and compliance. How It Works: Recording happens on CometChat’s media servers, not on participant devices. This ensures consistent quality regardless of individual network conditions and eliminates the risk of lost recordings due to client crashes.
Recording must be enabled for your CometChat app. Contact support if you need to enable this feature.
Features:
  • Auto-start recording when session begins (configurable)
  • Manual start/stop recording during calls
  • Recording status indicators for all participants
  • Recording events (started, stopped)
  • Access recordings via CometChat Dashboard or REST API
Recording Controls:
  • startRecording() - Begin recording
  • stopRecording() - End recording
  • autoStartRecording setting for automatic recording
Use Cases: Meeting archives, compliance documentation, training content creation, interview recordings

Virtual Background

Replace or blur your real background with AI-powered segmentation for privacy and professionalism. How It Works: Virtual backgrounds use machine learning models to segment the person from the background in real-time. The segmentation mask is applied to each video frame, replacing the background with blur or a custom image. Background Options:
  • Blur: Gaussian blur applied to background (adjustable intensity via setVirtualBackgroundBlurLevel)
  • Image: Custom image as background (via setVirtualBackgroundImage)
  • Clear: Remove virtual background (via clearVirtualBackground)
Features:
  • Built-in virtual background settings dialog
  • Configurable button visibility
  • Real-time background replacement
Platform Availability: JavaScript (Web) only Browser Requirements: Modern browser with adequate processing power for best results Use Cases: Work from home privacy, professional video calls, hiding messy rooms, branded backgrounds

Audio Modes

Switch between different audio output routes on mobile devices. Available Modes:
ModeDescription
SPEAKERRoutes audio through the device loudspeaker
EARPIECERoutes audio through the phone earpiece (for private calls)
BLUETOOTHRoutes audio through a connected Bluetooth device
HEADPHONESRoutes audio through wired headphones
Features:
  • Set initial audio mode when joining
  • Change audio mode dynamically during calls
  • Audio mode change events via MediaEventsListener
  • Automatic detection of connected audio devices
  • Configurable audio mode button visibility
Platform Availability: iOS, Android, React Native, Flutter (mobile platforms only) Use Cases: Switching to speaker during long calls, using Bluetooth in car, private calls with earpiece

Raise Hand

Virtual hand-raising feature for orderly communication in group calls without verbal interruption. How It Works: Participants can raise their hand to signal they want to speak. Other participants see a visual indicator, enabling orderly communication. Features:
  • raiseHand() - Show hand-raised indicator
  • lowerHand() - Remove hand-raised indicator
  • Events for when participants raise/lower hands
  • Configurable raise hand button visibility
Use Cases: Q&A sessions, classroom discussions, moderated panels, orderly group discussions

Idle Timeout

Automatic session termination when a participant is alone in a call, preventing abandoned sessions. How It Works: When all other participants leave, a countdown timer starts. After the timeout period, a prompt is shown. If no response, the session ends automatically. Configuration:
  • idleTimeoutPeriodBeforePrompt - Time before showing the timeout prompt (default: 60 seconds)
  • idleTimeoutPeriodAfterPrompt - Time after prompt before ending session (default: 120 seconds)
Features:
  • Configurable timeout periods
  • Session timeout event (onSessionTimedOut)
  • Can be effectively disabled by setting very long timeout periods
Use Cases: Preventing forgotten calls, resource management, automatic cleanup

Advanced Features

Custom Control Panel

Build a fully customized control panel by hiding default controls and implementing your own UI. How It Works: Configure session settings to hide the default control panel (hideControlPanel: true), then implement your own buttons that call SDK actions. Customization Options:
  • Hide entire control panel
  • Hide individual buttons (mute, video, screen share, recording, etc.)
  • Intercept button clicks for custom behavior
  • Build completely custom UI with SDK actions
Available Actions:
  • muteAudio() / unMuteAudio()
  • pauseVideo() / resumeVideo()
  • switchCamera()
  • startScreenSharing() / stopScreenSharing()
  • startRecording() / stopRecording()
  • leaveSession()
Use Cases: Branded call experience, simplified UI for specific use cases, adding app-specific actions

Picture-in-Picture

Continue video calls in a floating window while using other content. How It Works: Picture-in-Picture uses the browser’s Picture-in-Picture API (web) or native PiP frameworks (Android) to display the call video in a floating overlay window. Features:
  • enablePictureInPictureLayout() - Enable PiP mode
  • disablePictureInPictureLayout() - Return to normal view
  • Floating video window that stays on top
  • Works when switching tabs or apps
Browser Support (Web):
  • Chrome 70+
  • Safari 13.1+
  • Edge (Chromium-based)
  • Opera 57+
Platform Availability: JavaScript (Web) and Android only Use Cases: Multitasking during calls, reference documents while on call, monitoring calls while working

Device Management

Select and switch between available cameras and microphones during calls. How It Works: The SDK enumerates available media devices and allows users to select their preferred input/output devices. Changes take effect immediately without interrupting the call. Features:
  • getAudioInputDevices() - List available microphones
  • getAudioOutputDevices() - List available speakers
  • getVideoInputDevices() - List available cameras
  • setAudioInputDevice(deviceId) - Switch microphone
  • setAudioOutputDevice(deviceId) - Switch speaker
  • setVideoInputDevice(deviceId) - Switch camera
  • Device change events when devices are connected/disconnected
  • Built-in settings dialog (showSettingsDialog())
Platform Availability: JavaScript (Web) only Use Cases: Switching to external webcam, using USB microphone, selecting Bluetooth headset

VoIP Calling

Native VoIP integration with system-level call handling for a phone-like calling experience. How It Works: VoIP calling integrates with the operating system’s native call infrastructure (CallKit on iOS, ConnectionService on Android) to provide system-level call UI and lock screen controls. iOS (CallKit) Features:
  • Native iOS incoming call UI (full screen)
  • Lock screen call controls
  • Call appears in Phone app’s Recents
  • CarPlay integration
  • Do Not Disturb respect
Android Features:
  • System notification with call controls
  • Foreground service for reliable call handling
  • Lock screen call controls
Requirements:
  • VoIP push certificate (iOS)
  • Push notifications configured
  • Platform-specific implementation (CallManager, PushKit delegate)
Platform Availability: iOS, Android, React Native Use Cases: Phone-like calling experience, reliable incoming calls, car integration

Background Handling

Keep calls alive when users navigate away from your app on mobile devices. How It Works: Background handling uses platform-specific APIs to keep the call active when the user switches to another app or locks their device. On Android, this is achieved through CometChatOngoingCallService - a foreground service. Android Features:
  • CometChatOngoingCallService.launch() - Start foreground service
  • CometChatOngoingCallService.abort() - Stop service
  • Ongoing notification in status bar
  • Tap notification to return to call
  • Customizable notification appearance
iOS Features:
  • Audio continues in background (requires Background Modes capability)
  • CallKit integration for lock screen controls
  • Background task handling
Required Permissions (Android):
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
Platform Availability: iOS, Android, React Native Use Cases: Multitasking during calls, checking messages mid-call, hands-free calling

In-Call Chat

Enable text messaging during calls by integrating the chat button with your messaging solution. How It Works: The SDK provides a chat button in the control panel and events to help you build a custom chat experience. The actual messaging functionality should be implemented using the CometChat Chat SDK or your own messaging solution. Features:
  • Chat button visibility control (hideChatButton)
  • Chat button click events (onChatButtonClicked)
  • Unread message badge (setChatButtonUnreadCount)
Integration: The Calls SDK provides UI hooks, but messaging is handled separately:
  1. Show/hide chat button in call UI
  2. Listen for chat button clicks
  3. Open your chat interface (using CometChat Chat SDK or custom)
  4. Update unread badge count
Platform Availability: All platforms Use Cases: Sharing meeting links, posting questions, sharing code snippets, silent communication
Platform Availability: Not all features are available on every platform. See the Compatibility page for a detailed feature comparison matrix.

Next Steps