From my experience with UIKit, with enough abstractions, it becomes nearly as expressive as SwiftUI but with none of its drawbacks. The same applies to AppKit. Even things like a simple result builder for NSMenu go a long way toward reducing the boilerplate.