macOS
Swift
Entwicklung
Performance

Native Mac-Entwicklung: Warum Electron nicht immer ausreicht

3. November 2025
HarborDB Team

Bei HarborDB haben wir früh eine kontroverse Entscheidung getroffen: Wir haben eine native macOS-App mit Swift und SwiftUI gebaut, anstatt ein plattformübergreifendes Framework wie Electron (genutzt von VS Code, Slack (schwerfällig), Discord, etc.) oder Tauri zu verwenden.

In einer Ära, in der "einmal schreiben, überall ausführen" das Standard-Mantra ist, wirkt die Entscheidung für Native wie ein Rückschritt. Hier ist unsere technische und philosophische Verteidigung der wirklich nativen Softwareentwicklung im Jahr 2025.

Das Performance-Argument: Speicher und Threads

Der Electron-Overhead

Jede Electron-App bündelt eine ganze Chromium-Instanz und Node.js.

  • RAM-Nutzung im Leerlauf: ~150 MB für ein "Hello World"-Fenster.
  • Reale RAM-Nutzung: Slack nutzt oft >1GB, nur um Text anzuzeigen.
  • Architektur: Jedes Fenster ist ein separater Renderer-Prozess. Die Kommunikation zwischen Hauptprozess (Node) und Renderer (UI) erfordert Serialisierung (IPC), was bei großen Datenmengen langsam ist.

Der native Vorteil

Eine SwiftUI-App teilt sich die OS-Bibliotheken, die bereits im Speicher geladen sind.

  • RAM-Nutzung im Leerlauf: ~15-30 MB.
  • Daten-Handling: Wir können Speicherpointer direkt von der Datenbank-Engine (C++) an die UI-Ebene (Swift) übergeben, ohne Daten zu kopieren (Zero-Copy).

Konkretes Beispiel: Laden von 100.000 Zeilen in eine Tabelle.

  • Electron: Muss JS-Objekt serialisieren -> IPC -> Deserialisieren im Renderer -> DOM generieren. (Spürbare Latenz).
  • Swift: Lädt Structs in den Speicher -> NSTableView oder List scrollt sofort und rendert nur das Sichtbare.

Tiefe Systemintegration

Eine "anständige Mac-App" zu sein, bedeutet mehr, als nur die Menüleiste oben zu haben. Es bedeutet, die Funktionen zu unterstützen, für die Mac-Nutzer bezahlen.

1. Tastaturkürzel und Fokus

Web-Apps behandeln komplexen Tastaturfokus oft schlecht. Haben Sie schon einmal versucht, aus einem Code-Editor in einer Web-App per Tab herauszuspringen? Das native Responder-System von macOS (NSResponder) handhabt die Event-Propagation vorhersehbar und standardisiert.

2. Das Dateisystem

HarborDB ist ein Datenbank-Tool. Es muss SQLite-Dateien, massive SQL-Dumps und CSV-Exporte lesen. Browser (und damit Electron) sind aus Sicherheitsgründen aggressiv "gesandboxt". Obwohl Electron auf das Dateisystem zugreifen kann, ist die Erfahrung nie so reibungslos wie das native FileCoordinator-Framework, das Folgendes handhabt:

  • Dateisperren (File Locking).
  • Atomare Updates.
  • Koordination mit iCloud Drive.

3. Dienste und Automator

Eine native App exponiert "Dienste". Sie können im Finder mit der rechten Maustaste auf eine .db-Datei klicken und eine benutzerdefinierte Aktion sehen. Sie können die App via AppleScript oder Shortcuts scripten.

"Native Software respektiert den Computer des Nutzers. Sie tut nicht so, als wäre sie das einzige laufende Programm."

Die Entwicklererfahrung (DX): Swift vs. Typescript

Hier wird es subjektiv, aber hören Sie uns an.

TypeScript ist fantastisch. Es ist das beste Werkzeug, um Web-UIs zu bauen. Aber das JavaScript-Ökosystem ist fragil. Es gibt 10.000 Abhängigkeiten in node_modules, komplexe Webpack/Vite/Rollup-Konfigurationen und ständige Umbrüche.

Swift ist stark typisiert, kompiliert und wahnsinnig schnell. Mit SwiftUI ist das Erstellen deklarativer UIs so schnell wie mit React, aber mit:

  • Echter Typsicherheit zur Kompilierzeit (kein any).
  • Direkten Bindings zu C++-APIs (via Objective-C++ oder Swift C Interop).
  • Unglaublichen Profiling-Tools (Xcode Instruments), die Ihnen genau zeigen, welche Codezeile Speicher allokiert oder den Hauptthread blockiert.

Warum nutzt nicht jeder Native?

Wenn Native so toll ist, warum gewinnt Electron?

  1. Plattformübergreifend: Das ist der offensichtliche Grund.
  2. Recruiting: Es gibt 100 React-Entwickler für jeden Swift/macOS-Entwickler.
  3. Iterationsgeschwindigkeit: Ein Web-Update zu pushen ist sofortig; ein natives App-Update zu pushen erfordert App Store Review oder Sparkle-Updates.

Unsere Wette

Wir wetten darauf, dass es einen Markt für handwerkliche Softwarequalität gibt. Professionelle Nutzer sind müde von langsamen Apps, die sich nicht wie Apps anfühlen. Sie sind müde davon, dass ihr Akku leergesaugt wird, weil ihre Chat-App Krypto schürft (Scherz, aber knapp).

HarborDB ist schnell. Es öffnet in 200ms. Es scrollt 1 Million Zeilen mit 120 FPS. Es respektiert Ihre Tastaturkürzel.

Es mag altmodisch sein, aber für uns ist es die Zukunft der professionellen Produktivität.