clay.js
  1. ClayJS
  2. How ClayJS works
  3. What ClayJS does not do

What ClayJS does not do

What ClayJS does not do today, compared with Google Docs, Sheets, Notion, Trello and a full CMS, and what to build instead.

ClayJS gives you one file per document that edits and saves itself. Here is what it does not do, so you can promise what the file can do and pick the right tool.

What changed recently#

Two plugins replace the old advice to hand-build a block writer or wait for autosave:

  • The page editor (?plugins=page) is a Notion-like block editor for one article[data-page], backed by Yjs, where typing reaches other people as they type. It includes headings, lists, checklists, toggles, callouts, code, images, files, typed tables, boards, charts from a table, and CSV import.
  • Live stores (clay="live" and clay.live()) move fast-changing state at network speed (25 frames per second) instead of save speed. Use live data for games, scores, and shared state.

The old limits apply elsewhere. Ordinary editable regions and DOM records have no CRDT and merge at save time. Rich text outside the page editor has no tables, and without live-data, the page editor falls back to file saves.

Compared with the tools you know#

What you are comparing toWhat ClayJS givesWhat is missingWhat to build instead
Google DocsKeystroke co-editing, tables, code, callouts, and images in the page editor; word-level save merge in editable; recoverable conflicts; version history; ai-editComments, suggestion mode, live cursors, pagination, footnotes, .docx export, tables in editable rich textThe page editor or a block writer; comments as <aside data-id data-anchor>; print CSS for PDF
Google SheetsPersisted inputs, sap formulas over named fields, aggregates, formats, CSV, page tables and charts from a table, 10,000-row pages saving in about 400 msA1 references, ranges, fill-down, recalculation graph, virtualization, range selection, pivotsA page table and chart, or a typed table of a few thousand rows, one file per year
Google SlidesSlides as sections, sortable, uploads, view mode as the published deckFree positioning, guides, masters, presenter view in a second window, transitions, PPTX exportA flow-layout deck with fixed layouts per slide (slides)
Trello and LinearPage boards where cards have an owner and a due date; sortable columns, inline editing, checklists, attachments, undo, per-card syncNotifications, reminders, cross-board search, mentions, integrations, boards past a few thousand cardsA page board, or the kanban with card detail with labels, due dates, and a due-soon projection
NotionOne document per file in the page editor with real-time co-editing, Markdown shortcuts, derived titles, blocks, tables, CSV import, boards, and chartsA workspace of many pages, databases with relations and rollups, backlinks, sub-pages, workspace search, page permissionsA folder of files, one per page or database, plus an index file; links are <a href>
CRMRecords, pipeline board, card owners and due dates, notes, CSV, totals, contact forms via messageEmail logging, reminders, dedupe, per-row permissionsThe CRM follow-up list, computing due rows on open
Finance appsRows with amounts, budgets, sap totals painted in view mode by derive, CSV import of bank exports, charts from a tableBank sync, learned categorization, multi-currency, scheduled transactions, encryption at restA monthly or yearly budget file with CSV import (finance tracker)
Full CMSPer-page CMS sidebar, per-page style group for colors, fonts, and variants, uploads with crop, view mode as the site, JSON data APIMulti-page collections, shared layouts, drafts and scheduled publishing, roles, media library, i18nA content site with one file per page, a shared stylesheet, and the CMS per page

Limits that apply to every document#

  • No comments. ClayJS has no comment model (ai-edit is an AI prompt, not stored comments). Store comments as <aside data-id data-anchor> elements.
  • No live cursors. Presence shows who is here in an avatar stack and outlines which block someone is editing. There are no character cursors and no app-facing presence API.
  • No suggestion mode, pagination, footnotes, or .docx and PPTX export. Edits apply directly without tracked changes, page breaks, footnotes, or Office exporters. Use print CSS for PDF.
  • Per-file edit access. There are no per-row permissions. Split data for different audiences into separate files.
  • No background work in a closed file. Nothing runs in a closed file, and a live room ends after two minutes with nobody connected. Compute due states on open.
  • Large record sets cost every keystroke. Each change runs a Sap pass that visits every record. Sap rereads only changed values, but the pass still grows with the record count, about 27 ms for a body edit at 5,000 records in jsdom. See Document size and record limits.
  • Undo is per tab. History is capped at 100 steps per tab, is not saved, and never reverts a peer’s merged edits.

Privacy: the saved file is the data. Hiding an element with CSS, hidden, or show-when is presentation, not access control. See Privacy.

Part of the ClayJS complete guideDownload the whole guide as Markdown