VeltLexical

Comments and co-editing, built for Lexical

Add comments and co-editing, plus live presence, to your Lexical editor, for your users and your AI agents. Threads stay pinned to nodes as the document tree updates, and every agent edit lands as a suggestion your users approve, so a comment on a heading never jumps to the paragraph below it.

Free tier. No credit card. First comment in 5 minutes.

LEbrief-q3.md / Lexical
live
BIUH1H2</>

The Q3 campaign centers on the migration storyHope: moving from async reviews to live collaborationEthan. Pricing: three usage tiers from $0, no per-seat cost.

Open
MayaMaya14m

Let's lead with this. Strongest angle we have, @Ethan can you tighten the wording?

live cursors + a comment anchored to the selection · Yjs merges every keystroke

The problem

Build this into Lexical yourself, and you rebuild it on every release.

Your users expect to comment and co-edit in Lexical, and your AI agents need that same editor with a human approving before they touch user work. Comments that survive Lexical's node-tree updates are a multi-quarter build, and the moment anchoring breaks, feedback lands on the wrong node. Co-editing is the harder half: rolled by hand it means overwrites, lost work, and merge conflicts, the "my changes disappeared" bug reports, plus a websocket fleet and offline merge to keep alive. And the harder question is your agents: a useful agent needs to change the work, but an agent with write access to user content is what your buyers' security review blocks, so without a consent step you choose between an agent that is useful and an agent that is safe. Every quarter spent on this is a quarter not spent on your own product.

Velt is the review and collaboration layer built for Lexical: your users and your AI agents work the same editor, with comment threads anchored to the node, and every agent suggestion is a change a human approves before it lands.

Features

Everything your team and your agents need on Lexical

01agents
Review Agent2m

Clause 7 omits a liability cap. Suggested fix attached.

1 Reply
// agents.tsx
// An agent posts a suggestion as a first-class user.
await velt.comments().add({ author: agent, suggestion });
// On approve, the change fires through your webhook.

Agents as first-class users

Your AI agent comments and suggests on the editor as a first-class user; a human approves or rejects, and on approve the change fires through your webhook with a permanent record.

02comments
Assigned toKim
Rogers2m

@Maya pulled into the thread

2 Replies
// comments.tsx
import { VeltComments } from "@veltdev/react";

<VeltComments textMode />

Comments

Threaded comments on nodes and ranges, with replies, @mentions, reactions, and attachments.

03co-editing
TiptapLexicalCodeMirrorBlockNoteReact Flow

plus the core library for your own editor, whiteboard, or grid

// co-editing.tsx
import { useVeltCrdtExtension } from "@veltdev/tiptap-crdt-react";

const extension = useVeltCrdtExtension({ editorId });

Co-editing

CRDT merge across clients on the node tree.

04presence
On this document6 here
5 people · 1 agentmaxUsers collapses the rest
Mayaediting slide 4
Devviewing
Sarahviewing
Review Agentreviewing clause 7
Chrisidle 5m
Youediting
// presence.tsx
import { VeltPresence, VeltCursor } from "@veltdev/react";

<VeltPresence />
<VeltCursor />

Presence and cursors

Live named cursors and selections in the editor.

05suggestions
Brand Agentnow

Suggested a tighter figure on the rate line.

12.010.5
1 Reply
// suggestions.tsx
// Propose changes reviewed like a diff.
<VeltComments suggestionMode />

Suggestions

Propose changes as accept-or-reject suggestions, reviewed like a diff.

06notifications
NotificationsFor You
For YouDocumentAll
Now

Maya mentioned you on Q3 forecastmention

“@you can you review before Friday?”

2m

Sarah replied on the Q3 threadreply

forecast.xlsx · cell B12

9m

Ethan requested your sign-offsign-off

contract.pdf · due today

1h
// notifications.tsx
import { VeltNotificationsTool } from "@veltdev/react";

<VeltNotificationsTool />

Notifications

In-app, email, and Slack alerts on every comment and @mention.

07recording
FCforecast.xlsx / Q3
live
recorder note · pinned to C18
0:42

“The variance comes from the vendor rate change, see row 18.”

// recording.tsx
import { VeltRecorderControlPanel } from "@veltdev/react";

<VeltRecorderControlPanel />

Recording

Pin a quick voice, screen, or video clip in context on the editor.

08version-history
Live draftediting now · 3 collaboratorscurrent
Before pricing rewritesaved 09:14
Outline approvedsaved Mon 16:40
broadcastRestore via API reaches every connected client
// version-history.tsx
await velt.versions().save({ name: "Draft v3" });
await velt.versions().restore({ id });

Version history

Named checkpoints on the document, saved and restored by API.

09single-editor
TiptapLexicalCodeMirrorBlockNoteReact Flow

plus the core library for your own editor, whiteboard, or grid

// single-editor.tsx
<VeltProvider singleEditorMode>
  {/* one editor instance */}
</VeltProvider>

Single editor mode

Run Velt review on a single editor instance without multiplayer.

Agent

a brand-and-compliance agent flags an off-message line or a missing disclosure on the node and suggests the rewrite as a first-class user; a human approves or rejects, and on approve the change fires through your webhook with a permanent record of who allowed what.

Setup

Production-ready in minutes

01INSTALL
terminal
npm install @veltdev/react @veltdev/lexical-crdt-react
02PROVIDER
App.tsx
import { VeltProvider } from "@veltdev/react";

<VeltProvider apiKey={API_KEY}>
  <App />
</VeltProvider>
03MOUNT
Lexical.tsx
// Mount Velt on Lexical
<VeltComments />
// + the CRDT adapter for co-editing

Why Velt

The consent step Liveblocks does not have

Liveblocks syncs people and agents into your app's state; Velt adds the step Liveblocks does not, every agent change on Lexical is a suggestion your user approves or rejects, on the record.

Enterprise

Enterprise-grade security and data control

The controls your buyers' security reviews ask for, in writing.

Adding Velt to Lexical does not move that surface's content off your stack. Per-feature data providers keep comment content, attachments, and user PII on your own infrastructure; Velt stores only minimal identifiers.

FAQ

Frequently asked questions

Comments only, or co-editing too?

Both. Velt adds threaded comments and conflict-free co-editing on the same Lexical editor.

Do comments survive Lexical node-tree updates?

Yes. Robust anchoring binds each thread to its node, so a comment rides updates and re-renders instead of detaching.

Do custom and decorator nodes work?

Yes. Velt anchors to any node or range, including custom and decorator nodes.

Can an agent post on a node, with a human approving?

Yes. An agent posts a suggestion on the node as a first-class user, and a human approves or rejects before it lands.

Do I need a backend?

No. Velt runs without you standing up a websocket fleet or merge backend.

How is Velt priced?

On usage, not seats or integrations: you pay for documents with review activity in a month, with a free tier for development and early production.

Comments and co-editing, built for Lexical

Free tier. No credit card.

First comment in 5 minutes.