Bootstrapwarebootstrapware

Bootstrapware Comments

Put the conversation next to the work.

Embed threads, a comment section, or forum topics beside a record your app already authorizes. Your server mints access. Choose BYO storage at $9.99 or Hosted discussions at $19.99. Free for local and test. No seat charge.

Free local · BYO $9.99 / mo · Hosted $19.99 / mo. Workspace pricing. No seat charge.

Comments demo for the task Approve the launch checklist, with You selected, an unread discussion, and load more.

Try it

Same widget. Local data only.

This is the real @bootstrapware/comments package with a local adapter. The seeded task is “Approve the launch checklist.” That title is a discussion on a task. It is not document approval. Nothing is sent to Bootstrapware.

How it works

Three steps. Your auth stays yours.

Comments demo for the task Approve the launch checklist, with You selected, an unread discussion, and load more.

01

Point it at a record

Pass tenant, resource type, and resource id. A page URL is not the authorization.

Open discussion where Kai mentions You about the blank rollback owner on the launch checklist.

02

Reply and mention

Plain text, safe links, and structured mentions. The host decides who can be mentioned.

Resolved discussion where Ada and Kai agree the checklist pricing copy is final.

03

Resolve when it is done

Resolved threads stay readable. Reopening is explicit. A version conflict keeps the draft.

Where the text lives

Config is hosted. Discussion text depends on the mode.

Your app already knows the user and the record. BYO keeps the discussion on your backend. Hosted stores it on Bootstrapware. MCP never receives comment bodies.
Dark host theme of the Comments demo on the task Approve the launch checklist.

BYO / local

  • Discussion text stays on your systems, or in this browser for local mode
  • You implement the CommentsAdapter contract
  • We host published app configuration only
  • Live config fetch needs BYO or Hosted

Hosted ($19.99)

  • Bodies, mention ids, display names, and read markers stored on Bootstrapware
  • You moderate. We do not staff a queue
  • Cancel: freeze writes, export 30 days, then delete
  • Hosted to BYO keeps the rows and does not start that clock

Capabilities

The discussion beside the record, already built.

A thread list is a short afternoon. Resource scope, nested replies, mention grants, read markers, versioned resolve, and a published app config are the part you would keep owning.

Three layouts, one record

layout="threads" (the default) keeps several discussions on one task, order, or portal request. layout="section" is one comment stream under a page or post. layout="forum" is a topic list. Chat stays person-to-person messaging.

Nested replies, with a depth cap

Section and forum replies set parentCommentId. Depth 0 is a top-level comment. Replies stop at depth 5. Threads-layout replies stay parentCommentId null: they are siblings of the thread root, not children of it.

BYO or Hosted

BYO ($9.99): you store discussions through a CommentsAdapter. Hosted ($19.99): Bootstrapware stores bodies, mention ids, and read state. You moderate.

Server-minted access

Your server checks the session and the resource, then mints a short-lived author token. A publishable key does not grant access.

Mentions that stay inside the grant

Suggestions come from your host. A mention is a user id, capped at 20. Mentioning someone does not give them access.

Unread, resolve, and reopen

Unread counts other people's comments until the thread is opened. Resolve and reopen use a version check. A stale update keeps the draft.

Id-only events

Hosted webhooks and mention callbacks carry ids, an actor, and a time. They do not carry the comment body, and they are not email.

Full feature reference

Install

One package. Typed React component.

Publishable keys may appear in the browser. Secret keys stay on the server that mints the author token.
pnpm add @bootstrapware/comments
"use client";

import { Comments, createLocalAdapter } from "@bootstrapware/comments";
import "@bootstrapware/comments/styles.css";

export function RecordDiscussion({
  user,
  workspaceId,
  taskId,
}: {
  user: { id: string; name?: string };
  workspaceId: string;
  taskId: string;
}) {
  return (
    <Comments
      user={user}
      scope={{ tenantKey: workspaceId, resourceType: "task", resourceId: taskId }}
      adapter={createLocalAdapter({ storageKey: "demo-comments" })}
    />
  );
}

Fit

Built for discussions on records you already own.

Mobile Comments thread where Kai mentions You on the launch checklist.

Buy this if

  • You want threads on a task, CRM record, order, or client-portal request
  • Your app already knows the user and can mint a scoped token
  • You want discussion text on your backend, or Hosted with your own moderation
  • You want one workspace price, with no seat charge and no per-comment invoice
  • You or your coding agent need a typed install and docs

Buy something else if

  • You want person-to-person messaging. That is Chat
  • You want feature requests and votes. That is Feedback
  • You want PDF or image annotation and approval. That is outside Comments
  • You want a public forum, blog comments, or a traffic-priced comment widget
  • You need us to authenticate end users or send their email

Pricing

Workspace pricing. No seat charge.

Local / test

Free

Local adapter and test keys. Full widget for development.

BYO

$9.99 / mo

Live app config. You store the discussions.

Hosted

$19.99 / mo

We store discussion text. You moderate.

The second paid product is 25% off that product's list. The third and later are 35% off list. There is no seat charge and no per-comment invoice. Comments pricing, the pricing hub, and the stack calculator.

Guides

Install paths that already exist.

All guides

Comparison

Liveblocks already sells embeddable comments.

Liveblocks Comments is the closest embed, on a broader realtime platform, with a metered plan. FastComments is an inexpensive live-comment product with SSO. Talkyard is forum and blog-comment software you can self-host. Building it yourself is a real alternative.

Agent-native

Tell Cursor to add discussions on this record. Hand it the docs.

The package AGENTS.md and the agents page describe the same path: local, Hosted, or BYO. MCP configures apps. It does not ingest comment bodies.
Install @bootstrapware/comments. Add a Client Component using Comments
with a host session user and a resource scope. Prefer createLocalAdapter
for demos, a CommentsAdapter for BYO, or appId + publishableKey plus a
server-minted authorToken for Hosted. Never treat a client-supplied user
id as authorization. Follow https://bootstrapware.co/comments/docs/agents
Agent integration rules →

Honest limits

A discussion widget. A short list of things it leaves out.

  • No file attachments, votes, reactions, or public anonymous comments.
  • Forum topics stay on a host-owned record. Comments is not a public community site.
  • Nested replies stop at depth 5. Threads-layout replies stay flat.
  • No document anchors, PDF viewing, or approval workflow.
  • No presence, typing indicators, or automatic email and push.
  • No full-text search in v1. Filters are all, open, resolved, and unread.
  • Hosted storage pauses new growth at 1 GiB per environment. That cap is operational, not an invoice.

See limits and threads.

FAQ

Questions founders ask first.

Does Bootstrapware log my end users in?

No. Your server reads its own session, checks that this person may open this resource, and mints an author token. Comments does not run a separate end-user login.

What is the difference between BYO and Hosted?

BYO ($9.99) hosts app config only. Threads, comments, mention ids, and read markers stay on your backend. Hosted ($19.99) stores that discussion state on Bootstrapware. Local adapters stay free.

How is this different from Chat?

Chat is person-to-person and small-group messaging. Comments is discussions on a host-owned record. Threads keeps several discussions on that record. Section is the comment stream under one page, post, or record. Forum is a topic list on that record, and each topic is a nested reply tree. None of those layouts is an inbox.

How is this different from Feedback?

Feedback is feature requests and voting. Comments is a discussion on a record you already have. It does not collect votes, reactions, or anonymous posts.

Does Comments include document review or approval?

No. Comments resolves a discussion thread. It does not view PDFs or images, place annotations, or record revision-bound approval. That job is outside this product.

Will an AI coding agent be able to integrate this?

Yes. One npm install, typed props, AGENTS.md, and MCP tools that configure apps only. Liveblocks also documents agent setup. This path is the short install for discussions on a host record.

Before you spend the weekend on a thread table, try this.

Production software without venture pricing.