<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: CometChat</title>
    <description>The latest articles on DEV Community by CometChat (@cometchat_original).</description>
    <link>https://dev.to/cometchat_original</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3658594%2F3345ff10-bfc7-4e03-a8de-c3a0f8af44a7.png</url>
      <title>DEV Community: CometChat</title>
      <link>https://dev.to/cometchat_original</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cometchat_original"/>
    <language>en</language>
    <item>
      <title>Transcription &amp; closed captions for calls</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Sun, 20 Sep 2026 06:21:37 +0000</pubDate>
      <link>https://dev.to/cometchat_original/transcription-closed-captions-for-calls-29fd</link>
      <guid>https://dev.to/cometchat_original/transcription-closed-captions-for-calls-29fd</guid>
      <description>&lt;p&gt;Transcription and live closed captions for voice and video calling are now available across all five CometChat Calls SDK platforms: Android, iOS, JavaScript, React Native, and Flutter. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Calls often need to remain useful after they end.&lt;/p&gt;

&lt;p&gt;Transcripts can help teams review conversations, maintain records, support compliance workflows, or make call content easier to access later. Live closed captions also make conversations more accessible by allowing users to follow along in real time.&lt;/p&gt;

&lt;p&gt;Instead of integrating a separate transcription or captioning provider alongside your calling stack, these capabilities are available through the same CometChat Calls SDK you're already using.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features and Capabilities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Programmatic start and stop&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use startTranscription() and stopTranscription() to control transcription directly from your application logic, without relying on in-call UI controls.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Auto-start transcription&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Configure transcription to start automatically when a call session begins, without requiring users to enable it manually.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Live closed captions&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Display captions during the call, allowing participants to follow the conversation in real time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Control panel visibility&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Choose whether transcription and caption controls appear in your in-call UI based on the experience you want to provide.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Transcript retrieval from call logs&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once a call ends, retrieve the completed transcript through call logs without setting up a separate transcript storage workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Integration Works
&lt;/h2&gt;

&lt;p&gt;Transcription and caption controls are out of box and can be enabled by the user.&lt;/p&gt;

&lt;p&gt;This gives you flexibility over how the feature is implemented. &lt;/p&gt;

&lt;h2&gt;
  
  
  Minimum SDK Versions
&lt;/h2&gt;

&lt;p&gt;Transcription and Closed Captions require the following minimum Calls SDK versions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Android&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Calls SDK v5.0.4+&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;iOS&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Calls SDK v5.0.4+&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Calls SDK v5.0.5+&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;React Native&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Calls SDK v5.0.5+&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flutter&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Calls SDK v5.0.7+&lt;/p&gt;

&lt;p&gt;Check your current Calls SDK version before implementing the feature. Transcription and Closed Captions are not available in versions below these thresholds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentation
&lt;/h2&gt;

&lt;p&gt;Android: &lt;a href="https://www.cometchat.com/docs/calls/android/transcription" rel="noopener noreferrer"&gt;https://www.cometchat.com/docs/calls/android/transcription&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iOS: &lt;a href="https://www.cometchat.com/docs/calls/ios/transcription" rel="noopener noreferrer"&gt;https://www.cometchat.com/docs/calls/ios/transcription&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;JavaScript: &lt;a href="https://www.cometchat.com/docs/calls/javascript/transcription" rel="noopener noreferrer"&gt;https://www.cometchat.com/docs/calls/javascript/transcription&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;React Native: &lt;a href="https://www.cometchat.com/docs/calls/react-native/transcription" rel="noopener noreferrer"&gt;https://www.cometchat.com/docs/calls/react-native/transcription&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Flutter: &lt;a href="https://www.cometchat.com/docs/calls/flutter/transcription" rel="noopener noreferrer"&gt;https://www.cometchat.com/docs/calls/flutter/transcription&lt;/a&gt;&lt;/p&gt;

</description>
      <category>calling</category>
      <category>cometchat</category>
      <category>automation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A Guide to Developing HIPAA Compliant Chat for Telemedicine Apps</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Sun, 20 Sep 2026 06:16:37 +0000</pubDate>
      <link>https://dev.to/cometchat_original/a-guide-to-developing-hipaa-compliant-chat-for-telemedicine-apps-72a</link>
      <guid>https://dev.to/cometchat_original/a-guide-to-developing-hipaa-compliant-chat-for-telemedicine-apps-72a</guid>
      <description>&lt;p&gt;Violating HIPAA is easier than it should be. One doctor-patient message through non-secure chat is enough to put you in violation and HIPAA's civil penalties run from $50,000 per violation up to $1.5 million a year for repeat offenses. That's enough to close a clinic.&lt;/p&gt;

&lt;p&gt;HIPAA compliant chat for a telemedicine app is patient communication - text, voice, video, file sharing - that meets HIPAA's Security Rule: encrypted in transit and at rest, access-controlled, audit-logged, and covered by a Business Associate Agreement (BAA) with every vendor that touches protected health information (PHI). Miss one of those, and none of it is compliant. This guide covers what HIPAA requires, the features that matter for telemedicine, and how to build it without turning compliance into a second product you maintain forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is HIPAA, and how does it apply to chat?
&lt;/h2&gt;

&lt;p&gt;HIPAA - the Health Insurance Portability and Accountability Act, enacted in 1996 is the US federal law that keeps private health information secure. It sets the rules for how healthcare organizations store, manage, and grant access to patient data.&lt;/p&gt;

&lt;p&gt;Chat is squarely in scope. Sensitive information created inside a care relationship - images, file attachments, even IP addresses - moves easily through private messages and group threads. Less-secure chat apps ship with weak encryption, thin authentication, and few controls. That's exactly the gap HIPAA exists to close.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are you subject to HIPAA?
&lt;/h2&gt;

&lt;p&gt;Two roles matter. Covered entities provide treatment, payment, or healthcare operations - hospitals, doctors, pharmacies, insurers. Business associates are the services that transmit, store, or receive PHI on a covered entity's behalf - which, since a 2013 expansion, includes cloud vendors and chat software providers serving healthcare.&lt;/p&gt;

&lt;p&gt;If you're building a telemedicine app that handles PHI, you're a business associate. So is your chat provider. Both are on the hook.&lt;/p&gt;

&lt;h2&gt;
  
  
  What counts as PHI in a telemedicine app?
&lt;/h2&gt;

&lt;p&gt;PHI is any information that identifies a patient and relates to their health, care, or payment for care. In a chat context that's broad:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Medical records, from an MRI scan to blood test results&lt;/li&gt;
&lt;li&gt;Billing records and payment methods&lt;/li&gt;
&lt;li&gt;Conversations between patient and doctor, or between clinicians&lt;/li&gt;
&lt;li&gt;Any message, note, image, voicemail, or video created inside the care relationship plus metadata that ties a person to a treatment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assume more PHI than you'd expect, and protect accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What HIPAA actually requires from your chat
&lt;/h2&gt;

&lt;p&gt;The Security Rule splits into administrative, physical, and technical safeguards. For messaging, these are the ones you implement in code and contracts:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;What HIPAA expects&lt;/th&gt;
&lt;th&gt;What it looks like in practice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Encryption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PHI protected in transit and at rest&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AES-256 at rest, TLS 1.2 in transit&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access controls&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Only authorized users reach PHI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Role-based permissions, MFA, SSO&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Audit controls&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;A record of who accessed what, when&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Logs of message and data access&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integrity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PHI can't be improperly altered or destroyed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Message integrity, retention controls&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Transmission security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PHI is safe as it moves across networks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Encrypted channels for chat, calls, files&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BAA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Contract making the vendor liable for PHI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;A signed BAA with every processor&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two things people get wrong here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The BAA is the one that gets skipped.&lt;/strong&gt; A covered entity or business associate must have a signed, executed BAA with every service provider that touches PHI. If a vendor handles PHI and won't sign one, you cannot use them for a compliant workflow - no matter how good their encryption is. The Department of Health and Human Services publishes a sample BAA if you need a starting point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There is no official HIPAA certification.&lt;/strong&gt; No government body stamps a product 'HIPAA approved.' Compliance is a shared responsibility between you and your vendors, established through safeguards and BAAs - not a certificate. Anyone selling you a 'HIPAA certificate' is selling you a PDF. (SOC 2 and HITRUST are real certifications, and they overlap heavily with HIPAA's safeguards, being SOC 2 compliant puts you most of the way there.)&lt;/p&gt;

&lt;p&gt;One myth worth retiring: HIPAA does not require PHI to stay on US servers. There's no data-residency rule in the law. Safeguards and a BAA are what matter though some providers still prefer US-based data centers for their own policy reasons.&lt;/p&gt;

&lt;h2&gt;
  
  
  Must-have vs. nice-to-have chat features for telemedicine
&lt;/h2&gt;

&lt;p&gt;Requirements get you compliant. Features get you adopted. Here's the split for a telemedicine chat client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non-negotiable, across text and video:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enterprise-grade encryption&lt;/strong&gt;. All data, in transit or at rest, encrypted at AES-256 or higher.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Strong authentication&lt;/strong&gt;. MFA plus unique credentials before anyone reaches PHI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automatic logoff&lt;/strong&gt;. Doctors set devices down mid-shift. Auto-logoff keeps an unattended screen from becoming a breach.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Nice-to-have, and worth it for adoption:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Notifications and reminders&lt;/strong&gt;. Pre- and post-care reminders cut no-shows and improve follow-through.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rich media&lt;/strong&gt;. Audio, video, and images together make a virtual visit feel closer to an in-person one.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Secure file sharing&lt;/strong&gt;. Lab results and diagnostic scans move between doctor and patient without leaving the compliant channel.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For text chat, add saved history, presence, typing indicators, and multi-device sync. For video, add screen sharing, group calls (when you need a specialist), and secure recording. All of it inside the same compliant infrastructure because HIPAA covers every channel, not just the text box.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to build HIPAA compliant chat into a telemedicine app
&lt;/h2&gt;

&lt;p&gt;Building it in-house is a real option and it's a serious engineering lift plus a compliance posture you now own forever. The faster path uses infrastructure already built for it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Run a risk assessment first. Find the security and privacy gaps before you write code. A HIPAA compliance checklist speeds this up.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sign the BAA. Before a single message carries PHI, get the BAA in place. CometChat signs BAAs covering chat, voice, video, and notifications, so you're not chasing a separate agreement per channel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Turn on the technical safeguards. Encryption in transit and at rest; role-based access for patients, clinicians, and care teams; MFA; and SSO. CometChat ships these rather than leaving you to assemble them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrate the SDK or UI Kit. Drop in pre-built UI Kits for React, React Native, Flutter, iOS, or Android, or go lower-level with the SDKs. We've also published step-by-step tutorials for iOS and Android telehealth apps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm audit logging covers PHI access, across every channel. You need a record of who accessed what for both security and any future audit and it has to include voice, video, and files, not just text.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're mapping the bigger picture, &lt;a href="https://www.cometchat.com/blog/telemedicine-app-development" rel="noopener noreferrer"&gt;our guide to telemedicine app development&lt;/a&gt; covers the full build, and the telehealth trends piece has the industry numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is CometChat HIPAA compliant?
&lt;/h2&gt;

&lt;p&gt;Yes. CometChat is HIPAA-compliant and signs BAAs to protect PHI, and is independently certified for SOC 2 and HITRUST. It uses AES-256 and TLS 1.2 encryption, role-based access with MFA and SSO, and secure audit logs - across chat, voice, video, and notifications. Infrastructure runs on a 35+ location edge network with a 99.999% uptime SLA.&lt;/p&gt;

&lt;p&gt;That last part matters more than it sounds. Compliance that falls over under load isn't compliance - it's a demo. Patient communication has to hold when the clinic is busy, not just when you're showing it to a stakeholder. CometChat gives you text, voice, and video ready to integrate into a telemedicine app, with the must-have and nice-to-have features already there. See the healthcare solution for the full picture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Is there an official HIPAA certification? No. Unlike SOC 2 or ISO 27001, HIPAA has no certifying body. Compliance is a shared responsibility between covered entities and their vendors, established through safeguards and BAAs - not a certificate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do I need a BAA for a telemedicine chat feature? Yes, if the chat vendor stores, processes, or transmits PHI. Without a signed BAA, using that vendor for patient communication is itself a HIPAA violation, regardless of how strong the encryption is.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Does HIPAA require end-to-end encryption specifically? Not by that name. The Security Rule requires PHI to be encrypted in transit and at rest using recognized standards - AES-256 at rest and TLS 1.2 in transit are the common bar. The rule cares about the protection, not the label.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Does HIPAA apply to video visits and voice calls, not just text? Yes. Any channel carrying PHI is in scope - voice, video, file sharing, notifications, all of it. Keeping every channel inside one compliant platform is simpler than securing each separately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Does PHI have to stay on US servers? No. HIPAA has no data-residency requirement. Proper safeguards and a signed BAA are what keep PHI protected, wherever it's stored.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can I build HIPAA compliant chat myself? You can, and it's a large, ongoing commitment - you own the encryption, access controls, audit logging, and compliance posture forever. Most telemedicine teams use compliant infrastructure so their engineers can build the care experience instead of maintaining a messaging stack.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;

&lt;p&gt;Chat looks simple right up until PHI touches it. If you're building a telemedicine app and want the compliance groundwork handled before it becomes a second product to maintain, that's what CometChat is built for. Sign up and start building, or talk to our team first.&lt;/p&gt;

</description>
      <category>hipaa</category>
      <category>cometchat</category>
      <category>appconfig</category>
      <category>puppet</category>
    </item>
    <item>
      <title>CometChat Cards</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Thu, 03 Sep 2026 08:15:47 +0000</pubDate>
      <link>https://dev.to/cometchat_official_account/cometchat-cards-36fp</link>
      <guid>https://dev.to/cometchat_official_account/cometchat-cards-36fp</guid>
      <description>&lt;p&gt;Most of what people send each other in a chat isn't really a sentence. Someone shares an event, and the date, location, and RSVP link should travel together. A group admin posts an announcement that deserves more than a wall of text. A friend drops a link that needs a clear next step attached, not just a bare URL. In a 1:1 or group conversation, all of that gets squeezed into plain text, because there's never been a way to send something more structured than a message bubble.&lt;/p&gt;

&lt;p&gt;CometChat Cards fixes that. A card carries a block and renders natively, as images, buttons, and layouts, right inside the same 1:1 or group chat window a text message would appear in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does this matter to me as a developer building chat experiences?
&lt;/h2&gt;

&lt;p&gt;Every custom message type you've ever built for a chat app followed the same path: design the payload, write a renderer for it, wire up the actions, repeat for the next one. It doesn't scale past the first few designs, and every platform you support means doing it again.&lt;/p&gt;

&lt;p&gt;CometChat Cards take that off your plate. Design a card once, visually, in the CometChat Dashboard, and every UI Kit that supports the format renders it the same way, no custom parsing required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key features and capabilities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Card Builder, a visual editor in the Dashboard.&lt;/strong&gt;&lt;br&gt;
Build cards from 20 elements across four groups: content (text, markdown, image, icon, avatar, badge, chip, code block), layout (row, column, grid, accordion, tabs, divider, spacer), interactive (button, icon button, link), and data (table, progress bar). Four elements, button, icon button, link, and chip, can carry an action, and there are nine kinds to choose from: open a URL, start a chat with a user or group, send a message, copy to clipboard, download a file, initiate a call, hit an API, or run a custom callback in your app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nine starter components.&lt;/strong&gt;&lt;br&gt;
Product Card, Order Confirmation, Order Tracking, Event Card, Announcement, Quick Reply Buttons, Feedback, Data Table, and Carousel come pre-assembled, so you're editing instead of building from a blank canvas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Variables&lt;/strong&gt;&lt;br&gt;
Insert placeholders like {{user.name}} anywhere in a card's text or URL fields, and CometChat fills them in per recipient when the card sends.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Built into every UI Kit.&lt;/strong&gt;&lt;br&gt;
Card messages are rendered automatically across all CometChat UI Kits. When a card message appears in a conversation, the UI Kit detects it and displays the appropriate card interface without any additional setup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No wiring required&lt;/strong&gt;&lt;br&gt;
Card messages are handled internally by the UI Kit, so they work out of the box in CometChatMessageList and other standard conversation views across all supported platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fallback text&lt;/strong&gt;&lt;br&gt;
Every card includes fallback text. If the card JSON is malformed or a client doesn't support cards yet, the UI Kit falls back to that text instead of showing nothing, so the message still says something.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where this shows up
&lt;/h2&gt;

&lt;p&gt;CometChat already builds for these industries. Card Builder's starter components map onto what's already happening in each one's 1:1 and group chats:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Marketplace&lt;/strong&gt;&lt;br&gt;
A buyer and seller are already negotiating a listing in 1:1 chat. A Product Card carries the photo, price, and condition inline instead of the buyer switching to a listing page, and an Order Confirmation card closes the loop once they agree.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;On-demand services&lt;/strong&gt;&lt;br&gt;
Customer and provider are coordinating a job in real time. An Order Tracking card shows live status and ETA right in the thread, the same conversation where they're already discussing pickup details or a delivery photo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Education&lt;/strong&gt;&lt;br&gt;
A teacher posts to a class group chat. An Announcement or Event Card carries a session time, a join link, and an RSVP button, instead of the group scrolling past three separate messages to piece it together.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gaming&lt;/strong&gt;&lt;br&gt;
A clan or guild group chat gets patch notes, a Data Table of leaderboard standings, or a Carousel of upcoming tournaments, laid out the way a status update actually reads instead of a wall of patch numbers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Marketplace&lt;/strong&gt;&lt;br&gt;
A buyer and seller are already negotiating a listing in 1:1 chat. A Product Card carries the photo, price, and condition inline instead of the buyer switching to a listing page, and an Order Confirmation card closes the loop once they agree.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;On-demand services.&lt;/strong&gt;&lt;br&gt;
Customer and provider are coordinating a job in real time. An Order Tracking card shows live status and ETA right in the thread, the same conversation where they're already discussing pickup details or a delivery photo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Education&lt;/strong&gt;&lt;br&gt;
A teacher posts to a class group chat. An Announcement or Event Card carries a session time, a join link, and an RSVP button, instead of the group scrolling past three separate messages to piece it together.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gaming&lt;/strong&gt;&lt;br&gt;
A clan or guild group chat gets patch notes, a Data Table of leaderboard standings, or a Carousel of upcoming tournaments, laid out the way a status update actually reads instead of a wall of patch numbers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Healthcare&lt;/strong&gt;&lt;br&gt;
A patient and provider are messaging 1:1. An Event Card carries an appointment time with a reschedule button attached, or a Feedback card collects a quick check-in after a visit, without either side leaving the thread.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dating&lt;/strong&gt;&lt;br&gt;
Two matches are talking. Quick Reply Buttons turn a common question into a tap instead of a typed reply, and a Carousel can surface shared interests or icebreaker prompts inline.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Community and social.&lt;/strong&gt;&lt;br&gt;
A group admin drops an Event Card for a meetup with an RSVP action, or an Announcement card for a rule change, so it reads as distinct from the conversation instead of getting lost in it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SaaS businesses&lt;/strong&gt;&lt;br&gt;
A workspace or support channel gets a Data Table showing open ticket status, or an Announcement card for a new feature, sent to a group the same way any other message would be, just structured.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reference links
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.cometchat.com/docs/ui-kit/react/components/card-bubble" rel="noopener noreferrer"&gt;Card Bubble component docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cometchat.com/docs/card-builder/overview" rel="noopener noreferrer"&gt;CometChat Card Builder overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cometchat.com/docs/card-builder/elements" rel="noopener noreferrer"&gt;Elements and actions reference&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cometchat.com/docs/sdk/javascript/card-messages" rel="noopener noreferrer"&gt;Card messages in the JavaScript SDK&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>news</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI agents for chat</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Wed, 02 Sep 2026 08:56:46 +0000</pubDate>
      <link>https://dev.to/cometchat_original/ai-agents-for-chat-d1c</link>
      <guid>https://dev.to/cometchat_original/ai-agents-for-chat-d1c</guid>
      <description>&lt;p&gt;CometChat’s iOS UI Kit iOS UI Kit (v5+) now supports AI agent chat. Integrate AI agents into your iOS app to provide intelligent conversational experiences with chat history, contextual responses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters to iOS developers
&lt;/h2&gt;

&lt;p&gt;An AI agent isn't a different kind of chat screen — it's the same one-on-one messaging UI you've already built, pointed at a different kind of user. Every time a platform lacks that primitive, you end up building a parallel "AI chat" screen: its own message list, its own way of remembering past sessions, its own resume logic. That's a second UI to maintain for a conversation that should behave like any other thread.&lt;/p&gt;

&lt;p&gt;The iOS UI Kit closes that gap. CometChatMessageHeader, CometChatMessageList, and CometChatMessageComposer handle an agent conversation exactly like a human one. You detect the agent,  route to the same components, and configure a few agent-specific behaviors — history, streaming, tools on top.&lt;/p&gt;

&lt;p&gt;Scope: AI agents respond in one-on-one conversations today , the agent is a user, and you chat with it on the same 1:1 screen. &lt;/p&gt;

&lt;h2&gt;
  
  
  Key features and capabilities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agent detection without new data models.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's no separate "isAgent" flag to fetch and store. CometChatSDK already carries a role on every User; the UI Kit convention is to check that string for "agentic" and branch your navigation accordingly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chat history browsing.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CometChatAIAssistanceChatHistory lists a user's past AI conversations. It exposes onNewChatButtonClicked to start fresh and onMessageClicked to resume a previous one — both handed back to your view controller so you control navigation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Streaming responses, tunable.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;messageList.set(streamingSpeed: 50) sets how many characters per second an AI response renders at, rather than dumping the full message at once.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Suggested messages&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;messageComposer.set(suggestedMessages: [...]) surfaces quick-start prompts in the composer so a new conversation doesn't open on a blank field.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Custom AI tools.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;messageComposer.set(aiAssistantTools:) takes a closure keyed to the current message, returning an array of AITool(name:description:) — so the tools you expose to the agent can change based on where the conversation is, not just what's globally available.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bubble styling&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AIAssistantBubbleStyle covers backgroundColor, borderWidth, borderColor, textColor, textFont, and cornerRadius, set globally via CometChatAIAssistantBubble.style or per instance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Empty state and font control.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;messageList.set(emptyStateView:) swaps in your own view for the zero-message state. And since iOS UI Kits inherit font size from the OS accessibility settings by default, textFont (or global CometChatTypography) is there if you need to override that.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's interesting about the tech
&lt;/h2&gt;

&lt;p&gt;The chat history feature doesn't invent a separate "session" concept to track past AI conversations. Resuming a past thread works by calling set(parentMessage:) on both CometChatMessageList and CometChatMessageComposer — the same parent-message plumbing the UI Kit already uses for threaded replies. Click a message in CometChatAIAssistanceChatHistory, and that message becomes the parent for a new view controller instance; the list and composer thread the conversation from there. No new persistence layer, no separate resume API — the AI history browser is a UI over a messaging primitive that already existed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference links
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.cometchat.com/docs/ui-kit/ios/guide-ai-agent" rel="noopener noreferrer"&gt;AI Agent Integration guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>product</category>
      <category>ai</category>
      <category>cometchat</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Launching Gaming Chat SDK by CometChat on Product Hunt today</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Thu, 02 Jul 2026 09:39:07 +0000</pubDate>
      <link>https://dev.to/cometchat_original/launching-gaming-chat-sdk-by-cometchat-on-product-hunt-today-409h</link>
      <guid>https://dev.to/cometchat_original/launching-gaming-chat-sdk-by-cometchat-on-product-hunt-today-409h</guid>
      <description>&lt;p&gt;Focus on building the game. We'll handle the chat. CometChat's Unreal SDK lets players talk to each other right inside the game, mid-match: 1:1 and group messaging, presence, moderation, and 40+ real-time delegates for messages, typing, and reactions. Full Blueprint and C++ support, so it fits your visual graph or your codebase. Ships with a chat panel and toggle button for your HUD, or build your own UI on CometChat's subsystem. Currently in beta, for Windows, macOS, iOS, and Android.&lt;/p&gt;

&lt;p&gt;Feel free to check it out and upvote!&lt;br&gt;
[&lt;a href="https://www.producthunt.com/products/cometchat?launch=gaming-chat-sdk-by-cometchat" rel="noopener noreferrer"&gt;https://www.producthunt.com/products/cometchat?launch=gaming-chat-sdk-by-cometchat&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa30tvigdmr2cm4z5vzas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa30tvigdmr2cm4z5vzas.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft7mqjnxw51k38moub6uu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft7mqjnxw51k38moub6uu.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzkdaetig0vdtxd1pjoky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzkdaetig0vdtxd1pjoky.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffgn5cuyldg7pdhg1qipf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffgn5cuyldg7pdhg1qipf.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>product</category>
      <category>gamedev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>On-Premises vs. Cloud Deployment for Enterprise Chat: How to Choose</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Thu, 02 Jul 2026 09:23:36 +0000</pubDate>
      <link>https://dev.to/cometchat_original/on-premises-vs-cloud-deployment-for-enterprise-chat-how-to-choose-293k</link>
      <guid>https://dev.to/cometchat_original/on-premises-vs-cloud-deployment-for-enterprise-chat-how-to-choose-293k</guid>
      <description>&lt;p&gt;Most deployment decisions for enterprise chat get made the wrong way. Either the security team defaults to on-premises because that's what they know, or the engineering team defaults to cloud because that's what's faster. Neither instinct is wrong; they're just answering different questions.&lt;/p&gt;

&lt;p&gt;The actual question is: what does your organization specifically need to control, and what are you willing to trade to get it? CometChat supports both deployment models (and the hybrid ground in between), which means this isn't a pitch for one over the other. It's a breakdown of how to figure out which one fits.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You're Actually Deciding
&lt;/h2&gt;

&lt;p&gt;On-premises and cloud aren't really about technology preference. They're about where responsibility sits.&lt;/p&gt;

&lt;p&gt;With on-premises deployment, your infrastructure team owns everything: the servers, the network, the uptime, the patches, the scaling events at 3am when something unexpected happens. With cloud deployment, a vendor's infrastructure handles that layer, and your team operates on top of it.&lt;/p&gt;

&lt;p&gt;Both can be secure. Both can be compliant. The difference is who carries the operational weight, and whether your specific requirements can be met by shared infrastructure at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Case for On-Premises
&lt;/h2&gt;

&lt;p&gt;On-premises deployment earns its place in specific situations. If any of these describe your organization, the case is real, not just a security-team default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're in a genuinely air-gapped environment.&lt;/strong&gt; Defense contractors, government agencies, and certain financial institutions operate in environments where internet connectivity to external systems is either prohibited or impossible. For these organizations, cloud isn't a tradeoff; it's off the table. On-premises isn't a choice so much as a constraint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data residency requirements are legally binding, not just preferred&lt;/strong&gt;. Some industries and regions have regulations that specify exactly where data must physically reside. "Our vendor's data center is in the EU" is different from "this data never leaves our infrastructure." If your legal team needs the second version, only on-premises gives you that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your security model requires controlling the encryption keys.&lt;/strong&gt; Many cloud deployments encrypt data at rest and in transit, but the vendor holds the keys. If your compliance posture requires that your team, and only your team, controls the encryption keys for message content, on-premises is the only architecture that delivers that without compromise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You've been burned by shared infrastructure before.&lt;/strong&gt; Multi-tenant cloud environments are well-architected, but noisy-neighbor problems (where heavy usage from another tenant on shared infrastructure degrades your service), unexpected outages, and security incidents that originate in adjacent tenants are real risks. Organizations that have experienced these firsthand often have strong reasons to want dedicated infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The total cost of ownership math works in your favor.&lt;/strong&gt; On-premises requires significant upfront investment: hardware, networking, the engineering headcount to run it. But at sufficient scale, owning your infrastructure can be cheaper than paying per-user or per-message fees indefinitely. If your chat deployment is large and long-lived, run the numbers before assuming cloud is cheaper.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Case for Cloud Deployment
&lt;/h2&gt;

&lt;p&gt;Cloud deployment is the right call for most organizations, not because it's the default, but because the operational tradeoffs favor it in most situations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You want to move fast without building an ops team.&lt;/strong&gt; Running real-time messaging infrastructure at scale is not trivial. CometChat's cloud infrastructure already handles connection management, geographic distribution, failover, and message delivery guarantees in production. Your engineering team gets to focus on your product instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your compliance requirements are standard.&lt;/strong&gt; HIPAA, SOC 2, GDPR, ISO 27001: cloud deployments from reputable providers support all of these. If your compliance needs fit within what established certifications cover, shared infrastructure is a reasonable choice. The vendor's security investment is often more substantial than what most organizations can replicate on their own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You need to scale unpredictably.&lt;/strong&gt; Cloud infrastructure handles traffic spikes without requiring you to have provisioned for the peak in advance. If your usage patterns are variable (seasonal surges, rapid user growth, event-driven spikes), elasticity is worth a lot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Geographic distribution matters for your users.&lt;/strong&gt; Delivering low-latency messaging to users across multiple regions requires infrastructure in those regions. Building that yourself is a significant investment. Cloud providers have already done it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You'd rather pay for uptime than engineer it&lt;/strong&gt;. On-premises high availability requires redundant hardware, failover configuration, and the expertise to maintain it. Cloud providers build this in. If reliability is critical but you don't want to own the infrastructure that delivers it, cloud is the straightforward answer.&lt;/p&gt;

&lt;p&gt;The Middle Ground: Private Cloud and Hybrid Deployments&lt;br&gt;
The on-premises vs. cloud framing misses a third option that's increasingly common for enterprises with complex requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private cloud&lt;/strong&gt; gives you dedicated infrastructure (not shared with other tenants) hosted in a cloud provider's data center but provisioned exclusively for your organization. You get geographic flexibility and managed infrastructure without the multi-tenant exposure. For organizations that need data residency in specific regions but don't want to run their own hardware, this is often the right fit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hybrid deployment&lt;/strong&gt; combines on-premises and cloud infrastructure for different parts of the system. A common pattern: sensitive message content and user data stored on-premises, while cloud infrastructure handles connection management and delivery. This lets organizations meet strict data requirements without giving up the operational advantages of cloud for the parts that don't require the same level of control.&lt;/p&gt;

&lt;p&gt;Neither option is a compromise; they're architectures designed for organizations whose requirements are more complex than a single deployment model can address.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Actually Make the Decision
&lt;/h2&gt;

&lt;p&gt;Skip the philosophical debate and answer these directly:&lt;/p&gt;

&lt;p&gt;**Do any of your requirements prohibit external infrastructure? **Air-gap requirements, certain government security clearances, and specific regulatory mandates can make this a binary answer. If yes, on-premises is the path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who needs to control the encryption keys?&lt;/strong&gt; If the answer is "us, exclusively," that rules out most standard cloud deployments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's your compliance audit going to ask for?&lt;/strong&gt; Talk to your legal and compliance team before your engineering team. The requirements they're working against will determine whether a vendor's certifications are sufficient or whether you need something more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's your actual engineering capacity?&lt;/strong&gt; On-premises is not set-and-forget. It requires ongoing maintenance, patch management, capacity planning, and incident response. Be honest about whether you have that capacity before committing to it.&lt;/p&gt;

&lt;p&gt;**What does the five-year cost look like? **Calculate cloud costs at your projected scale over five years, then compare against on-premises hardware, networking, and headcount. The answer sometimes surprises people in both directions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens when it breaks at 3am?&lt;/strong&gt; On-premises means your team responds. Cloud means the vendor's team responds (within their SLA). Your preference here is legitimate data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where CometChat Fits In
&lt;/h2&gt;

&lt;p&gt;CometChat supports all three deployment models: cloud, on-premises, and private cloud/hybrid, because organizations with different requirements need actual options, not a recommendation that whatever we run happens to be best.&lt;/p&gt;

&lt;p&gt;For cloud deployments, CometChat's managed infrastructure handles the real-time messaging layer, geographic distribution, and uptime. Your team builds the product; the infrastructure runs.&lt;/p&gt;

&lt;p&gt;For on-premises deployments, CometChat provides the software to run entirely within your data centers. Your team controls the encryption keys, message data stays within your infrastructure, and the deployment can be configured to meet air-gap requirements. The SDKs and APIs are consistent across deployment models, so your development team works against the same interface regardless of where the backend runs.&lt;/p&gt;

&lt;p&gt;For organizations that need something in between, private cloud and hybrid configurations are available on enterprise plans: dedicated infrastructure in specific regions, or split architectures where different components live in different environments based on their sensitivity.&lt;/p&gt;

&lt;p&gt;Compliance certifications (HIPAA, SOC 2 Type II, ISO 27001, GDPR) cover CometChat's managed cloud infrastructure. For on-premises deployments, your environment will require its own audit, though CometChat's architecture and documentation are designed to support that process.&lt;/p&gt;

&lt;p&gt;If you know which deployment model you need, the documentation is a reasonable starting point. If you're still working through the decision, we're worth talking to; this is a choice organizations get wrong more often than they should, and getting it right before you've built on top of the wrong architecture is considerably easier than after.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>webdev</category>
      <category>devdiscuss</category>
      <category>cometchat</category>
    </item>
    <item>
      <title>React UI Kit v7</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Wed, 24 Jun 2026 06:53:08 +0000</pubDate>
      <link>https://dev.to/cometchat_original/react-ui-kit-v7-fem</link>
      <guid>https://dev.to/cometchat_original/react-ui-kit-v7-fem</guid>
      <description>&lt;p&gt;Chat UI looks like a small part of an app right up until you start shaping it to fit. You need to recompose a component, swap one region for your own, match your brand down to the fonts, and keep all of it working when you move to server-side rendering. Each of those is reasonable on its own. Together they are where chat UI work actually lives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CometChat React UI Kit v7 is built for that part of the job.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F430vzyjvj16q7sfybdwe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F430vzyjvj16q7sfybdwe.png" alt=" " width="800" height="656"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does this matter to React developers?
&lt;/h2&gt;

&lt;p&gt;Customizing chat UI is where the real work shows up: a custom empty state, a bubble that renders your own message type, a layout that fits your app rather than a default. v7 is built so those are configuration, not custom code you maintain forever.&lt;/p&gt;

&lt;p&gt;Components compose from named sub-parts, so you can swap one region without forking the whole thing. Message rendering runs through plugins, so adding a custom message type is a defined interface rather than a patch. Theming is CSS custom properties, so your brand is a set of variables instead of a stylesheet you maintain against someone else's internals.&lt;/p&gt;

&lt;p&gt;And each component handles its own data fetching, real-time listeners, and state. You drop it into your layout and move on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key features and capabilities
&lt;/h2&gt;

&lt;p&gt;Four frameworks, one package. The same @cometchat/chat-uikit-react package covers React.js (Vite or Create React App), Next.js (App Router with client-side rendering), React Router (SPA, v6+), and Astro (React islands via the client:only directive). Each gets its own step-by-step integration guide.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compound components.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Components are built from namespace sub-components (Root, View, EmptyState, and others), so you compose only the parts you need and replace a single region without rebuilding the component around it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Plugin-based message rendering&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Message display runs through the CometChatMessagePlugin interface. Twelve plugins ship by default, covering text, image, video, file, audio, polls, stickers, collaborative documents and whiteboards, group and call system messages, and deleted-message placeholders, with no setup. Add your own by passing them to the plugins prop on CometChatProvider.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Theming with CSS custom properties.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Colors, fonts, and dark mode are driven by --cometchat-* variables, with built-in light and dark themes you can override at the variable level.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;19 languages built in.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Localization ships with 19 supported languages and customizable translation keys.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Optional voice and video calling&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add calling by installing @cometchat/calls-sdk-javascript. It is a peer dependency you opt into, not weight you carry by default.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SSR-safe and tree-shakable&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No browser-only APIs at module scope, which is what lets it work cleanly with the Next.js App Router. The build is ESM-first with dual ESM and CJS output, so unused components drop out of your bundle.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's interesting about the tech
&lt;/h2&gt;

&lt;p&gt;The piece worth understanding is how messages actually get on screen. Every message in the UI is rendered by a plugin. Not most messages, every message. When the UI Kit needs to render one, it asks the plugin registry to find a match: the registry scans plugins in order and picks the first whose messageTypes includes the message's type and whose messageCategories includes its category. Deleted messages are special-cased to the Delete plugin. First match wins, so plugin order matters, and a message with no matching plugin simply is not displayed.&lt;/p&gt;

&lt;p&gt;That last part sounds like a footnote and is not. It makes rendering a closed, predictable system rather than a pile of conditionals, and it means your custom plugins append after the defaults, so the built-ins keep priority for their own types unless you deliberately take one over. Supporting a new message type becomes implementing an interface, not hunting through render logic.&lt;/p&gt;

&lt;p&gt;The SSR rule is the other quiet decision. Keeping browser APIs out of module scope is the difference between a kit that imports cleanly into a server component and one that throws at build time. It is the kind of constraint you only appreciate after it has cost you a weekend somewhere else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference links
&lt;/h2&gt;

&lt;p&gt;Overview and getting started:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cometchat.com/docs/ui-kit/react/v7/overview" rel="noopener noreferrer"&gt;https://www.cometchat.com/docs/ui-kit/react/v7/overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Plugins&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cometchat.com/docs/ui-kit/react/v7/plugins/overview" rel="noopener noreferrer"&gt;https://www.cometchat.com/docs/ui-kit/react/v7/plugins/overview&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ui</category>
      <category>cometchat</category>
      <category>webdev</category>
    </item>
    <item>
      <title>CometChat Campaigns</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Wed, 24 Jun 2026 06:49:08 +0000</pubDate>
      <link>https://dev.to/cometchat_original/cometchat-campaigns-42jd</link>
      <guid>https://dev.to/cometchat_original/cometchat-campaigns-42jd</guid>
      <description>&lt;p&gt;Most teams building outbound messaging end up in the same place eventually: a notification stack spread across too many tools, a custom dashboard stitched together with glue code, and an engineering ticket required every time ops wants to send a campaign. The stack works until it doesn't, and when it breaks, nobody agrees on where to look first.&lt;/p&gt;

&lt;p&gt;CometChat Campaigns is the omnichannel notification platform built into CometChat. It runs on the same infrastructure as CometChat Chat, shares the same user identity system, and lets product, marketing, and operations teams reach users across every channel without building or maintaining the plumbing themselves.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw4m3t9qycohtn5c3xyp6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw4m3t9qycohtn5c3xyp6.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters to product managers and marketers
&lt;/h2&gt;

&lt;p&gt;Every campaign your team wants to send should not require a conversation with engineering first. It usually does, because the tools that handle delivery are not the same tools that understand your users. Someone has to map IDs, configure the right endpoint, and make sure the right segment gets the right message at the right time. That work lands on a sprint. The campaign waits.&lt;/p&gt;

&lt;p&gt;Campaigns changes that relationship. Marketing and ops teams can build, schedule, and send directly from the CometChat dashboard, without raising a ticket or waiting on a release cycle. Audience targeting, message templates, A/B testing, and delivery scheduling are all available without writing a line of code.&lt;/p&gt;

&lt;p&gt;And because Campaigns runs on the same platform as CometChat Chat, the user data your product already has is the user data your campaigns run on. No exports, no imports, no sync jobs keeping two systems loosely in agreement. When a buyer goes quiet in a marketplace conversation, Campaigns can trigger a re-engagement nudge based on that signal directly. When a user is mid-conversation, push gets suppressed automatically. That kind of context-aware delivery is what most teams are trying to approximate by stitching tools together. Here it is the default behavior.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3tomvndgmnp504nb83ij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3tomvndgmnp504nb83ij.png" alt=" " width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key features and capabilities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Omnichannel delivery from a single endpoint.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In-app, push, SMS, and email are all reachable through one API call. Channel sequencing handles fallback logic automatically: in-app first (no opt-in required), then push, then SMS. Volume shifts to the cheapest effective channel without custom routing code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No-code campaign builder.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Marketing and ops teams can design, schedule, and send campaigns from the CometChat dashboard without raising an engineering request. Message templates with variable substitution handle personalization at scale. Audience targeting lets teams segment by behavior, attributes, or custom events.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A/B testing built in&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test message variants across channels and let delivery data decide what ships. No separate testing tool, no manual result aggregation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cross-channel analytics in one view.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open rates, click-through rates, A/B outcomes, and individual user notification history are all visible in the same dashboard. You can see which channel is doing the work and which is generating spend without benefit, without exporting to a separate tool.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Multi-tenant architecture, inherited from CometChat Chat.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Per-tenant notification configs, templates, and analytics with full data isolation. One instance serves multiple brands or communities without rebuilding anything for each one.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compliance included from day one.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;HIPAA, GDPR, SOC 2, and ISO 27001 support is part of the platform. Audit logs and moderation policy apply consistently across Chat and Campaigns from a single configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Integration options&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Four ways to connect, depending on where you are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unified API&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One endpoint to trigger notifications across all channels. Connects to any backend workflow, billing system, or CRM without rebuilding your stack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UI Kits&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pre-built in-app message center components for iOS, Android, Flutter, and JavaScript. Drop in and theme to match your product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SDKs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;. iOS, Android, Flutter, React Native, and JavaScript, for teams that want native control over the in-app notification experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Webhooks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Trigger campaigns from existing internal systems without re-platforming.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is worth understanding about the architecture
&lt;/h2&gt;

&lt;p&gt;The no-code builder is genuinely operator-first. When customization is needed, UI kits share the same theming system as CometChat Chat, so custom UX does not mean starting from scratch or abandoning the dashboard.&lt;/p&gt;

&lt;p&gt;Channel sequencing defaults to in-app first for a specific reason: in-app requires no opt-in, which makes it the highest-reach channel by default. Push requires opt-in. SMS costs money per message. The sequencing logic exhausts the free, high-reach channel before touching paid ones, and it does this automatically. Notification fatigue has a way of becoming a product problem before it shows up in the metrics. Channel intelligence is the structural answer, not a campaign calendar review.&lt;/p&gt;

&lt;p&gt;Pricing does not penalize growth. There is no MAU-based billing and no overage charges at peak concurrent connections. The cost structure stays predictable as volume scales.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cometchat.com/omnichannel-campaigns" rel="noopener noreferrer"&gt;To learn more&lt;/a&gt;&lt;/p&gt;

</description>
      <category>product</category>
      <category>marketing</category>
      <category>cometchat</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Notification Fatigue Is a Product Problem, Not a Marketing One</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Thu, 04 Jun 2026 07:51:39 +0000</pubDate>
      <link>https://dev.to/cometchat_original/notification-fatigue-is-a-product-problem-not-a-marketing-one-p6i</link>
      <guid>https://dev.to/cometchat_original/notification-fatigue-is-a-product-problem-not-a-marketing-one-p6i</guid>
      <description>&lt;p&gt;There's a moment every growth team eventually hits: open rates drop, unsubscribes climb, and someone in the room suggests the copy needs work. So the copy gets rewritten. The subject line gets A/B tested. The send time shifts from 10am to 10:14am because someone read a study.&lt;/p&gt;

&lt;p&gt;And nothing really changes.&lt;/p&gt;

&lt;p&gt;That's because notification fatigue isn't a messaging problem. It's a sequencing problem, a channel problem, and at its root - a product architecture problem. By the time your metrics move, the damage is already done.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Damage Happens Before You Can See It
&lt;/h2&gt;

&lt;p&gt;Here's what notification fatigue actually looks like operationally: a user gets a push. They don't open it. Three hours later, they get an SMS for the same thing. Then a WhatsApp message. Then another push.&lt;/p&gt;

&lt;p&gt;None of this registers as an error in your analytics. Delivery was successful. The campaign ‘ran.’ But somewhere between the second and third message, the user decided your notifications aren't worth reading anymore. They turned them off or just started ignoring them, which is functionally the same thing but harder to measure.&lt;/p&gt;

&lt;p&gt;The open rate dip you'll notice next week is a lagging indicator of a decision your product forced them to make days ago. You can't fix that with better copy. You needed to never send those three messages in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Volume Is the Wrong Variable to Optimize
&lt;/h2&gt;

&lt;p&gt;Most messaging systems are built around volume. More touchpoints, more conversions that's the assumption. And it works, briefly, right until users start treating your notifications the way most people treat car alarms: background noise that implies nothing urgent.&lt;/p&gt;

&lt;p&gt;The teams that get this right aren't sending fewer messages because they're conservative. They're sending the right message on the right channel because they've built sequencing logic that accounts for what the user already did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If a user opened your in-app message, they don't need the SMS. If the push converted, the WhatsApp follow-up is friction, not reinforcement. Sequencing isn't about timing delays between blasts, it's about making each next message contingent on whether the last one worked.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjs15r9icl553s7aa0ge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjs15r9icl553s7aa0ge.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a technical decision, not a creative one. And it belongs in your messaging infrastructure, not in a campaign brief.&lt;/p&gt;

&lt;h2&gt;
  
  
  Channel Intelligence Matters More Than Channel Coverage
&lt;/h2&gt;

&lt;p&gt;There's a version of ‘omnichannel’ that means: we send everything, everywhere, always. It's expensive, it's annoying, and it produces the kind of engagement numbers that look fine until your retention metrics tell a different story.&lt;/p&gt;

&lt;p&gt;The more useful version of omnichannel is channel sequencing with fallback logic: start on your highest-signal, lowest-cost channel (in-app notifications, if the user is active), and only escalate to SMS or WhatsApp if the previous touchpoint went unanswered. You reserve the expensive, interruptive channels for the moments that actually need them not as a default.&lt;/p&gt;

&lt;p&gt;This does two things. It keeps your cost-per-message reasonable at scale. And it keeps users from associating your brand with interruption.&lt;/p&gt;

&lt;p&gt;The second effect is harder to model but more consequential. A user who trusts that your SMS means something important will open it. A user who's been trained by three months of redundant blasts will see your sender name and feel mild irritation. That's not a recoverable state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Is a Product Problem
&lt;/h2&gt;

&lt;p&gt;Marketing teams are usually the ones blamed for notification fatigue. But marketing teams are operating within the constraints of whatever messaging infrastructure the product team built. If the infrastructure doesn't support behavior-triggered sequencing - if it can't check whether a message was viewed before firing the next one, then even a thoughtful messaging strategy gets flattened into: send everything, measure what we can, iterate.&lt;/p&gt;

&lt;p&gt;The fix isn't a better campaign strategy. It's messaging infrastructure that treats user behavior as a first-class input: one that can sequence across channels, check delivery and view status before escalating, and apply rules that match the actual logic of your engagement goals.&lt;/p&gt;

&lt;p&gt;When that infrastructure exists, ‘notification fatigue’ stops being a recurring agenda item. It stops being something you manage after the fact. Your system just doesn't do the thing that causes it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What &lt;a href="https://www.cometchat.com/omnichannel-campaigns" rel="noopener noreferrer"&gt;CometChat Campaigns&lt;/a&gt; Gets Right
&lt;/h2&gt;

&lt;p&gt;CometChat Campaigns is built around this exact problem. You define your audience, your channels, and your sequence logic and the platform handles escalation based on what actually happened: was it delivered, was it viewed, was it clicked?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Floyrtjlwf1r2anwl250v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Floyrtjlwf1r2anwl250v.png" alt=" " width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You start in-app. If the user doesn't engage, you fall back to push. If still nothing, you can escalate to SMS or WhatsApp. Each step is conditional, not automatic. The user who already converted never sees the follow-up. The user who missed it does.&lt;/p&gt;

&lt;p&gt;It's a small architectural shift from broadcast to conditional delivery and it's the difference between a notification system that earns attention and one that trains users to ignore it.&lt;/p&gt;

&lt;p&gt;Notification fatigue isn't inevitable. It's what happens when volume substitutes for intelligence. The teams who solve it aren't better marketers. They're building on infrastructure that treats the next message as a function of what the last one accomplished and that's a product decision worth making early.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>discuss</category>
      <category>product</category>
      <category>cometchat</category>
    </item>
    <item>
      <title>Launching CometChat Campaigns on Product Hunt today!</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Wed, 03 Jun 2026 10:00:53 +0000</pubDate>
      <link>https://dev.to/cometchat_original/launching-cometchat-campaigns-on-product-hunt-today-5al2</link>
      <guid>https://dev.to/cometchat_original/launching-cometchat-campaigns-on-product-hunt-today-5al2</guid>
      <description>&lt;p&gt;One dashboard to build, customize, and send omnichannel notifications to your users. Marketing offers, feature announcements, support alerts, operational broadcasts. Design your templates, pick your audience, and deliver across in-app, push, SMS, and email. A/B test variants, schedule sends, and track performance end to end. Marketers, ops, support, developers. Everyone on your team can run campaigns from day one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.producthunt.com/products/cometchat-campaigns?launch=cometchat-campaigns" rel="noopener noreferrer"&gt;https://www.producthunt.com/products/cometchat-campaigns?launch=cometchat-campaigns&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It would be great if you could take a moment to go and upvote!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwr40g48tpm2iiu4l9n35.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwr40g48tpm2iiu4l9n35.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7drbs1pk1qtkif79v327.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7drbs1pk1qtkif79v327.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfv7931wtksi3szvse8o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfv7931wtksi3szvse8o.png" alt=" " width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4t38rtw83ktqgxe9l5nc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4t38rtw83ktqgxe9l5nc.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fby8z5oov3kmo64b559bk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fby8z5oov3kmo64b559bk.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cometchat</category>
      <category>producthunt</category>
      <category>ai</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Launching Chat Skills for AI Agents on Product Hunt today</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Wed, 27 May 2026 08:13:56 +0000</pubDate>
      <link>https://dev.to/cometchat_original/launching-chat-skills-for-ai-agents-on-product-hunt-today-52j7</link>
      <guid>https://dev.to/cometchat_original/launching-chat-skills-for-ai-agents-on-product-hunt-today-52j7</guid>
      <description>&lt;p&gt;This helps you add fully functional chat to your React app using AI agent skills. Drop in a skill file and your agent handles the full integration: installation, environment setup, SSR-safe rendering, and the correct init and login flow. One file per framework. Works seamlessly with Cursor, Kiro, VS Code Copilot, Claude, and Codex. Go from zero to a working chat in minutes, built on CometChat's proven foundation and ready for real projects from day one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.producthunt.com/products/cometchat-skills?launch=calling-skills-for-ai-agents" rel="noopener noreferrer"&gt;https://www.producthunt.com/products/cometchat-skills?launch=calling-skills-for-ai-agents&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It'll be great if you could check it out and upvote!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzlhio6fu42h3jgb3q26.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzlhio6fu42h3jgb3q26.png" alt=" " width="782" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvvjmifntyid785kw4l9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvvjmifntyid785kw4l9.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg81f4o56z2i2ry32eskc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg81f4o56z2i2ry32eskc.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg24dyn9nvfqbipi9pedm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg24dyn9nvfqbipi9pedm.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>producthunt</category>
      <category>ai</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Launching Voice and Video Calling by CometChat on Product Hunt today!</title>
      <dc:creator>CometChat</dc:creator>
      <pubDate>Wed, 20 May 2026 07:51:01 +0000</pubDate>
      <link>https://dev.to/cometchat_original/launching-voice-and-video-calling-by-cometchat-on-product-hunt-today-12oc</link>
      <guid>https://dev.to/cometchat_original/launching-voice-and-video-calling-by-cometchat-on-product-hunt-today-12oc</guid>
      <description>&lt;p&gt;CometChat Calling gives you HD voice and video, built to ship fast and scale high. Recording, screen sharing, call logs, raise hand, and picture-in-picture out of the box. Integrate via SDKs, or drop a CometChat Skills file into your coding agent and let it handle the setup. Handles high-concurrency calls, with HIPAA, GDPR, SOC 2, and ISO 27001 compliance built in.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://www.producthunt.com/products/voice-and-video-calling-by-cometchat?launch=voice-and-video-calling-by-cometchat" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;producthunt.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3dssqpk5699aypxv5wtz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3dssqpk5699aypxv5wtz.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6584gz4r9w724xrwxe3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6584gz4r9w724xrwxe3h.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkppzo1w084t5j8drspd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkppzo1w084t5j8drspd.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzu2zsbxp4rat0fzkptrb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzu2zsbxp4rat0fzkptrb.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0j31hehjzq6lq9svzp2k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0j31hehjzq6lq9svzp2k.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1rgiqprpyc0v2g2k8sk1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1rgiqprpyc0v2g2k8sk1.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjs3jhwbyshb66uerbun.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjs3jhwbyshb66uerbun.png" alt=" " width="734" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cometchat</category>
      <category>producthunt</category>
      <category>tooling</category>
      <category>resources</category>
    </item>
  </channel>
</rss>
