Pixel Envy

Written by Nick Heer.

1Password Goes Electron

Michael Fey of 1Password:

We could support as many versions of macOS as we wanted using Apple’s AppKit framework, but that meant adding another frontend toolkit to the mix. We could go all in on SwiftUI, but that meant reducing the number of operating system versions we could support. We could go all in on the same approach we were using for Linux and Windows, but that made it very difficult to create an app that looked and felt at home on macOS.

Ultimately we decided for a two-prong approach. We would build two Mac apps. One written in SwiftUI that targeted the latest operating systems and another using web UI that allowed us to cover older OSes.

[…]

Ultimately we made the painful decision to stop work on the SwiftUI Mac app and focus our SwiftUI efforts on iOS, allowing the Electron app to cover all of our supported Mac operating systems. We could have started over with AppKit as the UI toolkit for our Mac app, but this would have put us significantly behind schedule and also would have added another frontend toolkit to maintain over the long term. This decision came with a big challenge, however, as we knew we still needed to deliver a top-tier user experience on macOS.

Even as someone who does not currently use 1Password, I first found myself irked by the rationale laid out in Fey’s post. As much as possible, customers should not see the impact of financial decisions on a business. When a restaurant is impacted by rising food and labour costs, it can make choices about how to compensate: it can raise prices, reduce the ingredients that go into each dish, or eliminate items. But when I sit down to my meal, I should not feel like something is incomplete or missing.

As I thought more, I realized that being annoyed at Fey’s arguments was only scratching the surface. Yet another Electron app in the lives of many Mac users should be seen as a reflection of the great demand placed on developers by cross-platform availability, and the poor quality of tools to make that happen. 1Password is not a small company — it has nearly 500 employees — and the history of its product indicates that it cares deeply about a great Mac experience. Years ago, when I was a 1Password user, I remember it being among my favourite apps to use. Who knew that something as boring as a password manager could be fun and beautiful? If a company like 1Password feels like the Mac can share an Electron app with Windows and Linux, that seems like a concerning state of affairs.

Jason Snell, Six Colors:

I have to read this as a (gently stated) indictment of the current state of SwiftUI. 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.

Rich Siegel, in a lengthy Twitter thread about cross-platform frameworks and app efficiency (I have merged several successive tweets and, with editorial discretion, converted these thoughts into paragraphs to make everything easier to read):

Electron is an *extremely* effective way for developers to rapidly bring up an application. It’s a fully functional application framework. It’s as close an expression of the original ideal of “write once, run anywhere” as I can think of. (That term first came out of Sun’s marketing for Java. A lot of us made fun of it back then, mostly because it wasn’t true at the time.) And of course with Electron, you get a common UI/UX for all of your target platforms, deploy everywhere make use of existing Web design and development resources, etc, etc.

But. All of those upsides come at the cost of everything I’ve just finished laying out. And things start to get really sticky, because if you take a survey of the Electron products that have become entrenched in our daily lives, they almost all come from companies that have specific BUSINESS goals for developing them that way.

Siegel’s thread is not specifically about 1Password and, if anything, Snell’s post uses 1Password’s announcement to frame some of the issues facing developers on MacOS. 1Password is merely a symptom of a greater set of issues; Electron is a weak patch on a leaking tire.

I know that Electron has its defenders who might write to me and tell me that I have always been wrong in disliking it and that I should try using better apps like Microsoft’s Visual Studio Code. But I have tried VS Code, and if this is the best that Electron can offer, I do not see why I should retract my criticisms. It is this decade’s Java.

The fact of the matter is that there has never been a good cross-platform framework — not when developers only had to worry about Windows and Mac OS X, and not now when they are trying to cover at least twice as many operating systems. Apple’s attempts — SwiftUI and Catalyst, the latter of which 1Password’s Fey does not mention — have not corrected that problem, and they only cover half of the platforms developers commonly support. When even premiere Mac developers think Electron is the best option they have, it makes me worried.