Von Web zu Native – Wann lohnt sich eine iOS-App statt PWA? (2026)

~16 Min. Lesezeit · Veröffentlicht am
Vor einem halben Jahr hätte ich bei der Frage „Brauchen wir eine native App?" reflexartig geantwortet: „Versuch's erst mit einer PWA." Das war meine sichere Zone – Web-Technologien, die ich kenne, beherrsche und vertrete. Dann habe ich angefangen, iOS-Apps mit Swift und SwiftUI zu entwickeln. Nicht weil PWAs plötzlich schlecht wären, sondern weil ich verstehen wollte, wo die Grenzen wirklich liegen.
Dieser Artikel ist das Ergebnis dieser Erfahrung: Ein ehrlicher technischer Vergleich aus der Perspektive eines Webentwicklers, der beide Welten kennt – ohne Dogmen, ohne Fanboy-Rhetorik, mit konkreten Entscheidungskriterien.
PWA vs. Native – Die technischen Fakten
Progressive Web Apps sind Websites, die sich wie Apps anfühlen: installierbar auf dem Homescreen, offline-fähig durch Service Worker, Push-Benachrichtigungen. Technisch läuft alles im Browser – HTML, CSS, JavaScript. Beispiele: Twitter Lite, Starbucks, Spotify Web Player.
Der Vergleich zwischen PWA und nativer iOS-App läuft oft auf zwei vereinfachte Aussagen hinaus: „PWAs sind günstiger" und „Native Apps sind besser". Beides stimmt – und beides ist falsch, wenn man nicht genauer hinsieht.
| Kriterium | Progressive Web App | Native iOS App |
|---|---|---|
| Offline-Funktionalität | Service Worker cacht Ressourcen und API-Responses. Gut für Content-First-Apps, limitiert bei komplexer Datenverarbeitung. | Core Data, Realm oder SQLite für vollständige lokale Datenbanken. Offline-First ist Standard, nicht Kompromiss. |
| Performance | JavaScript-Bundle muss geladen und geparst werden. Bei guter Optimierung schnell, aber immer Browser-Overhead. | Compiled Swift-Code läuft direkt auf der CPU. Spürbar schneller bei komplexen Animationen, großen Datenmengen, rechenintensiven Tasks. |
| Hardware-Zugriff | Camera API, Geolocation, Accelerometer vorhanden. Aber: NFC, Bluetooth, Health-Daten, Face ID, Background Tasks fehlen oder sind stark eingeschränkt. | Vollzugriff auf iOS SDK: HealthKit, ARKit, Core ML, Background Processing, Bluetooth Low Energy, NFC, Face ID/Touch ID. |
| Push-Notifications | Auf iOS lange Zeit gar nicht, seit iOS 16.4 mit Einschränkungen möglich. User muss PWA zum Homescreen hinzufügen UND Notifications erlauben. | Vollwertige Push-Notifications mit Rich Media, Actions, Gruppierung, Background Updates. Standard iOS-Notification-System. |
| App Store Präsenz | Keine Listung im App Store. Discovery nur über Web-Suche oder direkte Links. Kein App Store SEO. | Listung im App Store mit Bewertungen, Screenshots, Beschreibung. Discovery durch App Store Suche und Featured-Platzierungen möglich. |
| Updates | Instant: Deploy → Live. Kein Review-Prozess, keine Wartezeit. User haben immer die neuste Version. | App Store Review (1-3 Tage), User muss Update installieren. Versionierung erforderlich, alte Versionen bleiben im Umlauf. |
| Development-Workflow | Standard Web-Tools: VS Code, Browser DevTools, Chrome DevTools, Hot Reload. Vertraute Umgebung für Webentwickler. | Xcode (nur macOS), Swift, SwiftUI, Simulator. Neue IDE, neue Sprache, neues Ökosystem für Webentwickler. |
Code-Beispiel: Offline-Handling
Der Unterschied wird bei Offline-Funktionalität konkret:
// PWA: Service Worker für Offline-Cache
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request)
.then(response => {
// Cached response oder Netzwerk-Request
return response || fetch(event.request);
})
.catch(() => {
// Fallback bei fehlender Verbindung
return caches.match('/offline.html');
})
);
});
// Daten-Sync bei Rückkehr online
self.addEventListener('sync', (event) => {
if (event.tag === 'sync-data') {
event.waitUntil(syncDataToServer());
}
}); // iOS Native: Core Data für Offline-Persistenz
import CoreData
class DataManager {
let container = NSPersistentContainer(name: "MyApp")
init() {
container.loadPersistentStores { description, error in
if let error = error {
print("Core Data failed: \(error)")
}
}
}
func saveEntry(_ content: String) {
let context = container.viewContext
let entry = Entry(context: context)
entry.content = content
entry.timestamp = Date()
try? context.save() // Sofort lokal gespeichert
syncToServerWhenOnline(entry) // Background-Sync
}
} Bei der PWA musst du manuell Caching-Strategien definieren und Sync-Mechanismen bauen. Bei iOS ist Offline-Persistenz Teil der Platform – du nutzt einfach Core Data und das System handled Sync, Merge-Konflikte und Background-Updates.
Wann PWA ausreicht – 5 klare Szenarien
Progressive Web Apps sind keine „Notlösung für kleines Budget". Sie sind die richtige Wahl für bestimmte Projekttypen – und oft sogar die bessere.
Blog, Magazin, Dokumentation, Portfolio. Wenn deine App primär Inhalte anzeigt und keine komplexe Interaktion braucht, ist PWA ideal. Beispiel: Ein Rezept-Blog mit Suchfunktion und Offline-Zugriff auf gespeicherte Rezepte.
To-Do-Listen, Notiz-Apps, Formulare, CRM-Basics. Wenn deine App hauptsächlich Daten erfasst, anzeigt und synchronisiert, ohne Hardware-Zugriff zu brauchen, reicht PWA vollkommen.
Wenn du eine Idee testen willst und schnelles Feedback brauchst: PWA baust du in 1-3 Wochen, native iOS braucht 4-8 Wochen minimum. Zeit bis zum ersten User-Feedback ist entscheidend.
Eine PWA läuft auf iOS, Android, Desktop – überall. Ein nativer iOS-Code läuft nur auf iOS. Wenn deine Zielgruppe breiter ist, spart PWA massiv Entwicklungszeit und Wartung.
Eine professionelle PWA kostet 3.000-10.000 €. Eine native iOS-App startet bei 15.000 € und geht schnell Richtung 40.000 €+. Wenn Budget ein harter Constraint ist, ist PWA oft die einzige realistische Option.
Mein Kalender-Projekt AffenHub ist eine PWA – bewusst. Es zeigt Events, synchronisiert ICS-Feeds, läuft offline mit gecachten Daten. Ich brauche keine Push-Notifications (Events sind im Kalender), keine Hardware-Features, keinen App Store. Die PWA läuft auf allen Geräten, Updates sind instant live, Wartung minimal. Für diesen Use-Case wäre eine native App Overhead ohne Mehrwert gewesen.
Wann Native iOS sinnvoll ist – Die harten Kriterien
Es gibt Projekte, bei denen PWA technisch an ihre Grenzen stößt. Nicht weil PWA „schlecht" wäre, sondern weil bestimmte Features nur in nativen Apps möglich sind.
| Feature / Use Case | PWA Limitierung | Native iOS Vorteil |
|---|---|---|
| Kamera-Integration (AR, Scanner) | Basic Camera API vorhanden, aber kein AR, kein Zugriff auf RAW, keine Fine-Tuning-Optionen. | ARKit für Augmented Reality, AVFoundation für volle Kamera-Kontrolle, Vision Framework für ML-basierte Bilderkennung. |
| Background-Prozesse | Service Worker läuft nur bei aktiver Website-Nutzung. Keine echten Background-Tasks möglich. | Background Fetch, Background Processing, Silent Push für Daten-Updates ohne App-Öffnung. |
| Health & Fitness-Daten | Kein Zugriff auf Health-App. Keine Integration mit Apple Watch, kein HealthKit. | HealthKit für Herzfrequenz, Schritte, Schlaf, Ernährung. Apple Watch Companion App möglich. |
| Apple Pay Integration | Payment Request API für Web-Payments vorhanden, aber limitierter Checkout-Flow. | Native Apple Pay mit Face ID/Touch ID, In-App-Käufe, Subscriptions mit App Store Billing. |
| Offline-First (komplex) | Möglich, aber aufwändig. Sync-Konflikte musst du manuell lösen, IndexedDB ist nicht trivial. | Core Data mit iCloud Sync, CloudKit für Echtzeit-Synchronisation, NSPersistentCloudKitContainer für Merge-Strategien. |
| NFC & Bluetooth | Kein NFC-Zugriff. Web Bluetooth API experimentell und sehr limitiert. | Core NFC für Lesen/Schreiben von NFC-Tags, Core Bluetooth für BLE-Verbindungen zu Peripherals. |
| Face ID / Touch ID | Web Authentication API für Login, aber kein systemweiter Biometric-Zugriff. | Local Authentication Framework für biometrische App-Entsperrung, Secure Enclave für Keys. |
Use Cases wo Native iOS gewinnt
Tracking von Workouts, Integration mit Apple Health, Apple Watch Support. Beispiel: Eine Lauf-App die Herzfrequenz, Pace und Routen aufzeichnet und mit HealthKit synchronisiert.
Virtual Try-On für E-Commerce, AR-Spiele, Raumplanung, Bildung. ARKit ist eine der stärksten iOS-Features und in PWA nicht nutzbar.
Field-Service-Apps für Techniker, Verkaufs-Apps für Außendienst. Wenn die App stundenlang offline arbeiten muss mit komplexen Daten-Sync-Strategien.
Wenn In-App-Käufe, Abos oder nahtlose Payment-Flows zentral sind. Native Apple Pay ist deutlich reibungsloser als Web-Payments.
Apps die mit Bluetooth-Geräten kommunizieren (Smartwatches, Fitness-Tracker, Home-Automation, medizinische Geräte).
Apps die in Mobile Device Management integriert werden müssen, mit Unternehmens-Policies, VPN-Integration, Certificate-Based Authentication.
Die Kostenfalle – Realistische Zahlen
Die Frage „Was kostet eine App?" ist ähnlich wie „Was kostet ein Auto?" – es kommt drauf an. Aber hier sind realistische Spannen basierend auf meinen eigenen Projekten und Erfahrungen:
| Phase | PWA | Native iOS |
|---|---|---|
| Initial Development | 5.000–20.000 € (2-6 Wochen) | 15.000–80.000 € (6-16 Wochen) |
| Hosting / Infrastructure | 10–50 €/Monat (Shared Hosting bis Cloud) | 99 €/Jahr Apple Developer + Backend-Kosten (ähnlich PWA) |
| Updates & Wartung | 500–2.000 €/Jahr (Bug-Fixes, Security-Patches) | 2.000–8.000 €/Jahr (iOS-Updates, Testing, Review) |
| Feature-Erweiterungen | Im Preis: Deploy = Live Kein Review-Prozess | + Review-Zeit (1-3 Tage) + Testing auf iOS-Versionen |
| Cross-Platform | ✅ Inklusive (iOS, Android, Desktop) | ❌ Nur iOS, Android separat +80-100% |
App Store Review: Jedes Update muss durch Review (1-3 Tage). Bei kritischen Bugfixes bedeutet das Verzögerung. Und: Reviews können abgelehnt werden – dann musst du nachbessern und erneut einreichen (weitere 1-3 Tage).
iOS-Versionierung: Jedes Jahr kommt ein neues iOS. Deine App muss getestet und angepasst werden. APIs ändern sich, UI-Guidelines ändern sich, SwiftUI bekommt Breaking Changes. Budget dafür: 1.000–3.000 € pro Jahr.
Device-Testing: iPhones haben verschiedene Screen-Größen, Notch vs. Dynamic Island, Face ID vs. Touch ID. Testing auf echten Geräten ist aufwändiger als Browser-Testing.
Xcode & macOS: Du brauchst einen Mac. Kein Windows, kein Linux. Das sind Kosten (Hardware) die bei Web-Development nicht anfallen.
Hybrid-Ansätze – Der Mittelweg?
Es gibt einen dritten Weg: Hybrid-Frameworks die Web-Code in Native-Apps wrappen.
Bau eine PWA, wrappe sie mit Capacitor in eine native App. Du bekommst App Store Präsenz und Zugriff auf einige Native-APIs. Code bleibt Web (HTML/CSS/JS). Development wie PWA, Distribution wie Native.
JavaScript-Code, native Performance. Shared Code für iOS + Android. Große Community, viele Libraries. Aber: Nicht Web-Code wiederverwendbar, eigene Lernkurve.
Dart-Sprache, eigenes UI-Framework. Sehr schnell, schöne Animationen. Cross-Platform (iOS, Android, Web). Aber: Komplett neues Ökosystem, keine Wiederverwendung von Web-Code.
Meine Erfahrung: Capacitor ist der pragmatischste Weg für Webentwickler. Du baust eine PWA (die standalone funktioniert) und kannst sie bei Bedarf in Native-Wrapper packen. React Native und Flutter sind eher „eigene Plattformen" – du baust nicht wirklich Web, sondern in einem Cross-Platform-Framework.
Entscheidungshilfe – Die 5-Fragen-Methode
Beantworte diese 5 Fragen ehrlich:
0–1× Ja: Starte mit PWA. Du brauchst keine native App – sie würde nur Komplexität und Kosten hinzufügen ohne echten Mehrwert.
2–3× Ja: Prüfe Hybrid-Ansätze (Capacitor). Starte mit PWA, wrappe bei Bedarf in Native-App für App Store.
4–5× Ja: Native iOS ist sinnvoll. Die technischen Anforderungen rechtfertigen den Mehraufwand.
Der pragmatische Weg – Stufenplan
Die meisten Projekte müssen nicht mit „Native oder Web?" starten. Es gibt einen smarten Mittelweg:
Phase 1: MVP als PWA (4–8 Wochen)
- Baue die Kern-Features als Progressive Web App
- Teste mit echten Usern: Wird die App genutzt? Welche Features fehlen?
- Sammle Daten: Welche Browser/Geräte? Welche Features werden gebraucht?
- Validiere den Markt: Lohnt sich der Invest in Native überhaupt?
Phase 2: Hybrid-Wrapper (2–4 Wochen)
Wenn die PWA funktioniert, aber App Store Präsenz wichtig wird:
- Wrappe die PWA mit Capacitor oder Ionic
- Nutze Capacitor-Plugins für erweiterten Hardware-Zugriff
- Liste die App im App Store (mit Web-Code im Kern)
- Beide Versionen parallel: Web + Wrapped Native
# Capacitor Setup (aus bestehender PWA)
npm install @capacitor/core @capacitor/cli
npx cap init "MyApp" "com.example.app"
npx cap add ios
# Build PWA + Sync zu iOS
npm run build
npx cap sync ios
npx cap open ios # Öffnet Xcode Jetzt hast du eine App im App Store – aber dein Code ist weiterhin HTML/CSS/JavaScript. Updates deployst du weiterhin als Web, nur Breaking Changes gehen durch den App Store Review.
Phase 3: Native Rewrite (nur wenn validiert)
Erst wenn die App erfolgreich ist UND native Features fehlen, überleg Native:
- ROI ist klar: Du weißt, dass die App genutzt wird und Geld einbringt
- Features sind limitiert: HealthKit, ARKit, Background Tasks fehlen und sind gefragt
- Performance ist kritisch: Komplexe Animationen, große Datenmengen
- Budget ist da: 30.000–60.000 € für Native Rewrite + 2-3 Jahre Maintenance
Dein Stack – Was du als Webentwickler mitbringst
Der Wechsel von Web zu iOS ist keine Raketenwissenschaft. Vieles ist übertragbar:
Transferable Skills
Swift fühlt sich vertraut an: Closures wie Arrow Functions, Optionals wie Null-Checks, Protocols wie Interfaces. Syntax ist lesbar, Konzepte übertragbar.
Du kennst fetch()? URLSession macht das gleiche, nur typsicher. Networking-Patterns (Interceptors, Error-Handling) sind identisch.
SwiftUI ist reaktiv wie React: @State für lokale State, @Binding für Props, @ObservedObject für globalen State. Konzept ist gleich, Syntax anders.
Branches, Commits, Pull Requests – alles funktioniert gleich. Xcode hat Git integriert, du kannst aber auch Terminal/CLI nutzen.
Was neu ist
- Xcode statt VS Code: Andere IDE, aber Konzepte (Debugger, Breakpoints, File-Navigation) sind gleich. Gewöhnungssache.
- Compiled Language: Swift wird kompiliert, nicht interpretiert. Build-Zeiten sind länger, aber Fehler werden früher gefangen.
- iOS Design Guidelines: Human Interface Guidelines sind strikter als Web. Navigation-Patterns, Tab Bars, Swipe-Gestures haben Standards.
- App Store Review: Dein Code wird geprüft. Privacy-Policies, Permissions, Content-Richtlinien müssen eingehalten werden.
// SwiftUI fühlt sich vertraut an für React-Entwickler
import SwiftUI
struct ContentView: View {
@State private var count = 0 // wie useState()
var body: some View {
VStack { // wie div mit flexbox
Text("Count: \(count)")
.font(.title)
Button("Increment") { // onClick equivalent
count += 1
}
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
}
} Als Webentwickler hast du den Vorteil: Du verstehst bereits UI-Patterns, State Management, API-Integration. Swift ist nur eine neue Syntax für vertraute Konzepte.
Mein Learning aus 6 Monaten iOS-Entwicklung
Hier ein paar ehrliche Erkenntnisse aus meinem Umstieg von Web zu iOS:
Swift ist einfacher als gedacht: Ich hatte Respekt vor Swift als „komplizierter Programmiersprache". Tatsächlich ist Swift lesbarer und konsistenter als JavaScript. Typsicherheit nervt am Anfang, hilft dann aber massiv bei Refactorings.
Xcode ist gewöhnungsbedürftig: VS Code ist schneller, schlanker, flexibler. Xcode ist schwer, langsam, opinionated. Aber: SwiftUI-Previews sind genial, und der Debugger ist sehr mächtig. Man gewöhnt sich dran.
App Store Review ist nicht schlimm: Ich hatte Angst vor Rejections. Reality: Wenn du die Guidelines liest und befolgst, geht fast alles durch. Und selbst Rejections sind konstruktiv (meist fehlende Privacy-Texte oder unklare Permissions).
Performance-Unterschied ist real: Eine native App *fühlt sich* einfach besser an. Animationen sind smoother, Scrolling ist flüssiger, App-Start ist schneller. Selbst bei identischer Funktionalität.
PWA ist nicht „veraltet": Trotz iOS-Erfahrung: Für 80% meiner Projekte würde ich weiterhin PWA wählen. Native macht nur Sinn, wenn du die nativen Features wirklich brauchst.
Wo Web-Know-how hilft
- API-Design: RESTful APIs zu bauen ist gleich, egal ob Frontend Web oder iOS ist.
- State Management: Redux-Prinzipien funktionieren 1:1 in iOS (z.B. mit Combine oder SwiftUI @StateObject).
- Testing-Strategien: Unit Tests, Integration Tests, E2E Tests – Konzepte übertragen sich komplett.
- CI/CD: GitHub Actions für iOS ist fast identisch zu Web: Build → Test → Deploy (nur Target ist App Store statt Server).
Wo du umdenken musst
- Navigation: Web hat URLs und Routing. iOS hat Navigation Stacks und Tab Bars. Grundlegend anderes Mental Model.
- Lifecycle: Web-Apps laufen im Browser, iOS-Apps haben AppDelegate und Scene Lifecycle. Background/Foreground sind echte States.
- Permissions: Web fragt „Darf ich Standort nutzen?", iOS sagt „Warum brauchst du Standort? (Pflichtfeld)". Privacy First ist Standard.
- Updates: Web = Deploy = Live. iOS = Deploy → Review → Warten → User muss updaten. Planung ist anders.
Fazit: Es geht nicht um besser oder schlechter
Progressive Web Apps und native iOS-Apps sind Tools für unterschiedliche Jobs. Die Frage ist nicht „Was ist besser?", sondern „Was passt zu meinem Projekt?"
„Eine PWA ist nicht ‚iOS Light' und eine native App ist nicht ‚PWA Pro'. Es sind fundamentally different approaches mit eigenen Stärken und Trade-Offs."
Starte mit PWA – außer du brauchst von Tag 1 an native Features. Validiere dein Produkt mit Web-Technologien. Wenn der Market-Fit da ist und native Features fehlen, iteriere zu Hybrid oder Native.
Lern beide Welten: Als Webentwickler iOS-Basics zu können ist ein massiver Vorteil. Du kannst Kunden ehrlich beraten, welche Technologie für ihr Projekt passt. Und du bist nicht limitiert auf „nur Web".
Sei technologieagnostisch: Die beste Lösung ist die, die zum Problem passt. Nicht die, die du am besten kennst oder die gerade gehyped wird.
Mehr zur iOS-Entwicklung findest du in meinem Artikel Xcode & SwiftUI – iOS App-Entwicklung. Für Web-Performance lies Core Web Vitals verbessern.