A series of common questions people have about Slate:
Why is content pasted as plain text?
One of Slate's core principles is that, unlike most other editors, it does not prescribe a specific "schema" to the content you are editing. This means that Slate's core has no concept of "block quotes" or "bold formatting".
For the most part, this leads to increased flexibility without many downsides, but there are certain cases where you have to do a bit more work. Pasting is one of those cases.
Since Slate knows nothing about your domain, it can't know how to parse pasted HTML content (or other content). So, by default whenever a user pastes content into a Slate editor, it will parse it as plain text. If you want it to be smarter about pasted content, add a clipboard.insertData extension handler that deserializes the DataTransfer object's text/html data and returns true when it handles the paste.
What browsers and devices does Slate support?
Slate targets modern browsers on desktop and mobile devices.
On desktop, Slate focuses on current Chrome, Edge, Firefox, and Safari. Internet Explorer is unsupported.
Mobile support has a different proof shape from desktop support. iOS is supported but not part of every routine local verification pass. Android input uses composition and mutation paths because its beforeInput support differs from desktop browsers, so Android behavior needs dedicated proof instead of desktop assumptions.
Slate does not bundle polyfills for old browsers. If your app targets a browser without platform APIs that Slate uses, install those polyfills in the app. Slate still does not guarantee old-browser behavior.