Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
880093f
feat(react-native-uikit-docs): pin & save, pin conversation and threa…
suraj-chauhan-cometchat Sep 10, 2026
984ef98
docs(react-native): match Android's Pin Conversations section verbatim
suraj-chauhan-cometchat Sep 10, 2026
3ca8216
docs(react-native): match Android's core-features format for Pin & Sa…
suraj-chauhan-cometchat Sep 10, 2026
ea96d91
docs(react-native): drop hideUnpinMessageOption from the CometChatPin…
suraj-chauhan-cometchat Sep 10, 2026
30ab6f8
docs(react-native): drop hideUnsaveMessageOption from the CometChatSa…
suraj-chauhan-cometchat Sep 10, 2026
bf75dc1
docs(react-native): drop every ThreadSubscriptionConfig reference
suraj-chauhan-cometchat Sep 10, 2026
1f1c31d
docs(react-native): core-features Pin and Save now follows React, not…
suraj-chauhan-cometchat Sep 10, 2026
f10bc09
docs(react-native): document the bell on the component that actually …
suraj-chauhan-cometchat Sep 10, 2026
c817731
docs(react-native): drop the negative opener from the thread-header s…
suraj-chauhan-cometchat Sep 10, 2026
4376a5a
docs(react-native): nest thread subscription inside threaded messages
suraj-chauhan-cometchat Sep 11, 2026
2a6dfc0
docs(react-native): add screenshots of the pinned and saved screens
suraj-chauhan-cometchat Sep 11, 2026
2a1e68a
docs(react-native): drop pin/save internals customers never call
suraj-chauhan-cometchat Sep 11, 2026
70b51b7
docs(react-native): bring pinned/saved pages up to component-page sta…
suraj-chauhan-cometchat Sep 11, 2026
775cdc9
docs(react-native): address review — must-fix and should-fix
suraj-chauhan-cometchat Sep 11, 2026
7f6ab7f
docs(react-native): text color guide and ToolbarTrailingButtonsView
suraj-chauhan-cometchat Sep 15, 2026
4665fec
docs(react-native): title the text color guide Custom Text Formatter,…
suraj-chauhan-cometchat Sep 15, 2026
3739eba
docs(react-native): text color guide — type-ahead color and dropped a…
suraj-chauhan-cometchat Sep 15, 2026
53128ed
docs(react-native): text color guide mirrors the dev-v5 sample app
suraj-chauhan-cometchat Sep 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
{
"product": "Home",
"pages": [
"index"
"index"
]
},
{
Expand Down Expand Up @@ -1208,6 +1208,8 @@
"ui-kit/react-native/guide-new-chat",
"ui-kit/react-native/guide-group-chat",
"ui-kit/react-native/guide-threaded-messages",
"ui-kit/react-native/guide-pin-and-save-messages",
"ui-kit/react-native/guide-text-color",
"ui-kit/react-native/guide-search-messages",
"ui-kit/react-native/guide-message-privately",
"ui-kit/react-native/guide-block-unblock-user",
Expand Down
Binary file added images/pin.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/save.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
77 changes: 72 additions & 5 deletions ui-kit/react-native/compact-message-composer.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
}
```

#### onError

Check warning on line 83 in ui-kit/react-native/compact-message-composer.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/compact-message-composer.mdx#L83

Did you really mean 'onError'?

Fires on internal errors (network failure, auth issue, SDK exception).

Expand Down Expand Up @@ -154,7 +154,7 @@

### Global UI Events

`CometChatUIEventHandler` emits events subscribable from anywhere in the application. Add listeners and remove them on cleanup.

Check warning on line 157 in ui-kit/react-native/compact-message-composer.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/compact-message-composer.mdx#L157

Did you really mean 'subscribable'?

| Event | Fires when | Payload |
| --- | --- | --- |
Expand Down Expand Up @@ -221,8 +221,8 @@
| `enableRichTextEditor` | `hideRichTextFormattingOptions` | Result |
|------------------------|-------------------------------|--------|
| `false` | - | Plain text, no formatting UI |
| `true` | `true` | Toolbar always visible above input |
| `true` | `false` | No toolbar UI, only text selection menu items work |
| `true` (default) | `false` (default) | Toolbar visible above input |
| `true` | `true` | No toolbar UI, only text selection menu items work |

### Text Selection Menu Items

Expand Down Expand Up @@ -251,11 +251,11 @@
### Toolbar Configuration Examples

```tsx lines
// Toolbar always visible above input
// Toolbar visible above input (the default)
<CometChatCompactMessageComposer
user={chatUser}
enableRichTextEditor={true}
hideRichTextFormattingOptions={true}
hideRichTextFormattingOptions={false}
/>
```

Expand All @@ -264,6 +264,7 @@
<CometChatCompactMessageComposer
user={chatUser}
enableRichTextEditor={true}
hideRichTextFormattingOptions={true}
showTextSelectionMenuItems={true}
/>
```
Expand All @@ -286,7 +287,7 @@
|------|------|---------|-------------|
| `maxLines` | `number` | `5` | Maximum lines before scrolling is enabled |
| `minInputHeight` | `number` | `40` | Minimum height for the input in pixels |
| `maxInputHeight` | `number` | `144` (calculated from maxLines) | Maximum height for the input. Overrides `maxLines` if both provided |

Check warning on line 290 in ui-kit/react-native/compact-message-composer.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/compact-message-composer.mdx#L290

Did you really mean 'maxLines'?

```tsx lines
<CometChatCompactMessageComposer
Expand All @@ -310,13 +311,14 @@
| `AuxiliaryButtonView` | `({ user, group, composerId }) => JSX.Element` | Sticker button area |
| `SecondaryButtonView` | `({ user, group, composerId }) => JSX.Element` | Attachment button area |
| `SendButtonView` | `({ user, group, composerId }) => JSX.Element` | Send button |
| `ToolbarTrailingButtonsView` | `({ user, group, composerId, composer }) => JSX.Element` | Adds views at the end of the formatting toolbar |
| `attachmentOptions` | `CometChatMessageComposerAction[]` | Default attachment options list |
| `addAttachmentOptions` | `CometChatMessageComposerAction[]` | Additional attachment options appended to defaults |
| `textFormatters` | `CometChatTextFormatter[]` | Text formatting in composer |

### textFormatters

Check warning on line 319 in ui-kit/react-native/compact-message-composer.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/compact-message-composer.mdx#L319

Did you really mean 'textFormatters'?

Custom text formatters for the composer input. To configure the existing Mentions look and feel check out [CometChatMentionsFormatter](/ui-kit/react-native/mentions-formatter-guide).

Check warning on line 321 in ui-kit/react-native/compact-message-composer.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/compact-message-composer.mdx#L321

Did you really mean 'formatters'?

```tsx lines
import {
Expand Down Expand Up @@ -344,7 +346,7 @@
);
```

### attachmentOptions

Check warning on line 349 in ui-kit/react-native/compact-message-composer.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/compact-message-composer.mdx#L349

Did you really mean 'attachmentOptions'?

Override the default attachment options with custom actions.

Expand Down Expand Up @@ -518,6 +520,71 @@
);
```

### ToolbarTrailingButtonsView

Render your own buttons at the trailing end of the rich-text formatting toolbar, after the built-in buttons and a divider. This is the place for a formatting control the toolbar does not have — for example, a color button that colors the selected text.

Besides `user`, `group` and `composerId`, the render function receives a **`composer`** handle (`ComposerInputHandle`) for reading and changing the input — without it a toolbar button could not act on the text.

```tsx lines
import { CometChat } from "@cometchat/chat-sdk-react-native";
import {
CometChatCompactMessageComposer,
ComposerInputHandle,
} from "@cometchat/chat-uikit-react-native";
import { Text, TouchableOpacity } from "react-native";

const ColorRedButton = ({ composer }: { composer: ComposerInputHandle }) => {
// A code block is sent as raw text, so a color applied inside one is lost.
const inCodeBlock = composer.getActiveStyles().codeBlock;

return (
<TouchableOpacity
accessibilityLabel="Color selected text red"
disabled={inCodeBlock}
style={{ paddingHorizontal: 8, paddingVertical: 4, opacity: inCodeBlock ? 0.4 : 1 }}
onPress={() => composer.applyInlineStyle("color", "#E11D48")}>
<Text style={{ color: "#E11D48", fontWeight: "700" }}>A</Text>
</TouchableOpacity>
);
};

function ComposerWithColor({ chatUser }: { chatUser: CometChat.User }) {
return (
<CometChatCompactMessageComposer
user={chatUser}
ToolbarTrailingButtonsView={({ composer }) => <ColorRedButton composer={composer} />}
/>
);
}
```

<Note>
The slot lives inside the toolbar, so it only renders while the toolbar is visible — `enableRichTextEditor` `true` and `hideRichTextFormattingOptions` `false`, which are the defaults. It does not appear in the native text selection menu. For a complete walkthrough with a swatch picker, see the [Custom Text Formatter guide](/ui-kit/react-native/guide-text-color).

Check warning on line 563 in ui-kit/react-native/compact-message-composer.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/compact-message-composer.mdx#L563

Did you really mean 'walkthrough'?
</Note>

<Warning>
Render your controls inline in the toolbar rather than in a `Modal`. A modal takes focus from the input, which collapses the selection before your command runs.
</Warning>

The `composer` handle:

| Method | Description |
| --- | --- |
| `getText()` | Current plain-text content |
| `getSelection()` | Current selection as `{ start, end }` — collapsed when there is only a caret |
| `setText(text)` | Replaces the content |
| `setSelection(start, end?)` | Moves the selection; omit `end` for a caret |
| `insertLink(url, text)` | Inserts a link, wrapping the selection when there is one |
| `toggleBold()` / `toggleItalic()` / `toggleUnderline()` / `toggleStrikethrough()` / `toggleCode()` | Same as the built-in toolbar buttons |
| `clearFormatting()` | Removes all inline formatting from the selection |
| `applyInlineStyle(key, value)` | Applies `"color"` or `"backgroundColor"` (any React Native color string) to the selection, skipping mentions |
| `removeInlineStyle(key)` | Removes that style from the selection |
| `getMentionRanges()` | Mention ranges in plain-text positions |
| `getActiveStyles()` | Formatting at the caret: `bold`, `italic`, `underline`, `strikethrough`, `code`, `codeBlock`, `highlight`, `blockType`, `alignment` |

Only `"color"` is sent with the message, as `<color=#rrggbb>…</color>`, and the UI Kit renders it in the bubble automatically. `"backgroundColor"` styles the composer only and is dropped on send.

### HeaderView

Custom view above the composer input.
Expand Down Expand Up @@ -645,7 +712,7 @@
| `imageQuality` | Image quality for camera (1-100) | `imageQuality={50}` |
| `auxiliaryButtonsAlignment` | Alignment of auxiliary buttons | `auxiliaryButtonsAlignment="right"` |
| `enableRichTextEditor` | Enable/disable rich text formatting | `enableRichTextEditor={true}` |
| `hideRichTextFormattingOptions` | Always-visible toolbar mode | `hideRichTextFormattingOptions={true}` |
| `hideRichTextFormattingOptions` | Hide the formatting toolbar; formatting stays available from the text selection menu | `hideRichTextFormattingOptions={true}` |
| `showTextSelectionMenuItems` | Formatting in native text selection menu | `showTextSelectionMenuItems={true}` |
| `enterKeyBehavior` | Android Enter key behavior | `enterKeyBehavior={EnterKeyBehavior.SendMessage}` |
| `maxLines` | Maximum lines before scrolling | `maxLines={3}` |
Expand Down
31 changes: 5 additions & 26 deletions ui-kit/react-native/conversations.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@
"callbacks": {
"onItemPress": "(conversation: CometChat.Conversation) => void",
"onItemLongPress": "(conversation: CometChat.Conversation) => void",
"onBack": "() => void",

Check warning on line 31 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L31

Did you really mean 'onBack'?
"onSelection": "(conversations: Array<CometChat.Conversation>) => void",

Check warning on line 32 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L32

Did you really mean 'onSelection'?
"onError": "(error: CometChat.CometChatException) => void",

Check warning on line 33 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L33

Did you really mean 'onError'?
"onEmpty": "() => void",

Check warning on line 34 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L34

Did you really mean 'onEmpty'?
"onLoad": "(list: CometChat.Conversation[]) => void",

Check warning on line 35 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L35

Did you really mean 'onLoad'?
"onSearchBarClicked": "() => void",
"onSearchTextChanged": "(searchText: string) => void",
"onSubmit": "(conversations: Array<CometChat.Conversation>) => void"

Check warning on line 38 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L38

Did you really mean 'onSubmit'?
},
"visibility": {
"hideBackButton": { "type": "boolean", "default": true },
Expand Down Expand Up @@ -74,7 +74,7 @@
"SearchView": "() => JSX.Element"
},
"formatting": {
"textFormatters": {

Check warning on line 77 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L77

Did you really mean 'textFormatters'?
"type": "CometChatTextFormatter[]",
"default": "default formatters from data source"
}
Expand Down Expand Up @@ -287,7 +287,7 @@
}
```

#### onSelection

Check warning on line 290 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L290

Did you really mean 'onSelection'?

Fires when conversations are selected/deselected in selection mode. Requires `selectionMode` to be set.

Expand All @@ -309,7 +309,7 @@
}
```

#### onError

Check warning on line 312 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L312

Did you really mean 'onError'?

Fires on internal errors (network failure, auth issue, SDK exception).

Expand All @@ -328,7 +328,7 @@
}
```

#### onEmpty

Check warning on line 331 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L331

Did you really mean 'onEmpty'?

Fires when the conversation list is empty.

Expand All @@ -344,7 +344,7 @@
}
```

#### onLoad

Check warning on line 347 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L347

Did you really mean 'onLoad'?

Fires when the list is successfully fetched and loaded.

Expand All @@ -363,7 +363,7 @@

### Global UI Events

`CometChatUIEventHandler` emits events subscribable from anywhere in the application. Subscribe in a `useEffect` and unsubscribe on cleanup.

Check warning on line 366 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L366

Did you really mean 'subscribable'?

| Event | Fires when | Payload |
| --- | --- | --- |
Expand Down Expand Up @@ -417,36 +417,15 @@
nobody else sees it — and it syncs to that user's other devices.

<Warning>
**Off by default, and it needs a server flag that is not seeded.** Pin Conversation requires
**Pin Conversation needs a server flag that is not seeded.** It requires
`features.ux.conversations.pinned.enabled`, which ships enabled in no plan and must be mapped per
app. Until then every attempt rejects with `ERR_FEATURE_NOT_ACCESSIBLE`. On top of that, the kit
needs your own opt-in via `PinConversationConfig.enable(true)`.
app. Until then the option never renders, and a direct SDK call rejects with
`ERR_FEATURE_NOT_ACCESSIBLE`. The UI Kit reads that flag itself at login and on every reconnect —
there is no app code to write.
</Warning>

<Tabs>
<Tab title="TypeScript">
```typescript
import { PinConversationConfig } from "@cometchat/chat-uikit-react-native";

// Once, at app start — defaults to off
PinConversationConfig.enable(true);
```

</Tab>

<Tab title="JavaScript">
```javascript
import { PinConversationConfig } from "@cometchat/chat-uikit-react-native";

PinConversationConfig.enable(true);
```

</Tab>

</Tabs>

`pinConversationOptionVisibility` (default `true`) hides the option on one particular list. It is
**ANDed** with the global config, so the option renders only when both allow it.
**ANDed** with the Dashboard flag, so the option renders only when both allow it.

Check warning on line 428 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L428

Did you really mean 'ANDed'?

<Tabs>
<Tab title="TypeScript">
Expand Down Expand Up @@ -811,7 +790,7 @@
}
```

### addOptions

Check warning on line 793 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L793

Did you really mean 'addOptions'?

Extends the default context menu actions with additional options.

Expand Down Expand Up @@ -839,7 +818,7 @@
}
```

### datePattern

Check warning on line 821 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L821

Did you really mean 'datePattern'?

Custom date format for displaying timestamps.

Expand Down Expand Up @@ -867,13 +846,13 @@
return `${day}, ${hours}:${minutes}`;
};

return <CometChatConversations datePattern={generateDateString} />;

Check warning on line 849 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L849

Did you really mean 'datePattern'?
}
```

### textFormatters

Check warning on line 853 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L853

Did you really mean 'textFormatters'?

Custom text formatters for the conversation subtitle.

Check warning on line 855 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L855

Did you really mean 'formatters'?

<Frame>
<img src="/images/55490fa9-mentions_conversations-1a7b847ad0af53848dc106216ac64e74.png" />
Expand Down Expand Up @@ -940,11 +919,11 @@
function MinimalConversations() {
return (
<CometChatConversations
receiptsVisibility={false}

Check warning on line 922 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L922

Did you really mean 'receiptsVisibility'?
usersStatusVisibility={false}
groupTypeVisibility={false}
deleteConversationOptionVisibility={false}
hideHeader={true}

Check warning on line 926 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L926

Did you really mean 'hideHeader'?
/>
);
}
Expand Down Expand Up @@ -1149,7 +1128,7 @@

---

### hideError

Check warning on line 1131 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L1131

Did you really mean 'hideError'?

Hides the error state view.

Expand Down Expand Up @@ -1298,7 +1277,7 @@

| | |
| --- | --- |
| Type | `(searchText: string) => void` |

Check warning on line 1280 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L1280

Did you really mean 'searchText'?
| Default | `undefined` |

---
Expand All @@ -1316,7 +1295,7 @@

### onSubmit

Callback fired when the submit button is pressed. Requires `selectionMode` to be set.

Check warning on line 1298 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L1298

Did you really mean 'selectionMode'?

| | |
| --- | --- |
Expand Down Expand Up @@ -1393,12 +1372,12 @@

### textFormatters

Custom text formatters for the conversation subtitle.

Check warning on line 1375 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L1375

Did you really mean 'formatters'?

| | |
| --- | --- |
| Type | `CometChatTextFormatter[]` |
| Default | Default formatters from data source |

Check warning on line 1380 in ui-kit/react-native/conversations.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/conversations.mdx#L1380

Did you really mean 'formatters'?

---

Expand Down
39 changes: 39 additions & 0 deletions ui-kit/react-native/core-features.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,34 @@
| [MessageComposer](/ui-kit/react-native/message-composer) | [MessageComposer](/ui-kit/react-native/message-composer) component allows users to compose and send various types of messages, including support for the Mentions feature to directly address participants within the conversation. |
| [MessageList](/ui-kit/react-native/message-list) | [MessageList](/ui-kit/react-native/message-list) component displays a list of sent and received messages. It also supports rendering Mentions, enhancing the clarity and interactivity of conversations by highlighting direct references to users. |

## Pin and Save Messages

CometChat lets users **pin** important messages so they're highlighted for everyone in a conversation, and **save** messages privately to a personal list that spans every conversation. Pinned and saved messages show an indicator on the bubble, and dedicated screens let users review them.

| Components | Functionality |
| --- | --- |
| [Message List](/ui-kit/react-native/message-list) | Adds Pin, Unpin, Save, and Unsave to the message options when the features are enabled. |

Check warning on line 156 in ui-kit/react-native/core-features.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/core-features.mdx#L156

Did you really mean 'Unsave'?
| [Pinned Messages](/ui-kit/react-native/pinned-messages) | A screen of the messages pinned in a conversation, opened from the [Message Header](/ui-kit/react-native/message-header). |
| [Saved Messages](/ui-kit/react-native/saved-messages) | A personal screen of the current user's saved messages across all conversations. |

Your app can also cap how many items a user may pin or save through three app settings:

| App setting | Caps |
| --- | --- |
| features.ux.messages.pinned.limit | Pinned messages per conversation |
| features.ux.messages.saved.limit | Saved messages per user |
| features.ux.conversations.pinned.limit | Pinned conversations per user |

The UI Kit reads these settings at login. When a user reaches a cap, the kit shows a toast that names the exact limit — no extra handling required. For a full walkthrough, see the [Pin & Save Messages guide](/ui-kit/react-native/guide-pin-and-save-messages).

Check warning on line 168 in ui-kit/react-native/core-features.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/core-features.mdx#L168

Did you really mean 'walkthrough'?

## Pin Conversations

Keep the chats that matter at the top. Users pin a conversation from the long-press menu; pinned conversations show a pin indicator and stay above the rest of the list.

| Component | Role |
| --- | --- |
| [CometChatConversations](/ui-kit/react-native/conversations) | Provides the Pin/Unpin conversation option, the row indicator, and pinned-first ordering. |

## Rich Text Formatting

Rich Text Formatting allows users to style their messages with bold, italic, underline, strikethrough, code, links, lists, blockquotes, and code blocks. This brings richer expression to conversations and helps users emphasize key points.
Expand Down Expand Up @@ -236,6 +264,17 @@
| [MessageComposer](/ui-kit/react-native/message-composer) | [MessageComposer](/ui-kit/react-native/message-composer) component enables users to compose and send various types of messages. |
| [MessageList](/ui-kit/react-native/message-list) | [MessageList](/ui-kit/react-native/message-list) component displays a chronological list of sent and received messages. It also supports Mentions, making conversations more interactive and easier to follow by highlighting direct references to users. |

### Thread Subscription

Let users subscribe to or unsubscribe from a thread to control whether its replies notify them. Enabled by default — remove a surface with `hideThreadSubscriptionOption` or `threadSubscriptionVisibility`.

| Component | Role |
| --- | --- |
| [CometChatMessageList](/ui-kit/react-native/message-list) | Provides the Subscribe to thread / Unsubscribe from thread option in the message action sheet. |
| [CometChatMessageHeader](/ui-kit/react-native/message-header) | Shows the subscription bell on the thread view. |

See the [Thread Subscription guide](/ui-kit/react-native/guide-threaded-messages#thread-subscription) for setup and behavior.

## Group Chat

CometChat facilitates Group Chats, allowing users to have conversations with multiple participants simultaneously. This feature is crucial for team collaborations, group discussions, social communities, and more.
Expand Down
1 change: 1 addition & 0 deletions ui-kit/react-native/custom-text-formatter-guide.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: "Custom Text Formatter"
sidebarTitle: "Text Formatter Base Class"
description: "Extend the CometChatTextFormatter base class to implement custom inline text patterns with regex and callbacks in React Native."
---

Expand All @@ -9,7 +10,7 @@
| --- | --- |
| Components | `CometChatMessageComposer`, `CometChatMessageHeader`, `CometChatMessageList` |
| Package | `@cometchat/chat-uikit-react-native` |
| Key class | `CometChatTextFormatter` (abstract base class for custom formatters) |

Check warning on line 13 in ui-kit/react-native/custom-text-formatter-guide.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/custom-text-formatter-guide.mdx#L13

Did you really mean 'formatters'?
| Required setup | `CometChatUIKit.init(UIKitSettings)` then `CometChatUIKit.login("UID")` |
| Purpose | Extend to create custom inline text patterns with regex, styling, and callbacks |
| Features | Text formatting, customizable styles, dynamic text replacement, suggestion list integration |
Expand All @@ -18,7 +19,7 @@

</Accordion>

`CometChatTextFormatter` is an abstract class for formatting text in the message composer and message bubbles. Extend it to build custom formatters — hashtags, keywords, or any regex-based pattern.

Check warning on line 22 in ui-kit/react-native/custom-text-formatter-guide.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/custom-text-formatter-guide.mdx#L22

Did you really mean 'formatters'?

| Capability | Description |
| --- | --- |
Expand All @@ -31,7 +32,7 @@

## Base Class Overview

The `CometChatTextFormatter` class provides the foundation for all text formatters in React Native:

Check warning on line 35 in ui-kit/react-native/custom-text-formatter-guide.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/custom-text-formatter-guide.mdx#L35

Did you really mean 'formatters'?

```tsx
import { CometChatTextFormatter } from "@cometchat/chat-uikit-react-native";
Expand Down Expand Up @@ -276,7 +277,7 @@

## Advanced: Suggestion List Integration

For formatters that need to show suggestions (like mentions), implement the `search` method:

Check warning on line 280 in ui-kit/react-native/custom-text-formatter-guide.mdx

View check run for this annotation

Mintlify / Mintlify Validation (cometchat-22654f5b) - vale-spellcheck

ui-kit/react-native/custom-text-formatter-guide.mdx#L280

Did you really mean 'formatters'?

```tsx
import { CometChat } from "@cometchat/chat-sdk-react-native";
Expand Down
3 changes: 2 additions & 1 deletion ui-kit/react-native/guide-overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ Use these guides after completing the base [Getting Started](/ui-kit/react-nativ
| [Threaded Messages](/ui-kit/react-native/guide-threaded-messages) | Threaded replies: open parent context, list replies, compose within focused thread. |
| [Search Messages](/ui-kit/react-native/guide-search-messages) | Add full‑text message search across conversations with result routing into context. |
| [Block/Unblock User](/ui-kit/react-native/guide-block-unblock-user) | Let users block or unblock others in 1:1 chats; hides composer and shows an unblock prompt. |
| [Custom Text Formatter](/ui-kit/react-native/custom-text-formatter-guide) | Extend the base formatter to implement custom inline patterns (hashtags, keywords) with regex + callbacks. |
| [Custom Text Formatter](/ui-kit/react-native/guide-text-color) | Add a color button to the composer toolbar that colors selected text, rendered in the sent message. |
| [Text Formatter Base Class](/ui-kit/react-native/custom-text-formatter-guide) | Extend the base formatter to implement custom inline patterns (hashtags, keywords) with regex + callbacks. |
| [Mentions Formatter](/ui-kit/react-native/mentions-formatter-guide) | Add @mentions with styled tokens, suggestion list, and click handling for users & members. |
| [URL Formatter](/ui-kit/react-native/url-formatter-guide) | Detect and style plain URLs, emails, and phone numbers as clickable links. |
| [Shortcut Formatter](/ui-kit/react-native/shortcut-formatter-guide) | Provide !shortcut style expansions invoking extension APIs before inserting content. |
Expand Down
Loading
Loading