Conversation primitives
Direct and group conversations, channels, threads, replies, mentions, reactions, edits, and soft deletion.
Launch Rail Chat combines a source-owned Go backend, serious messaging workflows, recoverable realtime, and proposed React and Flutter visual kits—deployed in your cloud and shaped around your product.
Need a workflow the pilot does not cover? Scope it with the product team.
Conversations
Maya: Checklist updated
Jordan: Thread reply
No unread messages
Launch room
Product team · 8 members
Maya
10:24
Read
Jordan is typing
01 / Product surface
Direct and group conversations, channels, threads, replies, mentions, reactions, edits, and soft deletion.
WebSocket delivery designed around reconnects, cursors, unread state, typing, presence, and missed-event recovery.
Conversation and message search, stable pagination, filters, and a model prepared for high-traffic product surfaces.
Roles, mute, block, report, moderation actions, and authorization checks designed into the domain contract.
Attachment references, structured metadata, delivery state, read state, and notification handoff.
02 / React + Flutter
import {
ChatProvider,
ConversationList,
MessageThread,
MessageComposer,
} from "@launchrail/chat-react";
export function WorkspaceChat({ session }) {
return (
<ChatProvider session={session}>
<ConversationList />
<MessageThread conversationId="support" />
<MessageComposer conversationId="support" />
</ChatProvider>
);
}LaunchRailChat(
session: chatSession,
child: ChatShell(
conversations: ConversationList(),
thread: MessageThread(conversationId: "support"),
composer: MessageComposer(conversationId: "support"),
),
)03 / Customer-cloud architecture
React, Flutter, backend clients, and operator tools.
Durable commands plus scoped WebSocket delivery.
Tenant-aware state, outbox events, policy checks, and horizontal workers.
PostgreSQL
Durable state + transactional outbox
NATS JetStream
Events + worker coordination
Redis
Presence + connection state
Search adapter
Replaceable indexing contract
The target write path commits a message and its outbox record before acknowledging the client.
Each conversation receives a monotonic sequence so clients can reconcile gaps without assuming global ordering.
A client_message_id idempotency key is planned to make reconnect and retry behaviour explicit.
Consumers deduplicate event deliveries; the contract does not pretend distributed delivery is exactly once.
WebSocket events accelerate delivery while durable history and cursors remain the recovery source of truth.
Presence and typing signals stay separate from durable messages and audit records.
04 / Ecosystem connections
05 / Pilot boundaries
Tenant isolation
Reconnect + replay
Load profile
SDK compatibility
Operational evidence
Chat private pilot