Comment by embedding-shape
5 days ago
As someone who is currently building a native macOS application (cross-platform actually), but haven't used macOS as my "main OS" for more than a decade, what's the most important things to make desktop applications "feel native" on macOS?
Excellent documentation in Apple’s Human Interface Guidelines: https://developer.apple.com/design/human-interface-guideline...
Excellent resource for general UX guidelines, some apply to cross-platform apps, some not so much. I was mainly looking for a Apple/macOS-specific guidelines, but I'm guessing they're mixed in there with everything else. Thanks though, very helpful!
The most important thing is probably to use native UI controls, either AppKit or SwiftUI, rather than Qt or other frameworks, even those that espouse the use of native controls. That will get you a lot of things for free, generally.
Don't install invasive "helpers" or login items in weird locations; don't ask for huge amounts of system permissions without an appropriate introductory flow for your application, explaining what it needs to do before trying to install or get permission for something.
Bundle your dependencies appropriately; don't go fetch weird stuff post-install, the application should be designed so that everything is already there in the bundle.
Put application data in the idiomatic locations; ~/Library/Application Support, ~/Library/Preferences, etc.
Carefully consider what keyboard shortcuts your application uses; if you use the Escape key for something, or modifier keys, make sure it does something that makes sense on the platform and doesn't conflict with other shortcuts.
Don't bundle Chromium.
Generally: Respect the user as much as possible. Things should "just work." If there's a situation where it doesn't or something feels "odd", you should do whatever you reasonably can to fix that.
That first part is a no-go, as the top concern for me is to have consistent UI across three platforms, so it won't look native, and that's a conscious choice, even with the tradeoffs.
It's a native cross-platform application, fully compiled, just one binary with a sidebar archive, so Chrome, post-install fetches and other similarly "weird" desktop experiences are already avoided :)
Thanks a lot for the extensive description of your expectations in general though, it's very helpful and I'll put it to good use!
Use the native text objects --- in particular, this will get you emacs style editing keyboard shortcuts
Support drag-drop
Support Services --- bonus points for implementing core functionality as a Service and making it available thus