RealTimeX
Sign inStart for free
RealTimeXWeb Package
IntroductionPrerequisitesInstallationProject setupQuick start
Package structureConfigurationComponentsHooksAPI integrationSocket events
OverviewReplace entire UIReplace componentsStyle with classNamesThemes & localePhone & video callingIn-call control barFeatures
Unread badgeRich-text messagesPins, stars & datesMessage threadsMentionsCanvas & draftsNotificationsAdmin permissionsServer refusalsSession & token refresh
Host app integrationTroubleshootingFAQVersion historyBest practicesSupport & contact
Web packageBuilt-in features

Canvas & drafts

Live collaborative documents inside conversations, and unsent text saved per chat.

Canvas (collaborative documents)

A Canvas is a rich-text document that belongs to a conversation and is edited live by its members. Built in, gated by the canvasEnabled setting.

  • Open it from the header options menu → Canvas, or the canvas list in the header (CanvasListPanel).
  • Create, rename and delete documents; edits sync in real time with live presence and a saving / saved status.
  • Paste images and attach files inside a document - same upload rules and size limits as chat attachments.
  • CanvasOverlay is mounted automatically by the default layout.

Replace the list with the CanvasListPanel slot:

tsx
1components={{2  CanvasListPanel: (props) => <MyCanvasList {...props} />,3}}

Canvas exports

ExportPurpose
CanvasOverlay, CanvasListPanel, CanvasEditor, CanvasHeaderDefault components
useCanvasStore, useCanvasList, useCanvasSyncState, list loading, live sync
apiCreateCanvas, apiListCanvases, apiGetCanvas, apiUpdateCanvas, apiDeleteCanvasREST building blocks
canvasContentToEditorState, emptyCanvasContentContent helpers
CanvasContent, CanvasSummary, CanvasDoc, CanvasSyncStatusTypes

Drafts

Unsent text in the composer is saved per conversation (and per thread) on the server, so it survives a reload or another device. The conversation list shows a Draft preview for chats with unsent text. Gated by draftsEnabled; limits are maxDraftLength and maxDraftsPerUser. No setup needed. For custom UI:

typescript
1import {2  loadDraftsFromServer,3  getConversationDraft,4  getConversationDraftPreview,5  clearConversationDraft,6} from "@realtimexsco/live-chat";7 8const draft = getConversationDraft(conversationId);          // ConversationDraft (empty if none)9const preview = getConversationDraftPreview(conversationId); // short text for a list row10clearConversationDraft(conversationId);

Also exported: getDraftByTarget, clearDraft, makeDraftKey and the types ConversationDraft, ServerDraft, DraftSavePayload, DraftTarget.

PreviousMentionsNextNotifications

On this page

Canvas (collaborative documents)Canvas exportsDrafts
Back to top