TLCommentThread

See source code
Table of contents

Extends BaseRecord<'comment-thread', TLCommentThreadId>.

A comment thread. The thread owns the anchor (where the conversation lives on the canvas) and the resolution state; the messages themselves are TLComment records pointing at the thread via threadId, ordered by createdAt. v1 threads are flat — no nested replies.

Threads and comments are document records, but they're intended to be served through the sync server's object-store lane: gated by the session's objectAccess rather than isReadonly (so "can comment but not edit" is expressible), excluded from document snapshots and .tldr exports server-side, and persisted in a separate lane from the main document.

Opt-in: register with createTLSchema({ records: commentSchemaRecords }) on the server and the matching records option on the client — neither type is part of the default schema, and both sides must register them identically.

interface TLCommentThread extends BaseRecord<
  "comment-thread",
  TLCommentThreadId
> {}

Properties

anchor

Where the thread is anchored on that page.

anchor: TLCommentAnchor;

createdAt

createdAt: number;

createdBy

Who started the thread. Client-supplied; sync servers are expected to stamp/verify it.

createdBy: string;

id

readonly
readonly id: Id;

isDeleted

Whether the thread is soft-deleted. Clients set the flag and leave the record in place. Sync servers are expected to enforce it as write-once and creator-only, reject client hard deletes, and drop flagged threads from future room loads.

isDeleted: boolean;

meta

meta: JsonObject;

pageId

The page the thread lives on.

pageId: TLPageId;

resolved

Resolution state: when and by whom the thread was resolved, or null while open.

resolved: {
  at: number;
  by: string;
} | null;

typeName

readonly
readonly typeName: TypeName;

Prev
TLCommentReaction
Next
TLCursor