"WYSIWYG is only justified if the markup must never appear. For a Markdown native, it never has to."
What WYSIWYG Actually Costs
A WYSIWYG editor (Tiptap, ProseMirror, Lexical) is a genuinely powerful thing — but it comes with a specific cost: it replaces the source string with a rich-text document model. Now a heading is a schema node, bold is a schema mark on the text inside it, and the Markdown you started with has to be parsed into the tree on load and serialized out of it on save. You've traded one representation (source) for three: the tree, the rendered view, and the Markdown you import/export.
The One Condition That Justifies It
That trade is worth it under exactly one condition: the markup characters must never be visible. If you're building a word processor for people who should never see a # or a ** — who want to click a Bold button and see bold, full stop — then a rich-text model is correct and the three-representation cost is the price of that experience. That's a real, valid product. It just isn't this one.
Condition: "markup must NEVER appear" -> WYSIWYG is justified (rich-text model)
Condition: "markup is meaningful, keep it" -> source model + Live Preview
# Rekindle's user is in the second row. So the heavier model buys nothing.
A Markdown Native Doesn't Meet That Condition
Dad is a Markdown native. The vault, the essays, the site content, years of Sublime and Obsidian and iA — all source-mode, all markup-visible, by preference. He wants to see the #. For that user, a WYSIWYG model would fight the workflow at every turn: hiding characters he relies on, forcing a parse/serialize round-trip on a file he'd rather edit directly, and complicating every soul feature that wants to read plain source.
So Rekindle takes the lighter road: source is the model, and Live Preview (decorations) gives the rendered look without the rendered model. You see bold as bold on inactive lines and the raw ** on the line you're editing — the readability of WYSIWYG with none of its representational tax. WYSIWYG wasn't rejected because it's bad; it was rejected because its one justifying condition isn't met.