Not important enough: 1Password abandons its native Mac app

Jason Snell:

AgileBits chose to build the new version of its Mac app using Electron, a system based on web technologies that’s used by numerous cross-platform apps, including Slack, Skype, and Discord.

And:

Electron apps have a reputation for being slow, eating up a lot of system memory, and—perhaps most offensively—failing to behave like proper, “native” apps on whatever platform they operate.

And:

The root problem is this: 1Password, originally a Mac-forward software developer, has simply decided that the Mac isn’t important enough.

And:

Fey’s post clearly spells out AgileBits’s priorities. Android and iOS apps are built with native platform frameworks in order to create the best app experience possible on mobile. For iOS, AgileBits decided to use Apple’s new SwiftUI framework rather than the venerable UIKit, in order to skate “to where the puck was going.” Their plan was to use SwiftUI on the Mac, too. In doing so, AgileBits was buying into the vision Apple has for SwiftUI as a tool to build interfaces across all of Apple’s platforms. Unfortunately, it seems that SwiftUI didn’t measure up on the Mac:

And:

AgileBits was willing to put in the extra work for iOS, because it’s an important platform and SwiftUI is clearly the future there. But implementing it on the Mac required a lot of duplicate work—and what’s worse, SwiftUI apps aren’t compatible with older versions of macOS. AgileBits was planning on covering the older versions with an Electron version, but once it decided the SwiftUI implementation for the Mac was too much work, it pulled the plug—and now plans to ship an Electron version to all Mac users.

In a nutshell, Jason is pointing out both a weakness in SwiftUI as the one, true mechanism for building an app that serves iOS and the Mac, and the inherent problem of Electron as a cross-platform solution.

We have seen the holy grail of cross platform frameworks come and go over time. They never deliver the same experience as a platform optimized app. Never.

I think the optimization argument is really well expressed in this thread from BBEdit creator Rich Siegel. Building a cross-platform app requires a tradeoff: Either you build an optimized, efficient experience tuned for each platform, or you sacrifice the great for the good-enough.