Native all the way, until you need text
Native rich text and Markdown are hard
- Many commenters report that “just” rendering and editing rich text/Markdown natively is far from trivial, especially with streaming updates (LLM chats, logs, long documents).
- Problems cited: slow layout, UI jank when text streams in, broken selection (e.g., selecting a whole chat message), and poor behavior with large documents or long histories.
- Several people stress that text layout with rich formatting, bidi languages, glyph shaping, and inline images is one of the hardest UI problems.
SwiftUI, AppKit, TextKit debates
- Some say AppKit / NSTextView / TextKit 1 are solid and performant, but integrating them cleanly into a modern SwiftUI app is awkward.
- TextKit 2 is described as powerful but “kinda broken” and hard to use correctly; others claim good results but acknowledge complexity.
- A recurring theme: SwiftUI is convenient but often slower and less flexible, especially on macOS; non-trivial or non-standard UIs frequently hit limits.
Electron, WebKit, and “native vs web”
- Many argue that embedding WebKit to render Markdown/HTML is the most pragmatic option on Apple platforms; WebKit is considered “native enough.”
- Others push back, saying that relying on a browser engine just to get rich text is perverse and undermines the point of native toolkits.
- Electron is framed as “the worst option except all the others”: heavy, memory‑hungry, but with a huge, battle‑tested text/layout stack and ecosystem, which explains its popularity.
Performance and memory trade‑offs
- Disagreement over priorities:
- One side: RAM is abundant; UX smoothness and developer time matter more than saving hundreds of MB.
- Other side: Electron/Web engines cause unnecessary hardware churn, paging on 8–16GB machines, and are still slower than well‑engineered native UIs.
- Some benchmarks and anecdotes show SwiftUI lagging vs AppKit or Qt; others claim modern SwiftUI can be fast if carefully optimized.
Tooling gaps and ecosystem alternatives
- Suggestions include Qt, JUCE, Slint, WebKit, litehtml, Rust and C++ renderers, and custom engines (e.g., block editors, VMPrint‑style layout).
- Several note that browsers/Chromium have had vastly more investment than native UI stacks, which explains their maturity in text rendering.
Meta: skill vs framework
- A strong “skill issue” chorus claims native APIs can do this if used well.
- Others counter that for many product teams, spending months building a custom editor instead of features is unrealistic, so web‑centric solutions win.