You make a change, hit save, and something breaks. A paragraph you spent an hour writing? Gone. A page layout you carefully arranged? Replaced by an earlier, worse version. WordPress users know this pain. EmDash, Cloudflare’s new open-source CMS (version 0.1, built in roughly 2 months by Astro core team member Matt Cain), ships with a revision and draft system designed to prevent exactly this. Here’s how it works and how you use it.
What EmDash’s Revision System Actually Saves
Every time you save a page or post in EmDash, the system creates a snapshot. Not just the content body — the full state including title, featured image, SEO metadata, categories, and custom fields. The source confirms: “we have the revisions. Very nice.”
EmDash's architecture is the most coherent challenge WordPress has faced — the plugin sandbox alone justifies the experiment.
In the playground at emdashcms.com (a temporary instance that lasts one hour), revisions are limited. On a real deployed instance, every save generates a new revision entry. Open a published post, make an edit, and the original version stays intact under the revision history. You never overwrite — you layer.
The practical difference from WordPress? WordPress also saves revisions, but they live in a separate wp_postmetacodecodecodecodecode table that bloats your database. EmDash stores them as structured JSON (portable text format), keeping the data clean and the full history queryable without extra plugin overhead.
Recover Content from a Previous Revision in 4 Steps
Here’s the exact workflow when you need to undo a bad edit on a page or post in EmDash:
- Open the content item from the Posts or Pages section in the admin dashboard.
- Look at the right sidebar panel. You’ll see a Revisions section with timestamps listed in reverse chronological order — most recent save first.
- Click any revision timestamp. The preview pane loads that exact version of the content: title, body, featured image, and all metadata fields.
- If the preview shows the version you want, click Restore. That revision becomes the current published or draft version.
What happens to the version you just overwrote? It becomes another revision entry. Nothing is deleted. The system keeps every save you’ve made.
This process works for both published content and content still in draft. A post saved five times before publishing has five revision entries you can return to.
How Drafts Prevent Publishing Mistakes
EmDash separates draft content from published content at the database level. When you create a new post, it starts in draft status by default. You can save multiple times, make edits across days, and nothing goes live until you explicitly click Publish.
The critical detail: EmDash’s draft system supports scheduled publishing. You set a date and time, save as draft, and the system publishes automatically at that moment. If you change your mind before the scheduled time, switch the status back to draft or delete the entry entirely.
The front-end editor also respects drafts. Click the Edit button while viewing your site’s front end, and you enter an inline editing mode. Save those edits — they go to the draft version, not the live version. You preview the changes, then decide to publish or discard.
This is the edge case most CMS users miss: editing on the front end should never immediately overwrite the live page. EmDash’s draft-first architecture ensures that.
EmDash vs WordPress: Revision Features Compared
| Feature | EmDash (v0.1) | WordPress (6.x) |
|---|---|---|
| Revision storage format | Structured JSON (portable text) | Serialized PHP in wp_postmetacodecodecodecodecode |
| Draft-publish separation | Built-in, with scheduled publishing support | Built-in, but scheduled publish requires cron |
| Front-end inline editing | Yes — edits go to draft, not live | Yes (via block editor), but edits apply directly |
| Revision restore from preview | Click a timestamp, preview, then restore | Click a timestamp, compare diff, then restore |
| Custom post type revisions | Supported natively — flexible content types include revision history | Supported only if the custom post type explicitly enables revisionscodecodecodecodecode via register_post_type()codecodecodecodecode |
| Revision retention | Every save retained (no built-in limit in v0.1) | Configurable via WP_POST_REVISIONScodecodecodecodecode constant (default: 5 per post) |
| AI agent access to revisions | MCP server can query and restore revisions programmatically | Requires custom REST endpoint or plugin |
The table shows one clear advantage for EmDash: custom post types get revisions without any plugin. In WordPress, you need to add 'revisions' => truecodecodecodecodecode to your register_post_type()codecodecodecodecode call, and many site owners forget this step. EmDash’s flexible content types (pages, posts, projects, or any custom type you create) all inherit revision support automatically.
What Revisions Don’t Cover (Yet)
EmDash is version 0.1. Some gaps exist.
First, the playground at emdashcms.com does not include full revision history. You can see the system saving in real time, but you cannot browse past revisions in the temporary instance. To test revisions properly, deploy EmDash to a Cloudflare Workers account or a local Node.js server.
Second, there is no visual diff tool. WordPress shows you what changed between two revisions with highlighted additions and deletions. EmDash shows only the raw restored content. You cannot, as of this beta, compare revision A against revision B side by side.
Third, there is no automatic cleanup. Every save becomes a permanent revision. On a site with heavy editing activity, the revision count grows without limit. In WordPress, you can set WP_POST_REVISIONScodecodecodecodecode to cap the number. EmDash offers no such setting yet.
The Real Safety Net: Combine Drafts, Revisions, and the Import Tool
The most overlooked recovery path in EmDash is the WordPress import tool. If you migrate a WordPress site into EmDash (using the WXR export file or the dedicated export plugin), your entire content history comes with it. Posts, pages, media, custom post types — all of it. The import maps Yoast SEO fields to EmDash’s built-in SEO fields automatically.
This means even if you delete content inside EmDash, you can re-import from your original WordPress export. It’s not a substitute for proper revision history, but it is a hard backup that survives accidental deletion.
For production use in 2026, that extra layer matters. EmDash’s architecture is the most coherent challenge WordPress has faced — the plugin sandbox alone justifies the experiment. But the revision system, like everything else in v0.1, will evolve. Keep a separate backup of your content exports until it does.
- What does EmDash's revision system save?It saves the full state of a page or post, including title, body, featured image, SEO metadata, categories, and custom fields.
- How do you recover content from a previous revision in EmDash?Open the content item, click a revision timestamp in the right sidebar, preview the version, and click Restore.
- What are the limitations of EmDash's revision system?There is no visual diff tool, no automatic cleanup of old revisions, and no cap on the number of revisions saved.