Slate.js is a fully customizable rich text editing framework.
With Slate, you can build editors like Medium, Dropbox Paper or Canvas that use intuitive, rich interaction and have become the benchmark for web applications. At the same time, you don’t have to worry about getting into complexity in code implementation.
Slate can do this because all its logic is implemented through a series of plugins. In this way, you will no longer be troubled by the problem of whether a feature is within or outside the [core] boundary of the editor. You can understand it as a pluggable content editable implementation based on React and Immutable.
In addition, Slate.js is inspired by the class libraries Draft.js, Prosemirror and Quill.
Slate is still in beta. It is currently available, but you may need to fix some complex usage scenarios with pull requests.