Slate – A completely customizable framework for building rich text editors

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • slate

    A completely customizable framework for building rich text editors. (Currently in beta.) (by ianstormtaylor)

  • I've been using Slate heavily this year. I'm not a Slate developer, but I've read a lot of the source code, follow all the Github issues, etc., and I'm "owning an aging fork". As far as I can tell, the API instability mentioned elsehwere in this thread resulted from a nearly complete rewrite (inspired by immerjs) that launched in May 2020; for over a year since then, the API has been very stable, mainly because Ian Taylor, who wrote most of Slate, seems to have moved on to other projects (see https://github.com/ianstormtaylor/slate/graphs/contributors)... there's still a lot of work on Slate, but it's mainly by other people who are trying to preserve the vision that Ian laid out. I ended up forking only the React part of Slate, which is officially a plugin, and massively rewriting it to support virtualized windowing, so we can work with very large possibly complicated to render documents. I also added fairly generic realtime collaboration support. This is currently used in https://cocalc.com for WYSIWYG editing of Markdown documents. I also have plans to extend my use of Slate with windowing to Jupyter notebooks and other document types.

    I chose Slate over Prosemirror because the source code of Slate is Typescript written in a clear modern style, and I was able to start reading any part of it and understand it easily, whereas I find Prosemirror's core source code more difficult (this may just be a reflection of my shortcomings). I spent a lot of time initially just reading Slate PR's claiming to fix bugs, then integrating the PR's into my fork, often in a way that makes sense for my project, but likely wouldn't in general (I left helpful remarks on Github).

    Slate is an interesting project, and it is comparable to Prosemirror. However, development is structured very differently at present, and I think there's little funding behind Slate, whereas the author of Prosemirror seems to have done a good job encouraging sustainable donations. I think Ian Taylor, who mainly wrote Slate, also cofounded a company called Segment.io, which is a serious startup that was recently sold to Twilio, so I don't know what his motivations are...

  • prosemirror-view

    ProseMirror's view component

  • Yes, I looked at it a bit more the other day and the API looks like a really nice layer on top of ProseMirror.

    Draft.js was another far out experience for me. I built a first attempt of my app with it, only to discover that Draft.js didn't work on Android. It was buggy on iOS, but Android just didn't work. I had just assumed erroneously that—Facebook—you know, it'll work on Android. But it didn't at all. Android support did land by a huge community PR[0], but by then I had already decided I needed to find something else. That PR actually led me[1] to ProseMirror:

    > This approach is the one used by Prosemirror (see https://github.com/ProseMirror/prosemirror-view/blob/master/...), which is the only Rich Text Editor I've tried that works well on Android. [1]

    [0] https://github.com/facebook/draft-js/pull/2035

    [1] https://github.com/facebook/draft-js/pull/2035#issue-2613622...

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • Draft.js

    Discontinued A React framework for building text editors.

  • Yes, I looked at it a bit more the other day and the API looks like a really nice layer on top of ProseMirror.

    Draft.js was another far out experience for me. I built a first attempt of my app with it, only to discover that Draft.js didn't work on Android. It was buggy on iOS, but Android just didn't work. I had just assumed erroneously that—Facebook—you know, it'll work on Android. But it didn't at all. Android support did land by a huge community PR[0], but by then I had already decided I needed to find something else. That PR actually led me[1] to ProseMirror:

    > This approach is the one used by Prosemirror (see https://github.com/ProseMirror/prosemirror-view/blob/master/...), which is the only Rich Text Editor I've tried that works well on Android. [1]

    [0] https://github.com/facebook/draft-js/pull/2035

    [1] https://github.com/facebook/draft-js/pull/2035#issue-2613622...

    I also had a to pick a rich text editor to build a "better Confluence" [1]. Initially started with Quill, but Quill is really limited and for example can't support rich text inside tables, only simple text.

    So after some research I picked prosemirror which is used by Confluence but prosemirror is the harder to learn and the most flexible, there was also Slate which is used by Slite but it was not as flexible as prosemirror. Notion and Google docs are using their own custom editor BTW.

    If you are looking for a rich text editor, there are surprisingly a lot of ressources. Either search for "rich text editor", "slate vs prosemirror" in Google, or my preferred way to get quality information. Search "prosemirror" in the HN search and read the threads [2]

    [1] https://dokkument.com/

    [2] https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...

  • milkdown

    🍼 Plugin driven WYSIWYG markdown editor framework.

  • french-press-editor

    ☕ An offline-first rich text editor component.

  • That's my experience. I own a fork of Slate and Slate plugins that I've been doing my best to maintain, as well as a wrapper: https://github.com/roast-cms/french-press-editor. My project is small enough not to have bandwidth to upgrade Slate or switch to another editor but popular enough to keep alive and maintain two years past the version release I solidified. The implementation I have isn't very buggy, I've used it almost every day and have over a hundred users who successfully used it as well. There was only one time when a serious bug surfaced, the rest being minor inconveniences. This is the implementation: https://www.analog.cafe/write/draft

  • react-page

    Next-gen, highly customizable content editor for the browser - based on React and written in TypeScript. WYSIWYG on steroids.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • GrapesJS

    Free and Open source Web Builder Framework. Next generation tool for building templates without coding

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts