Textbus is an MIT-licensed, TypeScript rich-text framework for front-end developers who need to build component-based, data-driven and collaborative editors — the DingTalk Docs, Shimo Docs or Feishu Docs kind of experience — rendered with Viewfly, Vue or React.
What it is
Textbus is a component-based, cross-platform, data-driven rich-text framework written in TypeScript and released under the MIT license. It is organised as a set of packages: @textbus/core provides the component, slot, format and attribute data models together with selection, format transformation, rendering, component lifecycle management, editor control, history, shortcut management, syntax-sugar management and output conversion; @textbus/platform-browser is the browser middle layer that bridges selection, cursor and DOM rendering; @textbus/collaborate adds Yjs-based collaboration; @textbus/adapter-viewfly, @textbus/adapter-vue and @textbus/adapter-react render content through those frameworks; and @textbus/platform-node provides utilities for running Textbus on a Node backend.
The concrete problem it solves is the difficulty of traditional rich-text development. Textbus introduces the concept of components into rich text, so editors are assembled like stacking blocks instead of hand-built DOM hacks, supporting complex layouts and inserted special controls. Because it is fully data-driven and input and output are handled entirely by the kernel, different browsers do not produce different behaviours or results. Hooks-style extension code lets the same event behave differently across contexts, and native support for multiple front-end frameworks makes complex interaction easier to write. It replaces the DIY WYSIWYG rich-text editor approach with a framework-style component model.
Key capabilities
- Component-based system from
@textbus/core, built around component, slot, format and attribute data models.
- Fully data-driven input and output handled by the kernel, giving consistent behaviour across browsers.
- Collaboration through
@textbus/collaborate, based on Yjs, with the option to connect other collaboration schemes to the Textbus data model.
- Framework rendering adapters:
@textbus/adapter-viewfly, @textbus/adapter-vue and @textbus/adapter-react.
- Syntax sugar for real-time input transformation, such as
# plus space becoming a heading, with fully custom syntaxes.
- Customisable document parsing to preserve formatting pasted from web pages, Word and other sources.
- Abstracted cursor and selection system, format conversion, and support for either deep component nesting or block-level layout.
Who uses it and how
- Front-end teams building custom collaborative document editors similar to DingTalk Docs, Shimo Docs or Feishu Docs.
- Developers who want to render rich-text content with Viewfly, Vue or React in their own UI stack.
- Users of XNote, the official headless, high-performance open-source editor built on the 4.0 release, which ships out-of-the-box features and a playground at textbus.io/playground.html.
- Backend deployments running Textbus through
@textbus/platform-node.
- Contributors working inside the pnpm-managed multi-package monorepo.
Getting started
Textbus uses pnpm for multi-package management: install it with npm install pnpm -g, clone the repository, run pnpm install, then npm start to launch the development environment. Documentation is hosted at textbus.io, and XNote provides a ready-made editor for teams that do not want to assemble their own.
How it compares
The facts do not name a list of paid products that Textbus replaces. Among the tools the facts do name, it uses Yjs as its collaboration backbone while staying renderer-agnostic through the Viewfly, Vue and React adapters.
When to use it — and when not to
Choose Textbus when a team needs to build its own editor and is willing to operate a pnpm monorepo plus, for server-side use, @textbus/platform-node, with collaboration depending on Yjs. Do not choose it if a finished, drop-in editor is required — Textbus is a framework, and XNote is the packaged editor built on top of it. Much of the project's documentation and README content is written in Chinese, so non-Chinese-speaking teams should factor in documentation-reading effort.