All posts

Native Mac Apps vs Electron: Why It Matters

Understanding Electron, why it exists, and the real trade-offs vs native development. Memory usage, battery drain, launch speed, and OS integration. Why OpenMark chose native SwiftUI.

Native Mac Apps vs Electron: Why It Matters

If you use a Mac, you've probably noticed something over the last decade: more and more apps feel slightly off. Slow to launch. Sluggish to scroll. Drains your battery fast. Often, the culprit is Electron.

Electron is not evil. It's a pragmatic solution to a real problem. But it comes with costs that most users don't understand. And there's a better way—native development—that more Mac developers are rediscovering.


What Is Electron?

Electron is a framework that lets developers build desktop apps using web technologies: JavaScript, HTML, and CSS. Write once (in web code), run everywhere (Windows, Mac, Linux).

Think of it as a browser without the browser UI. Each Electron app bundles its own copy of Chromium. You run web code on your desktop.

Popular Electron apps:

  • VS Code — Incredibly powerful, industry-standard editor
  • Discord — Chat app
  • Slack — Messaging platform
  • Figma — Design tool

These are genuinely great apps. Electron's flexibility enabled them.


Why Electron Was Invented

Electron solved a problem: hiring. Building a native macOS app requires learning Swift, Xcode, and Apple's frameworks. Building a web app requires JavaScript, HTML, and CSS. If you know web development, native Mac development is a different world.

Electron lets web developers ship desktop apps without learning native tools. It democratized desktop app development. That's genuinely valuable.

The problem is that web technology wasn't designed for desktop apps. It has overhead.


The Cost of Electron: Memory

Every Electron app bundles Chromium. Chromium is huge—around 150MB. That's before your app code.

Compare:

  • VS Code (Electron): ~400MB
  • OpenMark (native macOS): ~3MB
  • Slack (Electron): ~500MB
  • Telegram (native macOS): ~20MB

If you have five Electron apps open, you're running five copies of Chromium. That's 750MB+ just for the browser engines, before your actual content loads.

A MacBook Air with 8GB of RAM feels sluggish with multiple Electron apps. A Mac Mini feels fine with multiple native apps.

Memory usage matters because:

  1. Cost — More RAM needed = more expensive hardware
  2. Speed — When RAM fills up, your system uses disk (much slower)
  3. Battery — RAM access uses power

Launch Speed

Open Electron app = start Chromium + load your app code. This takes time.

VS Code typically takes 2-5 seconds to launch on a modern Mac. Slack takes 3-10 seconds depending on system state.

A native app like OpenMark launches in 0.3 seconds. It's so fast you don't notice the delay.

For a text editor or note-taking app, launch speed matters. You want to open the app, immediately see your notes, and start working. No waiting.


Battery Drain

Electron apps use more power. Running a browser engine uses CPU and GPU. Continuous event loops, rendering, memory management—all drain battery faster than lean native code.

On an M1 or M2 Mac, this is less noticeable (batteries are huge). On a 12-inch MacBook Air, or if you're traveling, it becomes significant.

Native apps use less power because they're built for the specific hardware. They use the OS's built-in components rather than bundling everything.


OS Integration

macOS has conventions: keyboard shortcuts, menu structure, drag-and-drop, notifications, Spotlight search, Share menu, etc.

Native apps integrate seamlessly. Electron apps are often one step removed.

Examples:

  • System keyboard shortcuts — A native app respects Cmd+Tab switching, Cmd+, for preferences. Electron apps sometimes intercept these or render them slightly wrong.
  • File system — Native apps use macOS file pickers and can integrate with iCloud Drive. Electron apps often reimplement these (imperfectly).
  • Visual polish — Native apps feel like macOS. Buttons, spacing, animations follow system guidelines. Electron apps look and feel slightly web-like.

This matters to long-term usability. A native app feels like it belongs on your Mac.


When Electron Makes Sense

Electron is genuinely the right choice in some cases:

Cross-platform required: If you need Windows, Mac, and Linux from a single codebase, Electron is reasonable. VS Code is a perfect example—worth the overhead because it runs everywhere.

Team expertise: If your team knows JavaScript but not Swift, Electron lets you ship quickly.

Rapid iteration: Web technologies are flexible. Electron lets you experiment and deploy fast.

Complex UI: Electron's web foundation makes certain UIs easier (heavy animations, custom widgets).

For these use cases, Electron's trade-offs are worth it.


Why OpenMark Chose Native

OpenMark is a markdown editor for macOS. It's not cross-platform. It's not built by web developers. It's built specifically for the Mac.

This means:

Performance: Native Swift code is 100-1000x faster than JavaScript for computational work. Markdown rendering is instant.

Responsiveness: Every interaction is snappy. No event loop delays. No garbage collection pauses.

Battery life: OpenMark uses 10-20x less power than an Electron editor for the same work.

OS integration: Full support for macOS features: dark mode, system fonts, keyboard shortcuts, accessibility, Spotlight.

Size: OpenMark is 3MB. Download it in seconds. Install takes no disk space.

Privacy: No bundled browser engine. No telemetry. No surprise network requests.

Native development requires learning Swift and macOS frameworks, but for a Mac-focused app, the result is dramatically better.


The Broader Trend

More Mac developers are choosing native development:

  • Xcode improvements make native development more accessible
  • SwiftUI is a modern, expressive UI framework (finally!)
  • M1/M2 Macs are so fast that performance differences matter less for web apps, but matter more for showing off the hardware

At the same time, some Electron apps are being rewritten in native code:

  • Figma is exploring native frontends (still mostly Electron, but the direction is clear)
  • Discord has investigated moving off Electron (citing performance issues)
  • Visual Studio Code (Microsoft) maintains the Electron version, but acknowledges the trade-offs

It's not that Electron is dying. It's that developers are becoming more honest about its costs.


The Real Question

The choice isn't "Electron vs native" in the abstract. It's "which trade-offs are right for this specific app?"

Choose Electron if:

  • You need cross-platform support
  • Your team is web-first
  • The overhead doesn't hurt your specific use case

Choose native if:

  • You're building for one platform
  • Performance, battery, and polish matter
  • You want a smaller, faster, more integrated app

For a focused, single-platform tool like a Mac markdown editor, native is almost always the right choice.


Conclusion

Native apps are making a comeback because computers are finally fast enough that simplicity matters more than abstraction layers. An app that uses 3MB instead of 400MB, launches in 0.3 seconds instead of 3 seconds, and integrates with your OS instead of fighting it—that's worth learning new tools.

OpenMark is native because your Mac deserves a focused, fast, respectful app. No bloat. No browser engine. Just markdown writing and a beautiful interface.

If you've been using Electron apps and wondering why your Mac feels slow, try a native app. You'll feel the difference immediately.


Experience native performance. Download OpenMark — beautifully fast, native markdown editor for macOS.

Related: Why we chose local-first software and why developers are leaving cloud tools for plain text.