Everyone says widgets are dead. The common advice goes something like this: block editors, page builders, and component-based theming made widgets obsolete. Why drag-and-drop a calendar widget into a sidebar when you can build a full-page layout with reusable blocks? That advice is correct for most use cases. But it’s incomplete for the specific scenario EmDash targets.
EmDash, the new open-source CMS from Cloudflare, ships with a widget system that looks eerily familiar to anyone who used WordPress a decade ago. You can add a widget area, drag blocks into it, and configure them. Critics called this a red flag, proof that EmDash is copying WordPress’s bad ideas. They missed the point.
The feature that looks like a step backward is actually the feature that makes EmDash usable for the audience it targets.
The widget system in EmDash solves a problem that block editors actually created.
The Problem Blocks Failed to Solve
WordPress’s Gutenberg editor did something great. It made inline content flexible. You can arrange media, text, and embeds inside a single post without touching HTML. But Gutenberg also made something harder: managing content that appears on many pages at once.
Think about a site-wide newsletter signup bar, a featured post widget that updates automatically, or a seasonal promotion banner that needs to appear across multiple sections. In a block editor, you either paste that block into every page manually, use a plugin for global blocks, or build a custom theme function. All three approaches have downsides. Manual duplication breaks the moment you need to update the content. Plugins add dependencies. Custom code requires a developer.
EmDash’s widget system handles this differently. Widgets are reusable content containers that live outside the page editor. You create them once, assign them to widget areas (header, sidebar, footer, after-post), and the system renders them everywhere that area appears. When you update the widget, every instance updates automatically.
This is not a blast from the past. It’s a deliberate design choice for a specific workflow: sites where the same content piece needs to appear in multiple locations.
Where Widgets Beat Blocks
EmDash ships with three starter templates: blog, portfolio, and marketing site. Each template uses widget areas differently. The blog template puts widgets in the sidebar and footer. The portfolio template uses them for hero sections and project callouts. The marketing template relies on them for banners and signup forms.
Here is where the common advice falls apart. Block editors assume every piece of content lives in one place. Widgets assume content moves. For a site with a blogroll that needs to update dynamically, a widget that pulls the latest three posts is simpler than rebuilding that list in every page’s block editor. For a site with a recurring call to action that changes seasonally, a single widget update replaces fifteen individual block edits.
The edge case is a content-heavy site with multiple authors. A news site, for example, needs a breaking news ticker that updates hourly. In a block editor, someone must remember to update every page. With widgets, the ticker lives in one widget area, and every page pulls from it. EmDash’s widget editor supports inline editing, so an editor can change the ticker text from the front end without entering the admin panel.
The Architecture Behind It
EmDash’s widget system is not a separate feature. It’s built on the same content type architecture as pages and posts. Widgets are just content entries with a specific type and a location assignment. The admin panel lets you define widget areas in the theme, then drag widgets into them. Each widget can hold text, images, lists, or embedded content.
The system uses portable text, the structured JSON format that Sanity popularized. This means widgets are not HTML strings. They are structured data that can render differently on different surfaces. A widget might appear as a sidebar block on desktop and a bottom sheet on mobile, without duplicating the content.
EmDash’s theme system (built on Astro) renders widget areas through component slots. A theme developer defines a sidebar slot, and the CMS populates it with whatever widgets the admin assigned. The theme never touches the widget content directly. This separation is exactly what block editors tried to achieve, but they did it at the page level. EmDash does it at the layout level.
The Honest Trade-Off
Widgets are not the right tool for every site. If your site is a documentation hub with one author and no dynamic sidebars, a block editor is simpler. You do not need widget areas. You need a clean writing interface and a fast build.
Widgets also add complexity for theme developers. A theme that uses widget areas must define those areas in the theme config, handle fallback rendering, and test across multiple widget configurations. A static layout is easier to build and debug.
But EmDash is not targeting the developer who builds a single-page marketing site. It is targeting the WordPress migration market, sites that run 12 to 15 plugins and have sidebars full of dynamic content. For those sites, widgets are not a step backward. They are the path of least resistance.
What the Critics Missed
The loudest criticism of EmDash’s widget system came from developers who assumed widgets were a copy of WordPress’s legacy widget panel. It is not a copy. WordPress widgets are PHP functions that echo HTML. EmDash widgets are structured content entries rendered through Astro components. The user experience looks similar because the problem it solves is the same: managing reusable content across multiple locations.
The difference is architectural. WordPress widgets live in the database as serialized arrays. EmDash widgets live in the content type system, queryable through the same API as posts and pages. An AI agent can create, update, or delete widgets through the MCP server without ever touching the admin interface. Try doing that with WordPress’s legacy widget screen.
EmDash’s widget system also supports sections, a related concept that acts like a widget area for inline content. Sections let you define reusable content blocks that insert into the page editor, similar to WordPress’s reusable blocks but with the same structured content backend. The combination of widgets and sections gives editors two tools: widgets for layout-level content, sections for page-level content.
The Real Takeaway
The advice that widgets are obsolete assumes every CMS architecture is the same. It is not. A block editor that stores content as HTML makes widgets redundant because the content cannot escape the page. A structured content CMS that stores content as JSON makes widgets necessary because the content needs to appear in multiple contexts without duplication.
EmDash’s widget system is a specific solution to a specific problem. If you are building a new site from scratch with a single content structure, you probably do not need widgets. If you are migrating a WordPress site with eight sidebar widgets and a footer that changes monthly, widgets will save you time and complexity.
The feature that looks like a step backward is actually the feature that makes EmDash usable for the audience it targets. Not every design decision needs to be forward-looking. Some need to be practical for the people who will actually use the software.
FAQ
What is the difference between EmDash widgets and WordPress widgets?
EmDash widgets are structured content entries stored as JSON and rendered through Astro components. WordPress widgets are PHP functions that echo HTML, stored as serialized arrays. EmDash widgets support API access, AI agent integration, and multi-surface rendering. WordPress widgets do not.
Can I use EmDash widgets without a Cloudflare account?
Yes. EmDash runs on any Node.js server with SQLite. Widgets work in self-hosted mode. The sandboxed plugin system requires Cloudflare’s paid plan, but widgets are part of the core CMS and do not need sandboxing.
Do EmDash widgets support dynamic updates?
Yes. Widgets update instantly across every location they appear. You edit the widget once, and the change propagates to all widget areas. The front-end editor lets you make inline changes without entering the admin panel.
Are widgets required for an EmDash site?
No. You can build a site without any widget areas. The starter templates include them, but a custom theme can omit them entirely. EmDash’s content type system works independently of the widget system.
What is the difference between EmDash widgets and WordPress widgets?
EmDash widgets are structured content entries stored as JSON and rendered through Astro components. WordPress widgets are PHP functions that echo HTML, stored as serialized arrays. EmDash widgets support API access, AI agent integration, and multi-surface rendering. WordPress widgets do not.
Can I use EmDash widgets without a Cloudflare account?
Yes. EmDash runs on any Node.js server with SQLite. Widgets work in self-hosted mode. The sandboxed plugin system requires Cloudflare’s paid plan, but widgets are part of the core CMS and do not need sandboxing.
Do EmDash widgets support dynamic updates?
Yes. Widgets update instantly across every location they appear. You edit the widget once, and the change propagates to all widget areas. The front-end editor lets you make inline changes without entering the admin panel.
Are widgets required for an EmDash site?
No. You can build a site without any widget areas. The starter templates include them, but a custom theme can omit them entirely. EmDash’s content type system works independently of the widget system.
- What is the difference between EmDash widgets and WordPress widgets?EmDash widgets are structured content entries stored as JSON and rendered through Astro components. WordPress widgets are PHP functions that echo HTML, stored as serialized arrays.
- Can I use EmDash widgets without a Cloudflare account?Yes. EmDash runs on any Node.js server with SQLite. Widgets work in self-hosted mode.
- Do EmDash widgets support dynamic updates?Yes. Widgets update instantly across every location they appear. You edit the widget once, and the change propagates to all widget areas.
- Are widgets required for an EmDash site?No. You can build a site without any widget areas. The starter templates include them, but a custom theme can omit them entirely.