FAQ

PreviousNext

Common questions about paste behavior, browser support, package scope, and proof expectations.

These answers describe the Plate-maintained Slate package set.

Why Is Pasted Content Plain Text?

Slate does not know your product schema. It cannot safely turn arbitrary HTML into your nodes without an app-owned policy.

By default, pasted content becomes text. Add a clipboard.insertData extension handler when the app wants to consume DataTransfer HTML, files, or custom MIME data. Return true after the handler owns the paste.

Use Slate DOM, Event Handling, and the Paste HTML example as the starting points.

What Browsers And Devices Does Slate Support?

Desktop browser behavior is claimed only where tests and browser proof cover it.

The main local lanes target current Chromium, Firefox, Safari/WebKit, and mobile viewport rows through Playwright. Raw mobile-device behavior is a separate proof lane and should not be inferred from a desktop browser run.

If a behavior depends on native selection, IME, clipboard, drag/drop, hidden DOM, or huge documents, verify it through browser proof before treating it as supported.

Is This The Official Upstream Slate Release?

No. This is Plate's Slate package set. It keeps the Slate document model and operation idea, but the runtime, package names, proof harness, and public API are maintained in the Plate repository.

Read Why This Fork for the maintenance philosophy and boundaries.

Should Apps Use @platejs/browser?

Use @platejs/browser for tests and proof harnesses. Do not build product editor features on it.

Apps should build editors with @platejs/slate, @platejs/slate-dom, @platejs/slate-react, and the extensions they need.

Where Should I Start?

Start with Installing Slate. Then read Why This Fork if you need the project boundary, or Migration if you are moving from upstream Slate 0.x.