Skip to main content
Documentation
StartOverviewArchitectureAuthenticationSend your first message
TypeScript SDKOverviewTrusted app serverApp-user clientsRealtimeErrors & webhooks
Flutter SDKOverviewInstallationAuthenticationChannels & messagesOffline & syncRealtimeUI componentsPush & lifecycle
ConceptsTenancy & scopeChannels & messagesDelivery & reconciliationSecurity checklist
ProtocolsRealtimeSigned webhooks
ReferenceREST APIErrors, limits & retriesDeploy docs to Coolify
VV ChatDocs API v1
Recommended starting points
Build chat without rebuilding infrastructureV Chat is a multi-tenant messaging backend with typed server, web, and Flutter integration paths.StartArchitecture at a glanceUnderstand the control plane, data plane, realtime path, and SDK boundaries before integrating.StartAuthentication and credentialsSelect the correct credential for dashboard, trusted-server, app-user, realtime, and webhook flows.StartSend your first messageUse the trusted TypeScript server client to create the minimum safe messaging flow.StartTypeScript SDK overviewChoose the correct typed client for trusted servers, app users, dashboard sessions, realtime, and webhooks.TypeScript SDKTrusted app-server clientUse AppServerClient from a protected backend to manage data-plane resources and mint app-user tokens.TypeScript SDKApp-user clientsBuild browser or Node app-user flows with VChatClient or the lower-level AppUserClient.TypeScript SDK
↑↓ Navigate↵ Openesc Close
API reference
StartOverviewArchitectureAuthenticationSend your first message
TypeScript SDKOverviewTrusted app serverApp-user clientsRealtimeErrors & webhooks
Flutter SDKOverviewInstallationAuthenticationChannels & messagesOffline & syncRealtimeUI componentsPush & lifecycle
ConceptsTenancy & scopeChannels & messagesDelivery & reconciliationSecurity checklist
ProtocolsRealtimeSigned webhooks
ReferenceREST APIErrors, limits & retriesDeploy docs to Coolify
Contract sourceOpenAPI JSON
Docs/Flutter SDK
v_chat_sdk

Flutter UI components

Use immutable presentation models and responsive widgets while keeping product state and authorization in your host app.

Updated 2026-08-09•sdks/flutter/packages/v_chat_sdk/README.md · SDK-FL-026 contract

Map snapshots into display models

dart
final rows = conversationSnapshots.map(
  (snapshot) => VChatUiConversation.fromSnapshot(
    snapshot,
    title: resolveConversationTitle(snapshot),
    preview: resolveConversationPreview(snapshot),
    timestampLabel: formatConversationTime(snapshot),
  ),
).toList(growable: false);

final messages = messageSnapshots.map(
  (snapshot) => VChatUiMessage.fromSnapshot(
    snapshot,
    currentUserId: currentUserId,
    authorLabel: resolveAuthorLabel(snapshot),
    timestampLabel: formatMessageTime(snapshot),
  ),
).toList(growable: false);

Presentation models copy only released display state and do not retain arbitrary custom payloads. The host chooses safe labels, timestamps, optimistic delivery state, and reconciliation behavior.

Widget building blocks

Widget areaPurpose
Conversation listResponsive conversation rows, unread state, selection, loading, and empty/error presentation
Message listAccessible message grouping, sent/pending/failed state, reactions, and thread affordances
ComposerHost-controlled text entry and send action without credential or authorization inference
Adaptive layoutSingle-pane mobile and split-pane larger-screen composition
Status/activityConnection banner, typing indicator, and host-owned recovery actions

State and accessibility ownership

  • Do not infer authorization from cached rows or widget visibility.
  • Supply display-safe labels; never place raw server errors, secrets, or private URLs in semantics.
  • Test product strings, text scale, RTL, keyboard navigation, contrast, and screen-reader behavior in the host app.
  • Dispose controllers, focus nodes, and stream subscriptions allocated by the host.
PreviousFlutter realtimeNext Push and application lifecycle
On this pageMap snapshots into display modelsWidget building blocksState and accessibility ownership
Report a docs issue