PWA, Swift und Kotlin oder Expo: Die Wahl einer mobilen App-Architektur
Vergleichen Sie PWA-Apps, vollständig native Swift- und Kotlin-Apps sowie Expo hinsichtlich Codebasis, Marktpresenz, Leistung, Zugriff auf Hardware, Veröffentlichungsgeschwindigkeit und Kosten, bevor Sie sich entscheiden.
Quellen: PWA vs Native vs Expo: Pros, Cons, and How to Choose the Right Architecture
Die Architektur, die man für ein mobiles Produkt wählt, lässt sich später nur schwer ändern. Wenn die Wahl falsch ist, geht das nächste Jahr darin drauf, mit der Plattform zu kämpfen anstatt neue Funktionen bereitzustellen: Abhängigkeitskonflikte nach einem Framework-Upgrade, fehlende Hardware-APIs oder zwei native Entwicklerteams, die auseinanderdriften. Diese Anleitung vergleicht die drei gängigsten Ausgangspunkte – Progressive Web Apps, vollständig native Apps, die in Swift und Kotlin geschrieben werden, sowie Expo auf Basis von React Native – und liefert konkrete Kriterien zur Auswahl zwischen ihnen, egal ob man ein MVP entwickelt oder die nächste Phase einer bestehenden App plant.
Vergleich der drei Optionen
Bevor wir uns jede Option im Detail ansehen, hier ein Überblick darüber, wie sie in den Aspekten voneinander abweichen, die in der Regel über das Endergebnis entscheiden.
Codebasis
- PWA: eine einzige Web-Codebasis, die mit HTML, CSS und JavaScript erstellt wird.
Präsenz in den App Stores
- PWA: existiert im Web. Eine Eintragung im Store ist optional und erfordert Wrapper oder plattformspezifische Workarounds.
- Nativ und Expo: werden direkt über den Apple App Store und Google Play vertrieben.
Leistung
- Nativ: das Maximum. Flüssige Animationen bei der vollen Bildwiederholrate des Displays, bis zu 120 fps auf leistungsstarken Bildschirmen, ohne dass eine Abstraktionsschicht dazwischenkommt.
- Expo: Für die meisten Schnittstellen nahe am Native-Verhalten. React Native rendernt echte native Ansichten, und seine neue Architektur ersetzt die alte asynchrone Brücke durch direkte JavaScript-zu-Native-Aufrufe über JSI, wodurch ein seit Langem bestehendes Engpassproblem beseitigt wurde.
- PWA: Eingeschränkt durch das, was der Browsermotor zulässt – insbesondere bei aufwendigen Animationen und Hintergrundaufgaben.
Zugriff auf Hardware
- Native: Alles, was die Plattform bereitstellt.
- Expo: Umfassende Abdeckung durch das Expo SDK, ergänzt bei Bedarf durch Konfigurations-Plugins und benutzerdefinierte native Module.
- PWA: Die im Web verfügbaren Kernfunktionen wie Kamera und Geolokalisierung, wobei es auf iOS erhebliche Lücken gibt.
Veröffentlichungsgeschwindigkeit
- PWA: Änderungen werden sofort nach der Veröffentlichung live, ohne Prüfung durch einen Store.
- Expo: Over-the-Air (OTA)-Aktualisierungen können JavaScript-Änderungen sowie Änderungen an Ressourcen sofort bereitstellen, während Änderungen am nativen Code weiterhin der normalen Überprüfung im Store unterzogen werden.
- Native: Jede Veröffentlichung durchläuft den Überprüfungsprozess im Store.
Kosten
- PWA: In der Regel am günstigsten in der Entwicklung und Wartung.
- Expo: Eine mäßige Investition für ein Team.
- Native: Am teuersten, da in der Regel zwei Codebasen für die jeweiligen Plattformen zwei spezialisierte Teams erfordern.
Progressive Web Apps: Der webbasierte Ansatz
Eine PWA ist eine Webanwendung, die Funktionen wie einen Service Worker und ein Web-App-Manifest nutzt, um sich mehr wie eine installierte App zu verhalten: Sie kann auf dem Startbildschirm hinzugefügt werden, in einem eigenen Fenster gestartet werden und auch offline weiterarbeiten. Wenn das Offline-Verhalten für Ihr Produkt von zentraler Bedeutung ist, zeigt der Leitfaden des Blogs zu Offline-Unterstützung mit Service Workers die dahinterstehenden Mechanismen.
Vorteile. Es gibt keinen App-Store, der zwischen Ihnen und Ihren Nutzern steht. Jeder, der die URL kennt, kann die App nutzen und sie auf seinem Startbildschirm hinzufügen. Aktualisierungen werden bei der nächsten Ladeung allen Nutzern zugestellt, und der Inhalt kann von Suchmaschinen indiziert werden, was zu organischen Besuchen führt – etwas, das Store-Seiten nur selten bieten können.
Beschränkungen. Apple beschränkt PWA auf iOS weiterhin. Web Push ist nur für Apps verfügbar, die auf dem Startbildschirm hinzugefügt wurden, und die Ausführung im Hintergrund ist stark eingeschränkt. Web Bluetooth sowie ähnliche Hardware-APIs werden in Safari überhaupt nicht unterstützt. Wenn das Produkt auf Bluetooth, kontinuierlicher Hintergrundverfolgung oder tiefer Integration in das Gerät angewiesen ist, wird eine PWA schnell an ihre Grenzen stoßen. Die Richtlinien der Plattform haben sich bereits mehrfach geändert, daher sollten Sie den aktuellen Stand für Ihre Ziel-iOS-Versionen überprüfen.
Natives Swift und Kotlin: maximale Kontrolle
Nativ zu entwickeln bedeutet, zwei Anwendungen zu erstellen und zu warten: eine in Swift für iOS und eine in Kotlin für Android.
Stärken. Nichts wird abstrahiert, sodass Leistung und Genauigkeit so gut sind wie die Plattform es zulässt. Neue APIs von Apple und Google stehen bereits am Tag ihrer Veröffentlichung zur Verfügung, ohne dass man auf ein Framework warten muss, das sie umhüllt. Dies ist die natürliche Wahl für anspruchsvolle Grafiken, komplexe AR- oder VR-Anwendungen sowie aufwändige Hintergrundverarbeitung.
Beschränkungen. Die Overhead-Kosten sind erheblich. Zwei Codebasen verdoppeln in etwa die Entwicklung- und Testanstrengungen und erfordern in der Regel zwei Teams mit unterschiedlichen Fähigkeiten. Jede Funktion muss zweimal entwickelt und synchron gehalten werden, und jede Veröffentlichung, auch bei kleinen Fehlerbehebungen, muss auf eine Überprüfung im Store warten.
Expo: Eine Codebasis, native Ergebnisse
Expo ist ein Open-Source-Framework und Toolchain, das auf React Native basiert. Es verbirgt einen Großteil der Komplexität bei der Erstellung nativer Anwendungen für iOS und Android, sodass eine einzige JavaScript- oder TypeScript-Codebasis echte native Apps für beide Plattformen erstellen kann.
Vorteile. Die Entwicklung verläuft schnell. Expo Application Services (EAS) erstellt die nativen Binärdateien in der Cloud, wodurch im Alltag selten das Öffnen von Xcode oder Android Studio erforderlich ist. EAS Update liefert OTA-Updates direkt an installierte Apps. Beachten Sie, dass OTA-Updates JavaScript-Code und Assets ändern können, aber nicht den nativen Code – außerdem bestimmen weiterhin die Store-Richtlinien, was durch ein Update geändert werden darf; eine neue native Abhängigkeit erfordert einen neuen Store-Build.
Beschränkungen. Config-Plugins sowie die Expo Modules API haben es ermöglicht, benutzerdefinierten Native-Code viel leichter zu nutzen als früher, und Entwicklungsversionen erlauben es, beliebige Native-Bibliotheken einzubinden – nicht nur diejenigen, die in Expo Go enthalten sind. Dennoch erfordern Apps, die sehr tiefliegende Hardware-Treiber oder komplexe benutzerdefinierte C++-Code benötigen, weiterhin echte Native-Entwicklung, und das Team braucht jemanden, der damit umgehen kann.
Für einen umfassenderen Überblick über plattformübergreifende Optionen jenseits von Expo, einschließlich Flutter und Kotlin Multiplatform, siehe die Blogübersicht zu plattformübergreifenden mobilen Frameworks.
Die richtige Architektur wählen
Passen Sie die Architektur dem Produkt an und nicht dem bevorzugten Tool des Teams:
- Wählen Sie eine PWA, wenn das Budget begrenzt ist, die Sichtbarkeit durch Suchmaschinen wichtig ist und das Produkt hauptsächlich aus Inhalten oder Formularen besteht: ein Online-Shop, eine Nachrichtenseite oder ein SaaS-Dashboard. Es handelt sich dabei auch um eine sinnvolle Methode, die Nachfrage zu überprüfen, bevor man sich auf das Veröffentlichen von Apps im Store einlässt.
- Wählen Sie Expo für Start-ups, MVPs oder Produktions-Apps, die schnell sowohl im App Store als auch im Google Play veröffentlicht werden müssen – und zwar mit einem einzigen Team. Dies umfasst die meisten Unternehmens- und Verbraucher-Apps.
- Wählen Sie eine native App für High-End-Spiele, hardwareintensive Produkte wie Fitnessgeräte, die kontinuierlich über Bluetooth synchronisiert werden, oder jede App, bei der 120 fps schnelle Benutzeroberflächen sowie ein Risiko ohne Abstraktion echte Anforderungen sind.
Diese Optionen sind keine dauerhaften Isolationsstrukturen. Eine PWA kann neben einer Store-App existieren, und eine Expo-App kann native Module in Swift und Kotlin enthalten – daher steht oft ein hybrider Ansatz zur Verfügung, wenn ein Teil des Produkts die Standardlösungen übersteigt.
Zusammenfassung
Im Allgemeinen ist keine der drei Optionen besser. Die richtige Entscheidung hängt davon ab, was das Produkt auf dem Gerät leisten muss, wie schnell Sie die Nutzer erreichen möchten und wie viele Entwickler Sie einsetzen können. Beantworten Sie diese drei Fragen vor dem Schreiben von Code: Die Folgen einer falschen Wahl zeigen sich später in Nachbesserungen und Plattformworkarounds, während die richtige Entscheidung es dem Team ermöglicht, seine Zeit auf Funktionen zu konzentrieren, die den Nutzern auffallen.