DEV Community

Henry Godnick
Henry Godnick

Posted on

Why I Build Native macOS Apps Instead of Electron — A Solo Dev's Honest Take

Every time I mention I build native macOS apps, someone asks: "Why not just use Electron?"

Fair question. Electron is proven. VS Code runs on it. Slack runs on it. Discord runs on it. The ecosystem is massive, the hiring pool is deep, and you get cross-platform for free.

So why would a solo developer voluntarily choose Swift and AppKit over wrapping a web app in Chromium?

Here's my honest answer after shipping multiple native Mac apps.

The Performance Argument Is Real (But Not Why You Think)

Yes, native apps use less RAM. My menu bar app TokenBar idles at around 15MB. An equivalent Electron app would sit at 80-150MB minimum just for the runtime.

But here's the thing — most users don't care about RAM numbers. What they do notice is responsiveness. Native apps feel instant. Click something, it happens. No layout reflow, no virtual DOM reconciliation, no garbage collection pauses.

For a menu bar utility that you glance at dozens of times a day, that snappiness isn't a luxury. It's the whole product.

Distribution Is Actually Easier (Hear Me Out)

"But the Mac App Store takes 30%!" Sure. But consider what you get:

  • Automatic updates — no building your own update server
  • Code signing handled — no wrestling with notarization scripts
  • Payment processing — no Stripe integration, no receipt validation
  • Trust signal — users trust App Store apps more than random .dmg downloads

For a solo dev with no backend infrastructure, that's months of work you skip. I ship Monk Mode — a focus tool that blocks feeds at the content level — through the App Store, and the overhead is basically zero.

The Real Cost: Platform Lock-in

Let's be honest about the downside. Going native means:

  • No Windows version without a full rewrite
  • SwiftUI is still maturing — you'll hit weird bugs
  • Smaller community — Stack Overflow answers are sparse compared to React
  • Apple's review process — sometimes painful, occasionally kafkaesque

I've lost days to App Store rejections over trivial metadata issues. That's real time that Electron devs never spend.

When Native Actually Makes Sense

Native isn't always the right call. Here's when I think it is:

  1. Menu bar / system-level apps — Electron can't match the OS integration
  2. Apps that run all day — memory and CPU overhead compounds
  3. Single-platform focus — if your users are all on Mac anyway
  4. Apps where "feel" matters — animations, transitions, system conventions

If you're building a cross-platform SaaS dashboard, use Electron or Tauri. Seriously.

The Solo Dev Angle

Here's what nobody talks about: as a solo dev, going native forces constraints. You can't bolt on features endlessly because every feature costs more in Swift than in React.

That constraint is a gift. It forces you to ship small, focused tools that do one thing well. My apps are intentionally minimal — and users actually prefer that.

Bottom Line

Native macOS development is slower to start, harder to learn, and limits your market. But the apps you ship feel better, run leaner, and integrate deeper with the OS.

For me, as someone shipping solo, that tradeoff is worth it. Your mileage may vary.


What's your take — native vs Electron for desktop apps? I'd genuinely love to hear from people who've tried both.

Top comments (0)