1
0 Comments

Switched to a Native Application

Whenever I start working on a new application, I jump back into the tools I am most familiar with, which are React, Typescript, and everything web-related.

But if you want to create an application that stays always visible on your user's screen, you need to distribute a native application. Something that will run directly on your user machine, not through a web browser.

This is why Electron was an obvious move at the time. It was easy to move my web-based workflows to a "regular" macOS application.

But Electron is heavy, it's hard to publish on the app store, and it's brittle in my experience. It's hard to keep your build functional with so many layers of abstraction. And Apple, let's be honest, is actively pushing back on these sorts of tech.

My experience with Electron:

  • A few hours building an application in Electron,
  • 3 days of trying to release it on the App Store, unsuccessfully -- brittle notarization, private APIs used by electron are rejected, etc.
  • 1 day trying to upgrade electron everytime I go back to the repo.

I moved to a Swift and SwiftUI application. It took some time to get familiar with the tooling (thanks, ChatGPT), but the application is live again as a real, fast, lean, truly native macOS application. It's 100 times more efficient now.

My lesson is:

  • If you are building a simple app, without any sort of interop with web-based services.
  • If you don't care about multiplatform or reusing components built by a dozen different teams

The time you'll spend learning how to use Apple's native tooling is smaller than what you'll lose messing around with Electron, Notarization, Building, Packaging, etc.

, Founder of Icon for TickingFocus
TickingFocus
on February 27, 2024