We're launching CometChat Flutter Chat SDK v5 is a pure Dart implementation of the CometChat Chat SDK for Flutter, eliminating platform channel dependencies and delivering a faster, truly cross-platform SDK that works seamlessly across Android, iOS, Web, and desktop.
This is a beta release. v5 ships with significant performance improvements, a cleaner API surface, and expanded cross-platform support — all from a single Dart package. For teams already using the Flutter UI Kit, messaging features are available out of the box via pre-built components. For teams building custom UI or needing advanced control, v5 gives you direct access to the full SDK.
What's included
Messaging
1:1 and group chat, threads, reactions, typing indicators, delivery and read receipts, file sharing, and interactive messages.
Voice & video calling
Ringing flows, direct call sessions, recording, and screen sharing.
Users & groups
Create, retrieve, and manage users and groups with member roles, scopes, and ownership transfer.
User presence
Track online/offline status with configurable subscription modes.
AI moderation & AI agents
Integrate AI-powered moderation and agents directly into your chat experience.
Real-time Listeners
Listen for messages, typing indicators, receipts, and presence changes as they happen
Why does this matter to me as a developer?
Flutter's promise is one codebase for every platform. SDK dependencies that rely on platform channels introduce native layer complexity that works against that promise — adding platform-specific setup, limiting web support, and creating friction when deploying to desktop.
v5 removes that friction entirely.
By rewriting the SDK as pure Dart, every feature — including typing indicators, real-time listeners, and presence — works identically across Android, iOS, Web, and desktop without any platform channel configuration. The typing indicator API is also cleaner in v5, returning a typed TypingIndicator object with structured fields (sender, receiverId, typingStatus, lastTimestamp) instead of a raw JSON string that required manual parsing.
The result is a SDK that feels genuinely native to Flutter development — straightforward to integrate, consistent across platforms, and ready to deploy wherever your app runs.
Key features and capabilities
Pure Dart implementation
All platform channel method calls have been replaced with native Dart implementations. The SDK runs entirely on Dart, with no native layer dependencies required. Performance is faster and integration is simpler across every platform.
True cross-platform support
V5 brings full cross-platform support to Android, iOS, Web, and desktop from a single package. No platform-specific configuration needed for core SDK features.
Improved typing indicator API
onTypingIndicator() now returns Stream<TypingIndicator> instead of a raw Stream<String>. Typing events include structured fields — sender, receiverId, receiverType, typingStatus, metadata, and lastTimestamp — and no EventChannel dependency, so it works on all platforms including web. Existing MessageListener callbacks (onTypingStarted / onTypingEnded) continue to work unchanged.
AI moderation & AI agents
Built-in support for AI-powered content moderation and AI agents, integrated directly into the messaging flow.
Cleaner, consistent API surface
Deprecated method names from v4 have been removed and replaced with cleaner equivalents. markAsUnread() is now markMessageAsUnread(). Push preference methods are now fetchPreferences(), updatePreferences(), and resetPreferences(). The API is more consistent and easier to read.
What's interesting about the tech behind this?
The core decision in v5 was to move the entire SDK to pure Dart — and the implications of that go beyond just removing platform channels.
Platform channel dependencies mean native code running outside the Dart VM, which introduces latency on method calls and creates platform-specific edge cases. On web, platform channels aren't available at all, which is why web support required workarounds in v4. Pure Dart eliminates all of that — the SDK runs in the same execution context as your application code, on every platform Flutter supports.
The typing indicator change is a good example of what this enables. In v4, the typing stream returned a raw JSON string from a native event channel. Developers had to decode it manually and check a methodName string to distinguish started from ended events. In v5, the stream returns a typed TypingIndicator object with explicit fields. The API is idiomatic Dart, and it works on web without any additional setup.
The beta is installable today via the Cloudsmith-hosted repository. A migration guide covering all breaking changes and deprecated methods is available for teams upgrading from v4.
Reference links
Documentation: Flutter Chat SDK v5 Overview
Setup guide: Flutter Chat SDK v5 Setup
Migration guide: Upgrading from v4
Flutter UI Kit: Flutter UI Kit Overview
Changelog: GitHub Releases
Nivedita Bharathy
Product Marketing Specialist , CometChat
