Skip to main content
FieldValue
ClassCometChatSoundManager
Package@cometchat/chat-uikit-react
Sound typesincomingMessage, outgoingMessage, incomingMessageFromOther, incomingCall, outgoingCall
Custom soundsPass URL as second argument: CometChatSoundManager.play('incomingMessage', '/my-sound.mp3')
Global configdisableSoundForMessages, customSoundForMessages, disableSoundForCalls, customSoundForCalls via config prop on CometChatProvider
Component overrideSame props on individual components (props take precedence over global config)

Overview

CometChatSoundManager handles audio notifications for chat events. It plays sounds when messages are sent/received and when calls are initiated/received. Components use it internally — you don’t need to call it manually unless you want custom behavior.

Sound Types

TypeWhen it playsLoops
outgoingMessageUser sends a messageNo
incomingMessageMessage received in the active conversationNo
incomingMessageFromOtherMessage received in a different conversationNo
incomingCallIncoming call notificationYes
outgoingCallOutgoing call ringingYes

Disabling & Customizing Sounds

Sound behavior can be configured at two levels:
  1. Global config — Set on CometChatProvider via the config prop. Applies to all components.
  2. Component props — Set directly on individual components. Takes precedence over global config.

Global Config

Use the config prop on CometChatProvider to control sound behavior across all components:
<CometChatProvider
  config={{
    disableSoundForMessages: true,
    customSoundForMessages: "/sounds/custom-message.mp3",
    disableSoundForCalls: true,
    customSoundForCalls: "/sounds/custom-ringtone.mp3",
  }}
>
  <MyChatApp />
</CometChatProvider>
PropertyTypeDescription
disableSoundForMessagesbooleanDisable sound for incoming messages across all components. Default: false
customSoundForMessagesstringCustom sound URL for incoming message notifications
disableSoundForCallsbooleanDisable sound for incoming/outgoing calls. Default: false
customSoundForCallsstringCustom sound URL for calls

Component-Level Props (Override)

Individual components accept the same props. When set, they override the global config for that component only.
{/* Override global config for this specific component */}
<CometChatConversations
  disableSoundForMessages={false}
  customSoundForMessages="/sounds/conversation-alert.mp3"
/>

<CometChatIncomingCall
  disableSoundForCalls={false}
  customSoundForCalls="/sounds/incoming-ring.mp3"
/>
Components that accept sound props:
ComponentProps
CometChatConversationsdisableSoundForMessages, customSoundForMessages
CometChatMessageListdisableSoundForMessages, customSoundForMessages
CometChatMessageComposerdisableSoundForMessage, customSoundForMessage
CometChatIncomingCalldisableSoundForCalls, customSoundForCalls
CometChatOutgoingCalldisableSoundForCalls, customSoundForCalls
Component-level props always take precedence over the global config. If a prop is not set on a component, it falls back to the global config value.

Custom Sound URLs

Replace default sounds with your own audio files:
import { CometChatSoundManager } from "@cometchat/chat-uikit-react";

// Play a custom notification sound
CometChatSoundManager.play("incomingMessage", "/sounds/notification.mp3");

// Or use convenience methods
CometChatSoundManager.onIncomingMessage("/sounds/notification.mp3");
CometChatSoundManager.onOutgoingMessage("/sounds/sent.mp3");

API Reference

Static Methods

MethodSignatureDescription
play(sound: SoundType, customUrl?: string) => voidPlay a sound (with optional custom URL)
pause() => voidStop the currently playing sound
onOutgoingMessage(customUrl?: string) => voidPlay outgoing message sound
onIncomingMessage(customUrl?: string) => voidPlay incoming message sound
onIncomingOtherMessage(customUrl?: string) => voidPlay incoming message from other conversation
onIncomingCall(customUrl?: string) => voidPlay incoming call sound (loops)
onOutgoingCall(customUrl?: string) => voidPlay outgoing call sound (loops)

Browser Autoplay Policy

Browsers require user interaction before playing audio. CometChatSoundManager checks navigator.userActivation before attempting playback. If the user hasn’t interacted with the page yet, sounds are silently skipped.

SSR Safety

All Audio API usage is guarded behind typeof Audio !== 'undefined' checks. The sound manager is safe to import in server-side rendering environments — it simply no-ops when Audio is unavailable.