§ 01 / Vs Elementor

Elementor
is the wrong layer.

Elementor paints layout onto a canvas and ships it back out as opaque, runtime-coupled HTML. Atlas renders deterministic JSON manifests, in Gutenberg, server-side. The difference is structural — and it shows up everywhere.

On the left · the incumbent

The Elementor
canvas.

Drag-and-drop widgets onto an editor canvas. Layout serialised into post meta as a proprietary tree. A second runtime, layered on top of WordPress, fighting the theme it sits inside.

On the right · what Atlas does

The block-native
paradigm.

One Gutenberg block. Deterministic JSON manifests, rendered server-side. Static chrome ships zero JS; islands hydrate only where marked.

Build time

Author lays out a page by dragging Elementor widgets onto the canvas. Configuration sprawls across the panel inspector, global settings, and a forest of nested option tabs. Two pages with similar layouts diverge silently because the structure underneath is unreadable.

Visual, opaque, unrepeatable

Author edits one block inside Gutenberg. The block reads a structured manifest. The same layout, applied twice, is the same bytes twice — because it is the same JSON twice.

Structured, legible, repeatable
Output

Markup is generated at render time by Elementor's runtime — nested wrapper divs, helper classes, and inline styles the author never wrote. Deactivate Elementor and the markup it produced disappears with it.

Runtime-coupled HTML

Markup is rendered server-side from the manifest. Static chrome ships as plain HTML with no hydration cost. JavaScript only loads for islands the manifest explicitly marks.

Deterministic, hydration-light
Portability

Layout state lives in post meta as Elementor's proprietary JSON tree, tied to widget versions and addon plugins. Templates export, partially. A site built this way is, in practice, married to Elementor.

Locked to the builder

Manifests are plain JSON, version-controlled in git. Diff them in pull requests. Move them between sites. Read them in any editor. Layout is no longer trapped in the database.

Git-native, diff-able
Source of truth

The Elementor canvas is the source of truth. To know what a page renders, you open it in Elementor. There is no document upstream of the rendered page that a developer can read end-to-end.

The canvas, only the canvas

The manifest is the source of truth. It lives in your repository alongside the rest of the codebase. The editor is a view onto it, not the only place it exists.

JSON in the repo
Failure mode

Deactivate Elementor and the page collapses into shortcodes, raw markup, or a blank canvas. The site is hostage to the runtime; uninstalling Elementor is migration work, not a checkbox.

Hostage to the runtime

Deactivate Atlas and the block degrades to plain HTML. No theme rewrite required. The page does not vanish; it simply loses the dynamic shell around its content.

Graceful, reversible
Cost over time

Every page accumulates one-off custom CSS overrides, nested section wrappers, and bespoke widget settings. Two years in, no one can confidently change a heading style across the site without breaking an Elementor template somewhere.

Entropy compounds

Manifests compose, diff, and refactor like the rest of your codebase. A change to the schema is a pull request. Site-wide edits are a find-and-replace across JSON, reviewable before they ship.

Refactorable like code

One block. Manifests in git. Server-rendered HTML. The page builder was the wrong layer all along.

Install Atlas