It's been a while since I messed with it, but MVVM didn't work so well for some kinds of things, which seemed to be why for example selected items property is often not a dependency property of MS supplied widgets (so can't be participate in binding). For example see http://stackoverflow.com/questions/22868445/wpf-binding-sele... (from what I remember this accepted solution also has a subtle bug of double notification (or was it lack of notification on one side?)).
Will my Cocoa app run on Windows, Linux and the web?
(A well-designed web app built with Electron will).
Why should any company that wants their product to be widely available invest in Cocoa developers?
I prefer native Mac apps to cross-platform ones. Serious companies should build native apps and keep UX guidelines of each platform in mind.