VISION.md
Plate is the editor framework that actually ships. It runs in your app, with your schema, with your components, with your rules.
This document explains the current state and direction of the project.
We are still early enough that iteration is fast.
Project overview and developer docs: README.md
Contribution guide: CONTRIBUTING.md
Plate started as a way to make Slate-based editors practical to build and maintain in real products.
The goal: a rich-text editor framework that is composable, production-ready, and easy to adapt without giving up ownership of your editor, your schema, or your UI.
The current focus is:
Priority:
Next priorities:
Contribution rules:
Security in Plate is about explicit trust boundaries and sane defaults. Plate is a framework, not a hosted service.
The goal is to stay flexible for real product work while making risky paths obvious and operator-controlled:
We prioritize safe defaults where possible, but we do not want convenience abstractions that hide where trust decisions are actually made.
Plate has an extensive plugin and package API. Core stays lean; optional capability should usually ship as packages, plugins, or app-owned components.
Preferred extension path is npm package distribution plus local app composition and registry usage for development. If you build a plugin or component pack, host and maintain it in your own repository. The bar for adding optional capability to core is intentionally high. Plugin docs: https://platejs.org/docs/plugin Component docs: https://platejs.org/docs/plugin-components Plate UI docs: https://platejs.org/docs/installation/plate-ui
We still ship registry components and templates for baseline UX. New app-specific components should usually live in your own app or registry, not in core by default. Core UI additions should be rare and require broad demand, clear reuse, or a real API reason.
Plate is built on top of Slate. We want migration from Slate to Plate to be straightforward, and Plate re-exports much of the Slate surface where it improves DX.
But Plate should not become a dumping ground for bugs that reproduce in plain Slate. If the same issue happens in plain Slate without Plate-specific code, it belongs there.
Plate already ships AI packages and examples. We want AI support to stay optional, composable, and plugin-first. Core editor APIs should not contort around provider churn or hype-cycle abstractions.
Plate is currently code-first by design. This keeps setup explicit: users see plugin config, editor schema, serialization boundaries, and component ownership up front.
Long term, we want easier onboarding through templates, docs, CLI, and registry flows. We do not want convenience wrappers that hide critical editor decisions from users.
This list is a roadmap guardrail, not a law of physics. Strong user demand and strong technical rationale can change it.