> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-audit-mechanical-fixes.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Sound Manager

> Play notification sounds for incoming/outgoing messages and calls with custom sound URL support.

<Accordion title="AI Integration Quick Reference">
  | Field         | Value                                                                                            |
  | ------------- | ------------------------------------------------------------------------------------------------ |
  | Class         | `CometChatSoundManager`                                                                          |
  | Package       | `@cometchat/chat-uikit-react`                                                                    |
  | Sound types   | `incomingMessage`, `outgoingMessage`, `incomingMessageFromOther`, `incomingCall`, `outgoingCall` |
  | Custom sounds | Pass URL as second argument: `CometChatSoundManager.play('incomingMessage', '/my-sound.mp3')`    |
  | Disable       | Use `disableSoundForMessages` / `disableSoundForCalls` in `config` prop                          |
</Accordion>

## 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

| Type                       | When it plays                                | Loops |
| -------------------------- | -------------------------------------------- | ----- |
| `outgoingMessage`          | User sends a message                         | No    |
| `incomingMessage`          | Message received in the active conversation  | No    |
| `incomingMessageFromOther` | Message received in a different conversation | No    |
| `incomingCall`             | Incoming call notification                   | Yes   |
| `outgoingCall`             | Outgoing call ringing                        | Yes   |

***

## Disabling Sounds

Use the `config` prop on `CometChatProvider`:

```tsx theme={null}
<CometChatProvider
  appId="YOUR_APP_ID"
  region="us"
  authKey="YOUR_AUTH_KEY"
  uid="cometchat-uid-1"
  config={{
    disableSoundForMessages: true,
    disableSoundForCalls: true,
  }}
>
  <MyChatApp />
</CometChatProvider>
```

You can also disable sounds per-component via props like `disableSoundForMessages` on `CometChatConversations` and `CometChatMessageComposer`.

***

## Custom Sound URLs

Replace default sounds with your own audio files:

```tsx theme={null}
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

| Method                   | Signature                                        | Description                                   |
| ------------------------ | ------------------------------------------------ | --------------------------------------------- |
| `play`                   | `(sound: SoundType, customUrl?: string) => void` | Play a sound (with optional custom URL)       |
| `pause`                  | `() => void`                                     | Stop the currently playing sound              |
| `onOutgoingMessage`      | `(customUrl?: string) => void`                   | Play outgoing message sound                   |
| `onIncomingMessage`      | `(customUrl?: string) => void`                   | Play incoming message sound                   |
| `onIncomingOtherMessage` | `(customUrl?: string) => void`                   | Play incoming message from other conversation |
| `onIncomingCall`         | `(customUrl?: string) => void`                   | Play incoming call sound (loops)              |
| `onOutgoingCall`         | `(customUrl?: string) => void`                   | Play 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.
