Features
What Bootstrapware Chat includes


1:1 conversations
Direct threads unique per pair of host-asserted ids. No invite links.
Groups up to 20
Optional title, add, remove, and leave when allowMemberManage is on.
Group title rename
When member management is on, group members can rename the title with setTitle. A blank create still stores Group. Direct threads have no title editor.
Read and unread
Per-member unread counts. markRead is part of the adapter contract. markUnread moves this viewer's read cursor to just before the latest message from someone else. Other members stay unchanged.
Unread filter and New messages
An Unread toggle hides read conversations in the loaded list. The open thread stays visible after it is marked read. Opening a thread shows one New messages divider where unread started.
Composer drafts
Unsent composer text is kept in this browser per conversation. The inbox shows Draft: plus that text instead of the last message while a draft exists. Pending attachments stay in memory for the session.
Per-conversation notification mute
After Notify is on, Mute stores a per-conversation browser-notification mute in this browser. Other conversations still notify. Mute does not request Notification permission.
Section, launcher, or window
presentation is section, launcher, or window, with optional defaultOpen. theme is light or dark. Omit theme and the inbox stays the light default. Hosts skin with --bsw-ch-* tokens.
Plain-text messages
4,000 character cap. Sender edit and delete. Deleted messages stay as a tombstone.
Attachments
jpeg, png, webp, gif, PDF. 10 MB each, 4 per message. Hosted freeze cap at 1 GB or 10 GB.
Conversation search
Hosted search is conversation-scoped. BYO can implement searchMessages.
Live updates
Hosted SSE plus a 4 second poll fallback. BYO optional subscribe.
Opt-in browser notifications
Notify in the widget header is default off. Load never prompts. After the user opts in, hidden-tab messages from others can show a system notification. Visible-tab, self, opted-out, and denied permission do not. No email, SMS, or server push.
BYO adapter
Implement conversations, messages, members, and files on your API. We host app config only.
Hosted messages
Omit the adapter; pass appId + publishable key. Messages and files store on Bootstrapware.
Host-asserted identity
Pass user={{ id }}. Opaque stable ids. Optional name, email, avatarUrl for display only.
Embed-only chat
No public chat URLs. The widget is for authenticated product embeds.
App configuration
allowDirect, allowGroups, allowAttachments, allowMemberManage, empty state, branding, origins.
Configuration revisions
Draft without changing what live clients load until you publish.
Test and live environments
bsw_test_* and bsw_live_* keys. Live config needs BYO or Hosted entitlement.
Operational sessions
Dashboard usage metadata and Hosted attachment bytes vs cap. Never message bodies.
Webhooks
Conversation, message, and member events with HMAC signing. Identifiers only.
Moderation tools (Hosted)
Dashboard inbox for Team send, delete, archive, and JSON export.
MCP for app config
Create, draft, and publish apps from Cursor. Never message bodies or file bytes.