Choosing between ProseMirror and Slate

Hi everybody!

My team and I are about to implement a new editor for our application. The editor is a central part of the app and we need to implement a bunch of custom features. I’ve been looking at a lot of different alternatives and narrowed it down to two: ProseMirror and Slate. Both options seems really good and solid. They are both being used by large companies and I’ve seen some good demos of them both.

ProseMirror seems to have made a wonderful job with implementing collaboration (which will be important for us down the road). Slate seems to have integrated some sort of OT support in their core, but I’ve not seen anyone using it.

We are a small team of 1-2 persons and the time is a bit limiting. I’ve been reading about the two editors and played around with ProseMirror for the last couple of days and have the following concerns:

  1. Slate seems to be a better fit for our stack since we are using React. I had a pretty hard time implementing custom React node components for with ProseMirror. Atlasssian seems to has made a good React renderer for ProseMirror but that seems a bit too complex for our small team to implement. What are your thoughts and experiences about working with React and ProseMirror?
  2. Slate has a somewhat easier API to work with, but ProseMirror seems more powerful. It feels like we’ll be more productive with Slate. This is probably our biggest concern since we don’t have much experiences implementing editors from scratch.

I would love to hear some input from someone more experienced. What are your thoughts on this?

All input is much appreciated.

Best regards, Philip

1 Like

I think your analysis pretty much covers it—if Slate’s features cover your need, you’ll probably have an easier time with Slate. ProseMirror is more powerful and versatile, but also more work to integrate.

1 Like

@philip:

I started with building a custom rich text editor with ProseMirror + React about one month ago and so far my experience with ProseMirror has been good.

I don’t have any experience with Slate but I did spent a little of time on on several Slate’s plugins of editable Tables and List and I don’t feel confident enough that State’s model is solid enough to build something like Google Doc does.

For instance, the slate-edit-table does not support multiple cells action (e.g. selection, merging, color…etc) (reference: see https://github.com/GitbookIO/slate-edit-table/issues) Similar to List, I also wasn’t able to find a Slate’s plugin that makes the List editing experience close to what Google Doc does.

If you think that Table or List editing is critical, you might want to double check with Slate to ensure that it’s does not prevents you from building something solid.

Despite my immature observations of Slate, I’d like to share my own experience ProseMirror.

I personally have a lot of experience with React & JavaScript, but I have zero knowledge of ProseMirror. Before starting with ProseMirror, I have about 1 year experience with DrafJS and my goal is to migrate our DrafJS editor into a custom editor so that we’d support some advance features (e.g. Comments, Real-time Collaboration).

After spending one month on learning and developing, I’m able to build the entire user interface for the new rich text editor from scratch.

You may check out our repository at

Thanks.

8 Likes

Wow, thanks for sharing that. It’s wonderful to hear that the library is working so well for you!

@hedgerwang Any issues running your app on Android web browser? I’ve hit a bit of a wall with SlateJS due to their wonky Android support.