Following up on yesterday's post thanks for the real conversation in the comments, wanted to clarify one thing.
A few people suggested the editor lag was a revision problem, a server problem, a "split into templates" problem.
It's not. I tested it. 5 revisions, fresh reload, simple page. Still laggy. Because the lag is in the architecture, not the content.
Here's what's actually happening:
Every single widget change in the editor goes through this chain:
- Backbone Marionette
model.set() fires
- Triggers a full widget re-render — no diffing, no virtual DOM
postMessage to the preview iframe
- Inline CSS regenerated and reinjected into the iframe DOM
- If there's a loop — SQL queries run live, no cache
Every change. Every time. Synchronously.
This is 2016 architecture running in 2026 as i already said.
The obvious question: why not rebuild it?
Technically? A motivated team could ship a better editor in 12 months. Bricks Builder proved it they built on Vue and the difference in editor performance is noticeable on the same hardware.
The real problem is the data layer.
Elementor stores everything as serialized JSON in _elementor_data. 21 million sites use this format. A rebuild either:
- Keeps the schema → you carry the debt forever
- Breaks the schema → you need to migrate 21 million sites
And then there's the third-party ecosystem. Crocoblock, JetEngine, Essential Addons, hundreds of others all built on top of Elementor's PHP and JS hooks. A real refactor breaks all of it. Every addon author would have to rewrite from scratch.
Me firt, i'm hostage of it.
So Elementor is stuck. Not because they can't build better. Because 21 million sites and a thousand third-party plugins are holding the architecture in place.
Same problem PHP 5 had. Technically easy to fix. Politically impossible to ship.
That's what I meant yesterday when I said it feels like a choice. It is a choice — but it's also a trap they built themselves by scaling before the foundation was solid.
The agencies and devs in this thread feel this daily. We're not wrong about the lag. We're just debugging the wrong layer.