ProseMirror
Rich content editors should, ideally, produce clean, semantically meaningful documents while still being easy for users to understand. ProseMirror tries to bridge the gap between editing explicit, unambiguous content like Markdown or XML, and classical WYSIWYG editors. It does this by implementing a WYSIWYG-style editing interface for documents more constrained and structured than plain HTML. You can customize the shape and structure of the documents your editor creates, and tailor them to your application's needs. ProseMirror has built-in, ground-up, rock solid support for collaborative editing, where multiple people work on the same document in real time. Document schemas allow editing documents with a custom structure without writing your own editor from scratch. A modular architecture makes sure you only load the code you need, and can replace parts of the system as needed. A plugin system allows you to easily enable additional functionality.
Learn more
BlockNote
BlockNote is an open source, block-based rich text editor for React that offers a polished, Notion-style user experience with minimal setup. It comes with built-in UI components like menus and toolbars, which are fully customizable. It supports drag-and-drop functionality, allowing users to organize content into blocks that can be nested or rearranged. Developers can extend the editor with custom blocks, schemas, and plugins, benefiting from first-class TypeScript support for type safety and autocompletion. BlockNote enables real-time collaboration using Yjs, with support for providers like Liveblocks and PartyKit, allowing multiple users to edit documents simultaneously. It also supports theming, markdown, and HTML conversion, and can be used with vanilla JavaScript for non-React projects. Built on top of ProseMirror and TipTap, BlockNote simplifies the process of adding a rich text editor to applications, eliminating the need to build interface elements from scratch.
Learn more
ReactPage
ReactPage is a next-level content editor for react. It enables webmasters and content editors to create the content they want with the components you provide as a developer. Powerful and customizable RichText Editor (powered by Slate), 12-column grid responsive grid layout, drag & drop cells, undo and redo, copy and hotkey support, as well as multi-language support. Add any custom components you like. ReactPage has a simple API, it's basically just like a form field and can be included in any project. Pass the current value that you might read from your datastore and update the value when onChange is called. ReactPage will only load what is really required for it to display. This results in a small and very light bundle size file. Anything can be displayed inside a cell of this editor! You can add text, images, videos and any custom component you want by creating custom CellPlugins.
Learn more
Plate
Plate is a rich-text editor framework for React, designed to simplify complex text editing needs. Built with Slate.js and TypeScript, it offers a highly customizable and extensible editing experience. Plate provides a wide range of plugin packages that enhance the behavior, hooks, serialization, normalization, and other features of the editor. These plugins are "headless," meaning they are unstyled by default, allowing developers to style them as needed. It includes state management with Zustand stores, custom hotkeys, API methods, and transforms accessible through editor.api and editor.transforms. Plate also offers unstyled and accessible components based on Radix UI, serving as the foundation for building high-quality design systems. For those seeking a visually appealing interface, Plate provides pre-built styled components based on shadcn/ui, which can be customized to create a unique, accessible, and visually pleasing user interface.
Learn more