# canvist > canvist is a rich-text editor you build from plugins. A Rust core paints every pixel to a canvas, the same engine runs on servers (Rust, TypeScript, Dart) and in Flutter today, documents are Yjs-compatible, and typed APIs make calling an unregistered extension a compile error. - canvist has not had its first release. Install from GitHub, as each quick start shows; registry packages do not exist yet. - Available today: `canvist_headless` (Rust), `@canvist/headless` (Node, Deno, Bun, Workers), `canvist` (Dart), and `canvist_flutter` (engine only). React, Vue, iOS, Android, desktop, React Native, and Lynx are coming soon: do not invent their packages. - Read the agent guide first: it has the minimal integration per platform, a checklist, and common pitfalls. ## Get started - [Introduction](https://canvist.dev/docs): canvist is a rich-text editor you build from plugins. Start with plain paragraphs. Add bold, then headings, lists, links, and live collaboration. Stop wherever your app needs to stop, or keep going… - [Pick your platform](https://canvist.dev/docs/quick-start): Use this page to find your platform, see what works there today, and jump to a five-minute quick start. - [Server: Rust](https://canvist.dev/docs/quick-start/server-rust): In this guide you load a document, edit it with typed commands, and export it, all from Rust. It takes about five minutes. The same engine powers every other canvist platform, so what you learn here… - [Server: TypeScript](https://canvist.dev/docs/quick-start/server-typescript): In this guide you add canvist to a Node, Deno, Bun, or Workers project, then load, edit, and export a document with typed commands. It takes about five minutes. - [Server: Dart](https://canvist.dev/docs/quick-start/server-dart): In this guide you add canvist to a Dart project, then load, edit, and export a document with typed commands. It takes about five minutes. The package is pure Dart, with no Flutter, so it runs under… - [Server-side rendering](https://canvist.dev/docs/quick-start/ssr): In this guide you render a canvist document to HTML and SVG on a server, laid out exactly as the editor paints it. Use it for fast first paint, SEO, readers without JavaScript, email, previews, and… - [Flutter](https://canvist.dev/docs/quick-start/flutter): In this guide you add canvist's engine to a Flutter app and drive a document from your own widgets. It takes about five minutes. - [Web](https://canvist.dev/docs/quick-start/web): In this guide you put a live canvist editor on a web page with @canvist/web, add a toolbar that follows the selection, and set up a bundler. It takes about five minutes. - [React](https://canvist.dev/docs/quick-start/react): In this guide you add a canvist editor to a React app with @canvist/react, and build a toolbar that re-renders when the selection changes. - [Vue](https://canvist.dev/docs/quick-start/vue): In this guide you add a canvist editor to a Vue app with @canvist/vue, and build a toolbar that follows the selection. - [iOS](https://canvist.dev/docs/quick-start/ios): Use this page to see what's planned for iOS and what you can build with canvist today. - [Android](https://canvist.dev/docs/quick-start/android): Use this page to see what's planned for Android and what you can build with canvist today. - [Desktop](https://canvist.dev/docs/quick-start/desktop): Use this page to see what's planned for Desktop and what you can build with canvist today. - [React Native and Lynx](https://canvist.dev/docs/quick-start/react-native): Use this page to see what's planned for React Native and Lynx and what you can build with canvist today. ## Core concepts - [Documents and blocks](https://canvist.dev/docs/concepts/documents): Read this page to understand what a canvist document is made of, so you can predict how content loads, changes, and exports. - [Extensions](https://canvist.dev/docs/concepts/extensions): Read this page to learn how extensions shape your editor, so you can register exactly the features your app needs. - [Commands and typed handles](https://canvist.dev/docs/concepts/commands): Read this page to learn the four things you do with an extension: run its commands, check whether they would apply, ask about the selection, and react to keys. Every toolbar button, shortcut, and… - [Selections and positions](https://canvist.dev/docs/concepts/selections): Read this page to learn how to point at a place in a document, so your commands apply exactly where you mean. - [Headless: bring your own UI](https://canvist.dev/docs/concepts/headless): Read this page to understand why canvist ships no toolbar, and how you build the UI you want on top of it. - [How canvist works](https://canvist.dev/docs/concepts/how-it-works): Read this page if you're curious what happens between a keystroke and the pixels on screen. You don't need it to use canvist. ## Extensions - [Extension catalogue](https://canvist.dev/docs/extensions): Use this page to find the extensions you need: what each one does, how to add it, and the commands, queries, keys, and typing shortcuts it brings. - [Build your own editor](https://canvist.dev/docs/extensions/build-your-own-editor): In this guide you grow one editor in four steps: a plain chat input, a rich-text comment box, a structured notes editor, and a collaborative Google Docs-style editor. Then you write an extension of… ## Guides - [Add a toolbar](https://canvist.dev/docs/guides/toolbar): In this guide you build a formatting toolbar: buttons that run commands, show when they're active, and disable themselves when they can't apply. canvist has no built-in toolbar, so it looks exactly… - [Keyboard shortcuts](https://canvist.dev/docs/guides/keyboard-shortcuts): Use this page to find the keys and typing shortcuts each extension adds, send keys to the engine yourself, and add your own. - [Import and export](https://canvist.dev/docs/guides/import-export): In this guide you move content in and out of canvist: load JSON, HTML, Markdown, and text, paste into an existing document, export each format, and store documents safely. - [Collaboration](https://canvist.dev/docs/guides/collaboration): In this guide you make documents collaborative: share a document, merge edits from several people in any order, run a sync server that standard Yjs clients connect to, and use canvist Cloud instead… - [Server-side transforms](https://canvist.dev/docs/guides/server-transforms): In this guide you change documents in bulk on a server: script edits with typed commands, process many documents in parallel, and build an import endpoint. The engine is the same one the editor… - [Theming and styling](https://canvist.dev/docs/guides/theming): In this guide you change how documents look: fonts, colours, and spacing for each block and mark. Because canvist paints the document itself, you style it with a theme, not CSS. The same theme… - [Fonts and text rendering](https://canvist.dev/docs/guides/fonts): In this guide you choose the fonts a canvist editor uses on the web, load web fonts without layout jank, and render the same fonts on your server, so server-rendered HTML and the editor that… - [Text input on the web](https://canvist.dev/docs/guides/web-input): In this guide you learn how the browser editor receives typing, input methods, the clipboard, and drops, how to switch input paths when a browser misbehaves, and how screen readers see a canvas. - [Rendering parity](https://canvist.dev/docs/guides/rendering-parity): This page shows how closely the browser editor matches the HTML a server sends for the same document, in every browser, and where the remaining differences come from. - [Performance](https://canvist.dev/docs/guides/performance): Read this page to see what canvist costs: the time each operation takes, how that grows with document size, and how to keep your app fast. ## AI agents - [Integrate canvist with an agent](https://canvist.dev/docs/agents): This guide is for AI coding agents, and the people who work with them. You'll learn the shortest correct path to add canvist to a project on each platform, why canvist's typed API turns an agent's… ## canvist Cloud - [Overview](https://canvist.dev/docs/cloud): Read this page to decide whether canvist Cloud is for you, and what it costs. canvist Cloud runs canvist's server-side features so you don't have to: real-time sync, format conversion, and, next,… - [Sync](https://canvist.dev/docs/cloud/sync): In this guide you connect clients to canvist Cloud Sync, so people can edit documents together without you running a sync server. Sync speaks the standard y-websocket and Hocuspocus protocols, so… - [Convert](https://canvist.dev/docs/cloud/convert): In this guide you convert documents between formats with one HTTP call, using the same schema the editor uses. Use it when you'd rather not run canvist yourself, for example from a language canvist… - [API reference](https://canvist.dev/docs/cloud/api): Use this page to look up any canvist Cloud route: credentials, tokens, documents, usage, billing, and webhooks. Every route works the same on a self-hosted server. - [Plans and billing](https://canvist.dev/docs/cloud/billing): Read this page to choose a plan, see what happens when you go over it, and manage your subscription. - [Self-hosting](https://canvist.dev/docs/cloud/self-hosting): In this guide you run canvist Cloud's server yourself: the same binary canvist Cloud runs, free, with no caps. You'll start it, create a project, configure it, and learn how it stores documents and… ## Reference - [API docs and changelog](https://canvist.dev/docs/reference): Use this page to find the full API reference for each package, and to see what changed in each release. - [Errors](https://canvist.dev/docs/reference/errors): Use this page to look up an error code and fix what caused it. Every package uses the same codes, so you can handle errors the same way in Rust, TypeScript, and Dart. - [Contributing](https://canvist.dev/docs/reference/contributing): Read this page if you want to change canvist itself. Everything here is for contributors; you don't need any of it to use canvist. ## Optional - [Every page in one file](https://canvist.dev/llms-full.txt): the full docs as markdown - [Source and examples](https://github.com/canvist/canvist): the repository