Skip to content

docs(ui-kit/ios,sdk/ios): pin & save messages and thread subscription - #465

Merged
ketanyekale merged 5 commits into
mainfrom
docs/ios-thread-subscription-pin-save
Sep 10, 2026
Merged

ketanyekale merged 5 commits into
mainfrom
docs/ios-thread-subscription-pin-save

Conversation

@shreeyajoshi-cometchat

@shreeyajoshi-cometchat shreeyajoshi-cometchat commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Type of Change

  • Documentation correction/update
  • New documentation
  • Improvement to existing documentation
  • Typo fix
  • Other (please specify)

Checklist

  • My branch name follows the naming convention
  • My changes follow the documentation style guide
  • I have checked for spelling and grammar errors
  • All links in my changes are valid and working
  • My changes are accurately described in this pull request

🤖 Generated with Claude Code

@mintlify

mintlify Bot commented Aug 10, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
cometchat 🟢 Ready View Preview Aug 10, 2026, 8:17 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

Documents the two iOS features from the 5.1.19 release that had no
documentation: Pin & Save Messages (ENG-37851..37853) and Thread
Subscription (ENG-37571..37575).

New pages:
- sdk/ios/pin-save-message - pin/unpin, save/unsave, list fetch via
  MessagesRequest, and the real-time delegate callbacks
- ui-kit/ios/pinned-messages - the per-conversation pinned panel
- ui-kit/ios/saved-messages - the private cross-conversation panel
- ui-kit/ios/guide-pin-save-message - end-to-end guide
- sdk/ios/thread-subscription - subscribeToThread/unsubscribeFromThread,
  the tri-state threadSubscriptionState, ThreadsRequest and the
  MessageThread model, and the CometChatThreadDelegate callbacks
- ui-kit/ios/guide-thread-subscription - the gate, the action-sheet
  option, the message-header bell, and cross-surface sync

Updated where the features landed: message-list, message-header,
message-template, events, core-features, conversations,
components-overview, guide-overview, guide-threaded-messages,
sdk/ios/threaded-messages and docs.json navigation.

Thread-subscription notes:
- copy is "Subscribe to thread"/"Unsubscribe from thread", carried by
  the THREAD_SUBSCRIBE/THREAD_UNSUBSCRIBE keys
- the bell ships in CometChatMessageHeader, gated by parentMessage plus
  enableThreadSubscription, with hideThreadSubscriptionButton as the
  escape hatch for a host that draws its own
- the action-sheet option is offered on parent messages only, never on
  a reply, but is not gated on reply count
- unlike React, iOS has no receiver-type check, so the option appears in
  one-on-one conversations as well as groups; the pages say so rather
  than describing the feature as group-only

Two SDK pages used "pinned" as a tags example, which now reads as the
pin feature; changed to "important" with a pointer to the real API.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The pages were written against the state of the two feature branches on
10 Aug. Both moved since, and the SDK removed an API the docs still
taught.

Removed APIs, replaced with what shipped:
- CometChat.threadSubscriptionState(forParentMessageId:) and its
  SUBSCRIBED/NOT_SUBSCRIBED/UNKNOWN tri-state are gone. The SDK stopped
  caching subscription state it could not fully observe; the server flag
  now rides on each message as BaseMessage.threadSubscribed. Documents
  the fetched-vs-not-reported distinction and the local-only setter.
- CometChatThreadDelegate, ThreadSubscriptionEvent, ThreadReplyEvent and
  their two callbacks no longer exist. Replaced the real-time section
  with how to actually stay in sync, and a warning against rebuilding
  the local cache the SDK deliberately dropped.
- MessageThread.subscriptionState -> isSubscribed.
- core-features.mdx used the removed synchronous read; it now shows the
  kit's ccThreadSubscriptionChanged listener instead.

Newly documented:
- CometChatException.errorParams, with a worked example on the pin limit
  and a note that it is not ObjC-representable.
- The compound (updatedAt, id) thread-list cursor.
- QuotedRepliesOptions as an enum distinct from RepliesOptions, since
  value 4 means something different on each.
- enableThreadSubscription on CometChatPinnedMessages.

UI Kit surface changes:
- the bell moved to CometChatThreadedMessageHeader as a second surface;
  enable it on exactly one of the two headers
- enableThreadSubscription/hideThreadSubscriptionButton take their set()
  builder form on the headers
- subscription is offered in 1-1 conversations again, after the
  group-only detour
- the bell needs a parent message that has been sent
- gallery captions inherit the text bubble's colour

Also drops a duplicated sentence in message-list.mdx.

Verified every symbol against feat/pin-save-threads-4.1.9 (SDK) and
feat/pin-save-thread (UI Kit) rather than the changelogs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both feature PRs ship these versions: uikit-ios#971 (v5.1.22) and
chat-sdk-ios#485 (v4.1.9). Updates the six pins in getting-started —
the quick-reference table, the Podfile snippet, the SPM exact-version
entries and the binary-compatibility warning.

CometChatCallsSDK is left at 4.2.3 for now, by request. Note that the
repo's own Podfile.lock resolves CometChatCallsSDK 5.0.4, and
CometChatPushNotifications requires >= 5.0.0, so that pin is separately
stale and worth revisiting.

These versions are not on CocoaPods trunk yet — latest published are
UI Kit 5.1.18 and Chat SDK 4.1.7 — so hold this page until both
releases publish, or `pod install` will fail to resolve.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Three tag examples used "pinned" as a free-form tag. With pin/save
messages and pinned conversations now real features, those read as the
feature rather than as an arbitrary label.

Swapped for neutral tags and added a pointer to the actual API in each
place: pin-save-message for messages, pinConversation and
set(pinnedBy:) for conversations.

Completes the sweep started in a1b76a5, which caught
additional-message-filtering and send-message but missed these.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jitvarpatil

Copy link
Copy Markdown
Contributor

Docs review — ✅ Approve (one should-fix)

The iOS entry in this feature family (24 files, +2,387/−15) — two new SDK pages, four new UI Kit pages/guides, plus updates across the component docs. Structurally the cleanest of the five platform PRs.

✅ What passed

  • Structure: all 7 new pages wired into nav; 0 nav breaks, 0 orphans, 0 broken links (176 files scanned), redirects +0; no placeholders/TODOs across 2,387 lines.
  • SDK APIs verified on mainline: pinMessage · unpinMessage · saveMessage · unsaveMessage · subscribeToThread · unsubscribeFromThread · isPinMessageEnabled · isSaveMessageEnabled.
  • UI Kit components verified: CometChatPinnedMessages / CometChatSavedMessages land on master-v5 in the commit "v5.1.22 — pin & save messages, pinned conversations, thread subscriptions (#971)" — i.e. they ship in 5.1.22, the current release.

🟡 Should-fix — no minimum version stated, and iOS has an extra wrinkle

Nothing on these pages says which version introduced the feature. That matters more on iOS than elsewhere, because of a distribution gap:

CocoaPods trunk's newest CometChatUIKitSwift is 5.1.18 — four releases behind 5.1.22 (the trunk list ends … 5.1.15, 5.1.16, 5.1.18). So a reader following the CocoaPods install path literally cannot obtain the components documented here; only SPM consumers can, until the pod catches up.

<Note>
**Available since v5.1.22** — pin, save, and thread subscriptions require
`CometChatUIKitSwift` v5.1.22 or later.

CocoaPods currently publishes up to 5.1.18; use Swift Package Manager to get
5.1.22 until the pod catches up.
</Note>

Worth confirming the Chat SDK minimum the same way (trunk shows CometChatSDK 4.1.9) — the APIs are on SDK mainline, but I couldn't pin their first released version from the tags available to me.

🔁 5 of 5 — worth fixing at the template level

PR Platform Requires
#461 Flutter cometchat_sdk 5.0.7 / uikit 6.1.1
#493 React Native chat-sdk-react-native 4.1.0
#464 React chat-uikit-react 7.2.0
#469 JavaScript chat-sdk-javascript 4.2.0
#465 iOS CometChatUIKitSwift 5.1.22

Every page in this rollout ships without an availability callout, and in each case the feature exists only in the newest release. The transcription rollout (#487) already does this correctly across all five platforms — same pattern, ready to copy into the template.

Content is accurate and well-structured. Approving on the assumption the version note lands here or in a quick follow-up. 🚀

🤖 Automated docs review (Mintlify link/redirect/nav checks + API verification against iOS SDK / UI Kit sources and CocoaPods trunk).

jitvarpatil
jitvarpatil previously approved these changes Sep 9, 2026

@jitvarpatil jitvarpatil left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docs review — ✅ Approve (one should-fix)

The iOS entry in this feature family (24 files, +2,387/−15) — two new SDK pages, four new UI Kit pages/guides, plus updates across the component docs. Structurally the cleanest of the five platform PRs.

✅ What passed

  • Structure: all 7 new pages wired into nav; 0 nav breaks, 0 orphans, 0 broken links (176 files scanned), redirects +0; no placeholders/TODOs across 2,387 lines.
  • SDK APIs verified on mainline: pinMessage · unpinMessage · saveMessage · unsaveMessage · subscribeToThread · unsubscribeFromThread · isPinMessageEnabled · isSaveMessageEnabled.
  • UI Kit components verified: CometChatPinnedMessages / CometChatSavedMessages land on master-v5 in the commit "v5.1.22 — pin & save messages, pinned conversations, thread subscriptions (#971)" — i.e. they ship in 5.1.22, the current release.

🟡 Should-fix — no minimum version stated, and iOS has an extra wrinkle

Nothing on these pages says which version introduced the feature. That matters more on iOS than elsewhere, because of a distribution gap:

CocoaPods trunk's newest CometChatUIKitSwift is 5.1.18 — four releases behind 5.1.22 (the trunk list ends … 5.1.15, 5.1.16, 5.1.18). So a reader following the CocoaPods install path literally cannot obtain the components documented here; only SPM consumers can, until the pod catches up.

<Note>
**Available since v5.1.22** — pin, save, and thread subscriptions require
`CometChatUIKitSwift` v5.1.22 or later.

CocoaPods currently publishes up to 5.1.18; use Swift Package Manager to get
5.1.22 until the pod catches up.
</Note>

Worth confirming the Chat SDK minimum the same way (trunk shows CometChatSDK 4.1.9) — the APIs are on SDK mainline, but I couldn't pin their first released version from the tags available to me.

🔁 5 of 5 — worth fixing at the template level

PR Platform Requires
#461 Flutter cometchat_sdk 5.0.7 / uikit 6.1.1
#493 React Native chat-sdk-react-native 4.1.0
#464 React chat-uikit-react 7.2.0
#469 JavaScript chat-sdk-javascript 4.2.0
#465 iOS CometChatUIKitSwift 5.1.22

Every page in this rollout ships without an availability callout, and in each case the feature exists only in the newest release. The transcription rollout (#487) already does this correctly across all five platforms — same pattern, ready to copy into the template.

Content is accurate and well-structured. Approving on the assumption the version note lands here or in a quick follow-up. 🚀

🤖 Automated docs review (Mintlify link/redirect/nav checks + API verification against iOS SDK / UI Kit sources and CocoaPods trunk).

shreeyajoshi-cometchat added a commit that referenced this pull request Sep 9, 2026
…d threads

Review feedback on #465: none of the new pages said which release
introduced the feature, and iOS has a distribution gap that makes it
matter more than on the other platforms.

New pages get a callout at the top; sections added to existing pages get
an inline "Available since" marker rather than a page-level note, so the
version claim is scoped to the new API and not the whole page.

Versions verified against CocoaPods trunk and the public git tags:

- UI Kit components/features ship in 5.1.22, which pairs with Chat SDK
  4.1.9. Trunk's newest CometChatUIKitSwift is 5.1.18, so the UI Kit
  callouts point CocoaPods users at SPM — the 5.1.22 tag does exist on
  cometchat-uikit-ios, so pinning the exact version resolves.
- The SDK APIs need 4.1.9, which IS published on trunk, so those pages
  carry the version line without the CocoaPods caveat.

Also corrects two prerequisites that were wrong or unhelpfully vague:
guide-thread-subscription asked for "Chat SDK v5 or later", a version
that does not exist on iOS, and guide-pin-save-message asked for
"UIKit v5+", which would let a reader install 5.1.18 and not find the
feature.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…d threads

Review feedback on #465: none of the new pages said which release
introduced the feature.

New pages get a callout at the top; sections added to existing pages get
an inline "Available since" marker rather than a page-level note, so the
version claim is scoped to the new API and not the whole page.

UI Kit components and features ship in 5.1.22, which pairs with Chat SDK
4.1.9; the SDK APIs need 4.1.9.

Also corrects two prerequisites that were wrong or unhelpfully vague:
guide-thread-subscription asked for "Chat SDK v5 or later", a version
that does not exist on iOS, and guide-pin-save-message asked for
"UIKit v5+", which would let a reader install an older 5.1.x and not
find the feature.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@shreeyajoshi-cometchat
shreeyajoshi-cometchat force-pushed the docs/ios-thread-subscription-pin-save branch from 210a049 to 929a7ec Compare September 9, 2026 15:29
@jitvarpatil

Copy link
Copy Markdown
Contributor

Re-review — ✅ Approve

My earlier approval was auto-dismissed by the new commits. Re-reviewed on head 929a7ec.

✅ The should-fix is addressed — thoroughly

Version notes now appear on all six feature pages, and they're better than what I suggested: they state both the UI Kit and its Chat SDK floor, and the guides repeat it in their prerequisites.

  • sdk/ios/pin-save-message.mdx"Available from Chat SDK v4.1.9"
  • sdk/ios/thread-subscription.mdx"Available from Chat SDK v4.1.9"
  • ui-kit/ios/pinned-messages.mdx / saved-messages.mdx"Available from UI Kit v5.1.22 … which depends on CometChatSDK v4.1.9"
  • ui-kit/ios/guide-pin-save-message.mdx / guide-thread-subscription.mdx — same, plus a prerequisites line

Nice touch stating the transitive SDK floor — that's the bit integrators usually trip on.

Structure re-verified on the new head: 0 nav breaks, 0 orphans, 0 broken links (176 files), redirects +0.

🟡 One optional addition — the CocoaPods gap is still open

Re-checked just now: CocoaPods trunk's newest CometChatUIKitSwift is still 5.1.18 (has 5.1.22: false). So a reader who follows the Pods install path can't yet get 5.1.22, and the note as written ("requires v5.1.22 or later") will read as simply unavailable to them.

Optional one-liner alongside the existing note:

CocoaPods currently publishes up to 5.1.18 — use Swift Package Manager until the pod catches up.

Entirely optional; it's a distribution issue rather than a docs defect, and it resolves itself the moment the pod is pushed. Not worth holding the PR for.

Content is accurate, structurally clean, and now correctly version-gated. Ready to merge. 🚀

🤖 Automated docs review — re-check after fixes.

@jitvarpatil jitvarpatil left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-review — ✅ Approve

My earlier approval was auto-dismissed by the new commits. Re-reviewed on head 929a7ec.

✅ The should-fix is addressed — thoroughly

Version notes now appear on all six feature pages, and they're better than what I suggested: they state both the UI Kit and its Chat SDK floor, and the guides repeat it in their prerequisites.

  • sdk/ios/pin-save-message.mdx"Available from Chat SDK v4.1.9"
  • sdk/ios/thread-subscription.mdx"Available from Chat SDK v4.1.9"
  • ui-kit/ios/pinned-messages.mdx / saved-messages.mdx"Available from UI Kit v5.1.22 … which depends on CometChatSDK v4.1.9"
  • ui-kit/ios/guide-pin-save-message.mdx / guide-thread-subscription.mdx — same, plus a prerequisites line

Nice touch stating the transitive SDK floor — that's the bit integrators usually trip on.

Structure re-verified on the new head: 0 nav breaks, 0 orphans, 0 broken links (176 files), redirects +0.

🟡 One optional addition — the CocoaPods gap is still open

Re-checked just now: CocoaPods trunk's newest CometChatUIKitSwift is still 5.1.18 (has 5.1.22: false). So a reader who follows the Pods install path can't yet get 5.1.22, and the note as written ("requires v5.1.22 or later") will read as simply unavailable to them.

Optional one-liner alongside the existing note:

CocoaPods currently publishes up to 5.1.18 — use Swift Package Manager until the pod catches up.

Entirely optional; it's a distribution issue rather than a docs defect, and it resolves itself the moment the pod is pushed. Not worth holding the PR for.

Content is accurate, structurally clean, and now correctly version-gated. Ready to merge. 🚀

🤖 Automated docs review — re-check after fixes.

@ketanyekale
ketanyekale merged commit e50db43 into main Sep 10, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants