Vol. 0 · Early preview (v0.1)Built in public · Rust + SQLite · AGPLv3 | Commercial
← All dispatches in The Broadsheet
Dispatch No. 02 · Architecture

Transpiling Elementor, Divi, and Gutenberg into a Unified Rust Layout AST

The hardest part of leaving WordPress isn't moving wp_posts rows—it's rescuing pages trapped inside Elementor JSON blobs, nested Divi shortcodes, and Gutenberg block comments.
By Billy
19 October 2026 · 7 min read
Plate IV — The Compiler
Plate IV — The CompilerField Dispatch #17
Author's Note
Billy is the founder and lead systems engineer of Daypress. Writing from the intersection of native Rust infrastructure, legacy WordPress migration, and AI-assisted visual publishing.
More posts by Billy →Browse all dispatches →

The page-builder lock-in problem

If you export a modern WordPress site to WXR XML and import it into another CMS, you quickly discover a dirty secret: your pages aren't HTML. If the site was built with Elementor, the real layout lives in _elementor_data postmeta as deeply nested JSON. If it used Divi, the post body is a soup of [et_pb_section][et_pb_row] shortcodes. If it used Gutenberg, styling is split between <!-- wp:group --> comments and theme.json presets.

A migration tool that only copies post_content leaves seventy percent of modern WordPress websites broken on arrival.
— Billy, Founder & Lead Engineer at Daypress

Inside the Daypress AST Transpiler

To solve this cleanly, we built our Rust AST compiler (crates/daypress-ast). During a 1-click JSON bundle or WXR XML import, the transpiler inspects both post_content and wp_postmeta:

  • Elementor Transpiler (src/elementor/): Parses _elementor_data containers, columns, and over 50 widget types alongside ElementorKit global colors and typography into typed AST node trees.
  • Divi 4 & 5 Transpiler (src/divi/): Lexes nested [et_pb_*] shortcodes and Divi 5 block comments into responsive grid and flex containers.
  • Gutenberg & HTML Transpiler (src/gutenberg/ & src/html_transpiler.rs): Converts core blocks and raw HTML documents into editable Daystudio nodes.
/d-admin/import — 1-Click WordPress JSON bundle and WXR XML migration screen
/d-admin/import — 1-Click WordPress JSON bundle and WXR XML migration screen

Zero-leak SSR sanitization

Once a page is in the canonical AST, the exact same tree powers both the interactive Daystudio visual builder and public Server-Side Rendering. Before any HTML reaches a visitor, our 3-tier SSR firewall (sanitize_ssr_html) strips all editor-only classes, contenteditable attributes, and drag handles while compiling responsive tablet/mobile media queries and hover pseudo-states into a scoped stylesheet.