CommunityNews

CommunityNews

Slate – A completely customizable framework for building rich text editors

Why?

Why create Slate? Well… (Beware: this section has a few of my opinions!)

Before creating Slate, I tried a lot of the other rich text libraries out there—Draft.js, Prosemirror, Quill, etc. What I found was that while getting simple examples to work was easy enough, once you started trying to build something like Medium, Dropbox Paper or Google Docs, you ran into deeper issues…

  • The editor’s “schema” was hardcoded and hard to customize. Things like bold and italic were supported out of the box, but what about comments, or embeds, or even more domain-specific needs?
  • Transforming the documents programmatically was very convoluted. Writing as a user may have worked, but making programmatic changes, which is critical for building advanced behaviors, was needlessly complex.
  • Serializing to HTML, Markdown, etc. seemed like an afterthought. Simple things like transforming a document to HTML or Markdown involved writing lots of boilerplate code, for what seemed like very common use cases.
  • Re-inventing the view layer seemed inefficient and limiting. Most editors rolled their own views, instead of using existing technologies like React, so you have to learn a whole new system with new “gotchas”.
  • Collaborative editing wasn’t designed for in advance. Often the editor’s internal representation of data made it impossible to use to for a realtime, collaborative editing use case without basically rewriting the editor.
  • The repositories were monolithic, not small and reusable. The code bases for many of the editors often didn’t expose the internal tooling that could have been re-used by developers, leading to having to reinvent the wheel.
  • Building complex, nested documents was impossible. Many editors were designed around simplistic “flat” documents, making things like tables, embeds and captions difficult to reason about and sometimes impossible.

Of course not every editor exhibits all of these issues, but if you’ve tried using another editor you might have run into similar problems. To get around the limitations of their API’s and achieve the user experience you’re after, you have to resort to very hacky things. And some experiences are just plain impossible to achieve.

If that sounds familiar, you might like Slate.

Which brings me to how Slate solves all of that…

Read in full here:

This thread was posted by one of our members via one of our news source trackers.

Where Next?

Popular General Dev topics Top

First poster: bot
Why I Teach vim. The why of why people use vim has been covered fairly extensively, so I thought I would spend a little time explaining ...
New
First poster: bot
Batteries included with Emacs. Emacs has a reputation for being borderline unusable out of the box, of being bloated but somehow surpris...
New
First poster: bot
Wheel is a navigation plugin for Vim and Neovim. It is buffer group oriented and makes abundant use of special buffers, in which you can ...
New
ankur
I am thinking of switching to Onivim from VSCode Vim since VSCode Vim supports limited Vim features . Would like to hear from the current...
New
OvermindDL1
You want VSCodium from my understanding then, it is VSCode with the telemetry removed. :slight_smile:
New
First poster: OvermindDL1
It’s Magit! A Git interface inside Emacs Magit is a text-based Git user interface that puts an unmatched focus on streamlining workflows....
New
CommunityNews
I was a rather puzzled the first time I spotted DWIM in an Emacs interactive command name. Don’t think I remember what the command itself...
New
DevotionGeo
I installed Github Copilot (VS Code extension) and signed up for the technical preview three days ago. Yesterday I got the invitation, an...
New
First poster: jaeyson
Nova. The beautiful, fast, flexible, native Mac code editor from Panic.
New
First poster: bot
Here’s my (current) minimal setup: set ai nocp digraph ek hid ru sc vb wmnu noeb noet nosol set bs=2 fo=cqrt ls=2 shm=at tw=72 ww=&l...
New

Other popular topics Top

AstonJ
A thread that every forum needs! Simply post a link to a track on YouTube (or SoundCloud or Vimeo amongst others!) on a separate line an...
New
PragmaticBookshelf
Brace yourself for a fun challenge: build a photorealistic 3D renderer from scratch! In just a couple of weeks, build a ray tracer that r...
New
AstonJ
What chair do you have while working… and why? Is there a ‘best’ type of chair or working position for developers?
New
AstonJ
Curious to know which languages and frameworks you’re all thinking about learning next :upside_down_face: Perhaps if there’s enough peop...
New
AstonJ
I’ve been hearing quite a lot of comments relating to the sound of a keyboard, with one of the most desirable of these called ‘thock’, he...
New
rustkas
Intensively researching Erlang books and additional resources on it, I have found that the topic of using Regular Expressions is either c...
New
PragmaticBookshelf
Rails 7 completely redefines what it means to produce fantastic user experiences and provides a way to achieve all the benefits of single...
New
New
First poster: AstonJ
Jan | Rethink the Computer. Jan turns your computer into an AI machine by running LLMs locally on your computer. It’s a privacy-focus, l...
New
sir.laksmana_wenk
I’m able to do the “artistic” part of game-development; character designing/modeling, music, environment modeling, etc. However, I don’t...
New