Using SwiftUI to Build a Mac-assed App in 2026

20 points by ehamberg 7 hours ago on lobsters | 2 comments

david_chisnall | 7 hours ago

UIKit was also a bit step backwards in one regard: Undo support. The native text widget still has single-level undo, so it feels like moving back from vim to vi. In AppKit, everything integrated with NSUndoManager, UIKit makes you do this work yourself and fight the toolkit every step of the way. No idea if SwiftUI does, but I've never seen a SwiftUI app with good undo support. This is a huge step backwards for usability.

It's understandable in part because Sudden Termination meant that you needed to persist undo state, and the simplest way of doing undo was having NSUndoManager capture a block, which doesn't lead to a nice serialisation model. We addressed this in EtoileUI / CoreObject by having the model track prior states (and transitions, for redo and rebase-like operations) and the UI decide which ones wanted to be tagged as the result of pressing the undo button. Apple started doing a bit of this with CoreData, then gave up.

incanus | 2 hours ago

This article is a great illustration of some of the subtleties of true Mac app behavior that are often missing in frameworks like Electron, and that casual observers do not notice at all because they are numb to the ambivalence of most UI frameworks and desktop environments. I am gradually moving (back) to Linux and constantly noticing and wishing for things like Enter activating the currently-highlighted button, Esc cancelling the current dialog, undo and redo support of text changes, a balance between tabbing between prominent controls and every control, and the like. There are some fundamentally solved-for-decades problems in UX that even Apple are missing nowadays and it’s quite sad. We have evolved so many aspects of computing while still spinning our wheels on a clean, efficient UX for the average person.