# The paid products are where pagination and official formatting live

> AiEditor is a rich text editor for the browser built on Web Components, and it is layered: an open core under LGPL-2.1 that covers rich text, AI operations, tables, formulas and media, plus three paid products for the verticals where documents have to look like office paperwork. The packaging is unusually well specified, with three separate bundles, two gzip budgets enforced at release time, and an explicit warning about which file you must not put in a static page.

**aieditor-team/AiEditor** — AiEditor is a next-generation rich text editor for AI.

- Repository: https://github.com/aieditor-team/AiEditor
- Website: https://AiEditor.dev
- Stars: 1,777 · Forks: 219
- Language: TypeScript
- License: LGPL-2.1
- Published: 2026-09-30 · Updated: 2026-09-30 · Language: en
- Canonical page: https://hysenlabs.com/projects/aieditor-team-aieditor

## Three ways to ask the model something, not one AI button

The AI claim is made with a specific mechanism rather than a feature bullet, and it is worth reading closely. The README says the editor was designed for AI scenarios from the start rather than having an AI button added to a traditional editor, and then it lists what the AI can participate in: conversation, continuing the text, rewriting, polishing, proofreading, summarising, translating, generating content, and modifying and optimising a document. The line that carries the design is the next one, that AI operations are supported over the full text, over a selection, or over an independent question. Those three scopes are different features, not one feature with three triggers. A selection is the easy case, the model rewrites what you highlighted. Full text is the case where a 40-page document exceeds a context window and the editor has to decide what to send. An independent question is the case where the document is context and the user's actual question is not about the text at all, which is a different product feature wearing the same interface. One clarification the README does not spell out: the configuration list includes connecting different AI services and connecting an enterprise's own model, so the editor defines the operations and the surface while the model provider is yours.

## Web Components is the reason the framework list is so long

The cross-framework claim rests on one architectural decision, that the editor is built on Web Components and does not depend on a particular front-end framework. The consequence is that the same package works in Vue, React, Angular, Layui and plain JavaScript, and the README's own framing of that is that not binding to a framework is what makes the editor an independent foundational capability rather than a component of one ecosystem. That is a real property, and it is the reason a lot of editor projects cannot make the same claim. The cost is the one the README does not discuss. A custom element renders inside a shadow root, and everything that follows from that is a design constraint: how your application's styles reach inside, how form state is collected, how focus and selection behave when a framework re-renders around it, and how automated tests find the elements. None of that is a reason to reject the approach, and a mature component library has solved most of it, but it is the part of the decision you should test in your own stack before you commit to it.

## Three bundles, two size budgets, one explicit warning

The installation section is the most precisely written part of the README and it is worth following exactly. With a bundler, you install from npm and import the editor and its stylesheet:

```bash
npm install aieditor
```

```ts
import {AiEditor} from 'aieditor'
import 'aieditor/style.css'
```

Without a bundler, the browser subpath is the fully bundled browser ES module, deployable directly, and the UMD file is a supplementary compatibility entry for AMD loading and a browser global. Then the warning, which is the kind of sentence that saves an afternoon: do not put the main distribution file, the one that contains bare npm imports, directly into a static page, because it will not resolve in a browser. Self-hosting means deploying the stylesheet and the assets directory together and keeping their relative structure. And then the governance detail, that both the browser and UMD bundles are full-feature builds, and that release validation caps them at 700 and 650 kibibytes gzipped respectively. Those numbers are a policy, not an accident, and they are enforced in the release process rather than left to good intentions. The final piece of advice follows from them: if first-paint size matters to your application, use the npm entry and let your own tool split and compress the code.

## The package is ESM-first with dual type declarations

The packaging metadata is careful in a way most editor packages are not, and it is worth reading if you are on a mixed CommonJS and module codebase. The package declares itself as a module, with a main field pointing at a CommonJS build, a module field pointing at the ES module build, and a types field for declarations. The exports map then handles the two import conditions separately, giving a declaration file for the ES module case and a different one with a different extension for the require case, which is the recognised fix for the dual package hazard where a single set of types is wrong for one of the two module systems. There are additional export entries for the browser bundle, the stylesheet and the package file itself, and the unpkg and jsdelivr fields point at the UMD build so a CDN link gets something usable. The side effects field is set to true, which is the honest and slightly costly choice for a package whose entry imports a stylesheet, because it stops bundlers from dropping code they cannot prove is unused. The build configuration matches the distribution story, with separate Vite configurations for the main build, the browser build, the UMD build and the demo.

## The document model is Tiptap's, and that is worth knowing

Two pieces of metadata settle a question the README never states. The keywords in the package include tiptap, and the repository topics include both tiptap and prosemirror. So the underlying editor is Tiptap, which is itself built on ProseMirror, and this project is a substantial layer on top of a well-known document model rather than a document model of its own. That is not a criticism. Building on a mature editor core is the sensible engineering decision, and the value of a wrapper is exactly the part you would otherwise write: the toolbars, the paste handling, the media pipeline, the theme, the configuration surface and the AI operations. It does change what you are adopting, though. Your content is a ProseMirror document, so the serialisation, the schema extension model and the plugin ecosystem are the ones that ship with that core rather than the ones this project designs. Anyone evaluating it should read the core's documentation as well, because the moment you want a node type this project does not expose, that is the layer you will be extending.

## The professional document features are the paid ones

The product family section is the most commercially significant part of the README and it is easy to skim. The open source core is described as covering rich text, AI, tables, formulas, media, themes and documents, suitable for direct integration into your own web products. The paid product for business documents adds pagination and is aimed at online office work, contracts, reports, long documents and enterprise document systems, with the stated benefit of an editing experience closer to traditional office documents. A second product targets party and government official document writing and typesetting and provides official document structure, official document typesetting, and work related to the GB/T 9704 specification. A third targets medical records, medical reports and medical systems. So the boundary is specific: if your product needs pages rather than a scroll, or a document that has to satisfy a national formatting standard, or a medical record, you are buying a separate product. That is a reasonable business model and a perfectly normal open-core arrangement, but it means the feature list in the core is not a complete answer to the question of whether the editor can produce the documents your users actually need.

## The feature list reads like a procurement document

The capability sections are exhaustive in a way that editor READMEs usually are not, and the pattern is informative. Rich text covers headings, fonts, sizes, colours, paragraph styles, the four inline weights, super and subscript, inline code, three list types, quote and divider, alignment, indent, line height, letter spacing, format clearing, links, mentions, emoji, and highlighted content blocks. Media covers images, audio, video and attachments, with local selection, drag upload and paste upload, size adjustment, alignment, captions, online video from YouTube and Twitch, upload progress, upload cancellation, file type restriction and file size control. Editing covers three toolbar layouts, two context menus, block dragging, undo and redo, fullscreen and read-only modes, and three paste modes for Markdown, Word and plain text. The reason to read that way rather than skim is that the mundane entries are the ones that decide whether you can ship. Upload cancellation and file size control are not exciting; they are the difference between a media pipeline that works in production and one that does not.

## Version 2 on main, 1.4.0 as the last release, Gitee as the source of truth

The version story needs reading carefully, because the tags and the package disagree. The visible release history is 1.3.6 in March 2025, 1.3.9 in June 2025 and 1.4.0 in June 2025, while the package metadata in the repository says version 2.0.0. So 2.0.0 exists in the package and on the branch, and there is a migration guide at the repository root describing the change, but the corresponding GitHub release tag is not among the ones listed. The presence of a migration document, a release guide, a change log, a security policy, a node version file and a pinned package manager version is a set of signals about a project that has learned how to release properly, and they all point the same way: take the current major version, and read the migration guide before you do. Two other details are worth knowing. The open source repository the README links to is hosted on Gitee rather than on GitHub, which tells you where the project considers its community to be, and the online demo is a Chinese-language site while this README has an English translation. The licence metadata says LGPL-2.1-only, and the README's licence section is deliberately non-committal, pointing at the licence file for the terms and for how commercial authorisation works.

## Conclusion

Adopt AiEditor if you are building a content product in Chinese, you want a document model you do not have to design, and you would rather not wire the AI layer yourself, since the editor defines nine AI operations over the full text, a selection or a free question. Do not adopt the open core expecting office documents, because pagination is in the paid product and official document formatting to the national standard is in another one, and a contract or a government system needs those. Verify four things: that you are on version 2 rather than the 1.4 line, since the migration guide is in the repository root and the last GitHub release tag is 1.4.0, which bundle you need, since a static page should get the browser ESM file and a project with a bundler should use the npm entry so code splitting works, that the gzip size matters to you, since the release process caps the browser ESM bundle and the UMD bundle, and that you read the licence file, because the metadata says LGPL-2.1-only while the README defers the terms and any commercial authorisation to that file. The last push was 2026-09-13.

## FAQ

### How do I install AiEditor?

With a bundler, install from npm and import the editor and its stylesheet. Without a bundler, use the browser subpath, which is the fully bundled ES module for direct deployment, or the UMD file for AMD and a browser global. The README warns against putting the main distribution file, which contains bare npm imports, into a static page.

### What AI operations does AiEditor support?

Conversation, continuing the text, rewriting, polishing, proofreading, summarising, translating, content generation and document modification. The operations can be scoped to the full text, to a selection, or to an independent question. The configuration list includes connecting different AI services and an enterprise's own model, so the provider is supplied by your application.

### Why is AiEditor not tied to a front-end framework?

Because it is built on Web Components, so the same package works in Vue, React, Angular, Layui and plain JavaScript. The README presents that independence as the reason the editor can be an independent capability rather than a component of one ecosystem.

### Is pagination included in the open source version?

No. The open core covers rich text, AI, tables, formulas, media, themes and documents. Pagination is listed under the paid product for business documents, and official document structure, typesetting and work related to the GB/T 9704 specification are listed under a separate product for government scenarios, with a third for medical documents.

### How large is the AiEditor bundle?

The browser ES module and the UMD build are both full-feature bundles, and the README says release validation keeps them within 700 and 650 kibibytes gzipped respectively. Applications sensitive to first-paint size are advised to use the npm entry so their own build tool handles splitting and compression.

### What licence is AiEditor released under?

The package metadata declares LGPL-2.1-only, and the README says to consult the licence file in the repository for the specific terms and for how commercial authorisation works. The package version is 2.0.0, with a migration guide at the repository root, while the most recent GitHub release tag is 1.4.0 from 2025-06-25.

## Sources

- [aieditor-team/AiEditor on GitHub](https://github.com/aieditor-team/AiEditor)
- [License: LGPL-2.1](https://github.com/aieditor-team/AiEditor/blob/main/LICENSE)
- [Project website](https://AiEditor.dev)
- [README](https://github.com/aieditor-team/AiEditor/blob/main/README.md)
- [Releases](https://github.com/aieditor-team/AiEditor/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/aieditor-team-aieditor
