- ClayJS
- How ClayJS works
- 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 onearticle[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"andclay.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 to | What ClayJS gives | What is missing | What to build instead |
|---|---|---|---|
| Google Docs | Keystroke co-editing, tables, code, callouts, and images in the page editor; word-level save merge in editable; recoverable conflicts; version history; ai-edit | Comments, suggestion mode, live cursors, pagination, footnotes, .docx export, tables in editable rich text | The page editor or a block writer; comments as <aside data-id data-anchor>; print CSS for PDF |
| Google Sheets | Persisted inputs, sap formulas over named fields, aggregates, formats, CSV, page tables and charts from a table, 10,000-row pages saving in about 400 ms | A1 references, ranges, fill-down, recalculation graph, virtualization, range selection, pivots | A page table and chart, or a typed table of a few thousand rows, one file per year |
| Google Slides | Slides as sections, sortable, uploads, view mode as the published deck | Free positioning, guides, masters, presenter view in a second window, transitions, PPTX export | A flow-layout deck with fixed layouts per slide (slides) |
| Trello and Linear | Page boards where cards have an owner and a due date; sortable columns, inline editing, checklists, attachments, undo, per-card sync | Notifications, reminders, cross-board search, mentions, integrations, boards past a few thousand cards | A page board, or the kanban with card detail with labels, due dates, and a due-soon projection |
| Notion | One document per file in the page editor with real-time co-editing, Markdown shortcuts, derived titles, blocks, tables, CSV import, boards, and charts | A workspace of many pages, databases with relations and rollups, backlinks, sub-pages, workspace search, page permissions | A folder of files, one per page or database, plus an index file; links are <a href> |
| CRM | Records, pipeline board, card owners and due dates, notes, CSV, totals, contact forms via message | Email logging, reminders, dedupe, per-row permissions | The CRM follow-up list, computing due rows on open |
| Finance apps | Rows with amounts, budgets, sap totals painted in view mode by derive, CSV import of bank exports, charts from a table | Bank sync, learned categorization, multi-currency, scheduled transactions, encryption at rest | A monthly or yearly budget file with CSV import (finance tracker) |
| Full CMS | Per-page CMS sidebar, per-page style group for colors, fonts, and variants, uploads with crop, view mode as the site, JSON data API | Multi-page collections, shared layouts, drafts and scheduled publishing, roles, media library, i18n | A 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-editis 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
.docxand 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