
A honest look at building a native macOS app entirely in SwiftUI. The author ported Shopie (an iOS wishlist app) to macOS and ran into real platform specific issues. The term "Mac-assed app" means following Mac conventions: keyboard shortcuts, proper selection states in inactive windows, context menus that highlight the target item without changing selection, and drag and drop that you can track. The article covers specific problems. Selection in inactive windows works fine. Selected but unfocused items require manually passing isEmphasized through the environment. Context menus are impossible to detect, so you cannot highlight the target item unless you use List (which is hard to customize). Drag and drop went through three API versions but still gives no way to know if a drag completed successfully outside the window. Keyboard navigation with arrow keys stops working when a TextField has focus (Spotlight style behavior is not possible). Toolbar placements are semantic and platform dependent, making precise layout difficult.
Paulo Andrade is the founder of Outer Corner. He has been an iOS and macOS developer using Swift and Objective C for over 20 years. Paulo started building macOS apps before the introduction of the iPhone and began building iOS apps since the original SDK. He also dabbles with web applications using Java, Scala, and Swift.