Çoğu Flutter vs SwiftUI yazısı yüzeysel hello-world karşılaştırmalarıyla yetiniyor. Karar vermesi gereken ekibin baktığı yer başka: 60K LOC mertebesinde bir kod tabanı, çok kişilik bir takım, yıllarla ölçülen sürdürme yükü, App Store + Play Store deployment ve gerçek crash verisi.
Bu yazıda pragmatik bir karşılaştırma — performans benchmark'larından önce build pipeline, team velocity, hire pool, 3 yıllık maintenance. Aşağıdaki karşılaştırmalar sayısal ölçüm değil, genel eğilimleri anlatan nitel değerlendirmelerdir; kendi ölçümüm olarak sunulmuyor. Karar matrisi yazının sonunda.
Pro Tip: "Hangisi daha hızlı?" sorusu yanıltıcı. Doğru soru: "Senin senaryon hangisinde daha sürdürülebilir?" — Build time + team scale + UI complexity'ye göre cevap farklı.
İçindekiler
- Karşılaştırma Çerçevesi: 8 Boyut
- Build Pipeline ve CI/CD
- Runtime Performance: 4 Workload
- Team Velocity & PR Review
- Hire Pool: Senior Talent Realität
- 3-Year Maintenance Bill
- Hangi Platform Hangi Senaryoda
- App Store + Play Store Deployment
- Migration Cost (One → Diğer)
- Karar Matrisi 2026
1. Karşılaştırma Çerçevesi: 8 Boyut
Yüzeysel "Flutter ucuz mu?" sorusundan kaç. 8 ekseni dikkate al:
Boyut | Flutter | SwiftUI |
|---|---|---|
Build time | ⚠️ orta | ✅ hızlı |
Cold start | ⚠️ ek engine boot maliyeti | ✅ native |
UI fidelity (Apple HIG) | ⚠️ kısmen | ✅ tam |
Cross-platform overhead | ✅ 1 codebase | ❌ 2 codebase |
Hire pool global | ✅ büyük | ⚠️ uzman, az |
Team velocity | ⚠️ değişken | ✅ stabil |
Maintenance 3 yıl | ⚠️ pkg drift | ✅ stabil |
Native API access | ❌ plugin gerek | ✅ direkt |
2. Build Pipeline ve CI/CD
Flutter:
1# Clean cold build2flutter clean3flutter pub get # bağımlılıkları çözer4flutter build ipa # iOS release build5flutter build appbundle # Android release buildCI: GitHub Actions ARM macOS-14 runner'da ipa build süresi ve toplam pipeline (test + build + sign) süresi projeye, cache durumuna ve runner'a göre değişir.
SwiftUI / Swift:
1# Clean cold build2xcodebuild -workspace App.xcworkspace -scheme App archiveARM macOS-14 runner'da archive süresi ve toplam pipeline (test + lint + archive) süresi de projeye ve cache durumuna göre değişir.
Pratik fark: İkisi de modern hardware'da kabul edilebilir. Flutter'ın artısı iOS + Android pipeline tek yerde. SwiftUI sadece iOS. Eğer Android da gerekliyse Flutter toplam pipeline eforunda tasarruf sağlar.
Tuzak: Flutter'ın flutter pub get dependency resolution çok-paket projede belirgin şekilde uzayabiliyor. PUB_CACHE GitHub Actions cache layer şart.
3. Runtime Performance: 4 Workload
Workload 1: Cold launch
Metric | Flutter | SwiftUI |
|---|---|---|
Engine/runtime başlatma adımı | ⚠️ var (Dart VM + Flutter engine init) | ✅ yok (doğrudan native process) |
Time to first paint / time to interactive | ⚠️ görece yavaş başlar | ✅ görece hızlı başlar |
Flutter'ın iOS'taki tek render motoru Impeller'dır — Skia'ya geçiş seçeneği artık yok (Flutter Impeller dokümantasyonu). Buna rağmen Dart VM + engine başlatma adımı, SwiftUI'nin doğrudan native süreç başlatmasına kıyasla soğuk açılışta ek bir gecikme getiriyor. Kesin milisaniye farkı cihaza, build moduna (debug/release) ve uygulama boyutuna göre büyük ölçüde değişir; burada tek bir projenin ölçümünü paylaşmıyoruz.
Workload 2: Smooth scroll (1000 item list)
Aynı liste, aynı row layout, aynı image lazy load:
Metric | Flutter | SwiftUI |
|---|---|---|
Frame budget compliance | ⚠️ biraz daha düşük | ✅ daha yüksek |
Dropped frames per 1000 | ⚠️ daha fazla | ✅ daha az |
Avg frame time | ⚠️ biraz daha yüksek | ✅ biraz daha düşük |
Impeller, iOS'ta Flutter'ın tek render motoru (Skia opt-out'u kaldırıldı); bu workload'da SwiftUI yine de marjinal önde.
Workload 3: Form-heavy view (40 input)
Metric | Flutter | SwiftUI |
|---|---|---|
Keyboard show latency | ⚠️ daha yüksek | ✅ daha düşük |
Validation feedback latency | ⚠️ daha yüksek | ✅ daha düşük |
State sync delay | ⚠️ daha yüksek | ✅ daha düşük |
Burada SwiftUI net üstün — native keyboard handling + native state.
Workload 4: Heavy compute UI (CoreML inference + result display)
Flutter:
- Platform channel roundtrip eklenir
- Result marshalling ek maliyet getirir
- Toplam overhead: her call'da SwiftUI'den daha yüksek
SwiftUI:
- Direct Swift integration: minimal overhead
Çok sık çağrı yapılan iş yükünde fark görünür. Tek-seferlik inference'da ihmal edilebilir.
4. Team Velocity & PR Review
Karışık bir takım kurgusunda genel eğilimler (sayısal ölçüm değil, nitel karşılaştırma):
Metric | Flutter team | iOS native team |
|---|---|---|
Avg PR cycle (open → merge) | ⚠️ daha uzun | ✅ daha kısa |
PR conflicts/week | ⚠️ daha fazla | ✅ daha az |
Tech debt tickets/sprint | ⚠️ daha fazla | ✅ daha az |
Onboarding (new dev → first PR) | ⚠️ daha uzun | ✅ daha kısa |
Neden?
- Flutter PR'leri iOS + Android davranış kontrolü gerektiriyor → review uzuyor
- pubspec.yaml conflicts sık (her dev paket version bump'ı yapıyor)
- Native bridge package'ler "kim sürdürüyor?" tech debt'i yaratıyor
- SwiftUI Apple resmi pattern + Xcode Indexer = onboarding hızlı
Tek tarafa Flutter avantajı: İki platforma birden ship — feature parity garantili. iOS native'de Android'i ayrı yazmak, sync zorluğu yaratır.
5. Hire Pool: Senior Talent Realität
İş ilanı sitelerindeki (LinkedIn dahil) anlık arama sonucu sayıları hızla değişiyor ve belirli bir ana bağlı, yeniden üretilebilir bir kaynağa dayanmıyor — bu yüzden burada tekil bir rakam vermiyoruz. Genel gözlem yine de pratikte geçerli: iOS native (UIKit/SwiftUI) arayan geliştirici havuzu, büyük pazarlarda tipik olarak Flutter arayanlardan daha büyük raporlanıyor; SwiftUI'ye özgü uzman havuzu ise daha dar, ama çok yıllı iOS geliştiricilerin büyük kısmı zaten SwiftUI'yi de biliyor.
Maaş aralıkları bölgeye, şirket büyüklüğüne ve zamana göre çok değişken; güncel ve bölgene özgü bir karşılaştırma için güncel maaş anketlerine (ör. Stack Overflow Developer Survey, yerel iş ilanı siteleri) bakman daha sağlıklı olur.
Pratikte iOS hire maliyeti biraz daha yüksek olabilir, ama havuz büyüklüğü işe alım hızını etkileyen ayrı bir faktör.
6. 3-Year Maintenance Bill
Flutter app (60K LOC):
- Dart SDK upgrade düzenli aralıklarla gerekiyor (breaking changes orta sıklık)
- Flutter framework upgrade sık geliyor (state management API'ları evrim)
- Plugin ecosystem drift: plugin'lerin önemli bir kısmı her yıl maintenance gerektiriyor
- Yıllık maintenance task: görece yüksek
iOS native app (60K LOC):
- Xcode upgrade yılda bir ana sürüm ritmiyle (Eylül + occasional patches)
- iOS SDK breaking changes az (Apple stability promise)
- SPM dependency drift: daha az paket update gerektiriyor
- Yıllık maintenance task: görece düşük
3 yıllık fark: Flutter tarafında genellikle daha fazla maintenance eforu birikir. Karar verirken ön ödeme + maintenance overhead birlikte hesapla.
7. Hangi Platform Hangi Senaryoda
Flutter seç:
- Aynı feature iOS + Android'de birlikte deploy edilecekse
- MVP hızlı çıkarmak ve ileride rewrite/evolve düşüncesi varsa
- Team Flutter-savvy (Dart bilen geliştirici mevcut)
- Brand identity custom (Material/Cupertino blend)
- Backend / data-heavy app (UI fidelity'nin kısmen karşılanması yeterli)
SwiftUI seç:
- iOS-first veya iOS-exclusive proje
- Apple HIG ile tam fidelity gerekli (medical, financial regulated)
- Native API çok kullanılıyor (HealthKit, ARKit, CoreML, Apple Intelligence)
- Uzun vadeli maintenance projection
- visionOS, watchOS, macOS, tvOS multi-platform Apple ecosystem
- Team Apple-savvy
Hybrid yaklaşımı:
- Kritik UI iOS native, sekunder feature Flutter
- React Native vs Flutter karşılaştırması bu senaryoda daha alakalı
8. App Store + Play Store Deployment
Flutter — App Store submission:
- TestFlight upload ve build size: Flutter engine/framework binary'ye eklendiği için genellikle daha büyük
- App Store review: özel durumlarda reject olasılığı daha yüksek
- Reject sebepleri: 3rd-party tracking SDK'lar (privacy manifest), accessibility (Flutter SemanticsNode)
SwiftUI — App Store submission:
- TestFlight upload ve build size: genellikle daha küçük
- App Store review: reject olasılığı genellikle daha düşük
- Reject sebepleri: nadiren
Play Store (Flutter):
- Upload ve review süreleri genellikle kısa
- Reject sebepleri: manifest, target API mismatch
Flutter'ın App Store reject oranı iOS native'e göre daha yüksek olarak raporlanıyor — privacy manifest'i eksik plugin'ler yüzünden. Production'da PrivacyInfo.xcprivacy her plugin için manuel check şart.
9. Migration Cost (One → Diğer)
Flutter → SwiftUI:
- Kod hacmi birebir karşılık gelmez (Swift verbose değil ama UI builder pattern farklı)
- Migration maliyeti yüksek: ciddi süre ve senior dev eforu gerekir
- Test re-write: büyük kısmı yeniden yazılır (widget test → XCTest UITest)
SwiftUI → Flutter:
- Kod hacmi birebir karşılık gelmez
- Migration maliyeti yüksek: ciddi süre ve senior dev eforu gerekir
- Plugin dependency analizi shoehorn olabilir (CoreML → custom MethodChannel)
Pratik tavsiye: Hiçbir yöne migrate etme. Yeni feature için yeni platform tercih et, eski sürdürmeye devam et. Tüm migration tipik olarak ROI negatif.
10. Karar Matrisi 2026
Senaryon | Tercih | Confidence |
|---|---|---|
iOS-exclusive new project + Apple Intelligence kullanıyor | SwiftUI | Çok yüksek |
Cross-platform MVP, kısa deadline | Flutter | Yüksek |
Enterprise iOS + Android equal priority | Flutter | Yüksek |
Brand fidelity Apple HIG zorunlu (medical, banking) | SwiftUI | Çok yüksek |
Senior iOS hire pool olmaması | Flutter | Orta |
visionOS + macOS + iOS + watchOS multi-platform | SwiftUI | Çok yüksek |
ARKit / CoreML / HealthKit yoğun | SwiftUI | Yüksek |
3-year maintenance budget kısıtlı | SwiftUI | Orta |
Aynı feature ikisinde de hemen lansman gerekli | Flutter | Yüksek |
Team mixed (iOS + Android dev) Flutter'a remap | Flutter | Orta |
Sonuç
Flutter ve SwiftUI karşılaştırması "performans" değil "context" sorusu. Build hızı, hire pool, maintenance overhead, UI fidelity ihtiyacı — her biri farklı yöne işaret eder.
Yukarıdaki ölçütlerin topladığı genel görüş:
- iOS-exclusive yeni projelerde SwiftUI net kazanır — runtime, build, hire, maintenance hepsinde
- Cross-platform MVP'lerde Flutter kazanır — 1 codebase + parity garantisi
- Enterprise multi-year apps'te trade-off var — team competence + product depth belirler
- Apple ecosystem yoğun (visionOS, watchOS, AI) → SwiftUI tartışmasız
Bu seçim uzun vadeli gelecek planlamayı etkiler. Karar matrisini geç + 3 senior'a soruyu sor + ROI hesabını yap. "Flutter ucuz mu" sorusunun yanlış olduğunu hatırla.
İlgili kaynaklar:
Etiketler
iOS Geliştirme Haberleri
Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.
Onay e-postasındaki bağlantıyı açıp “Aboneliğimi onayla” düğmesine bastığında aboneliğin başlar. Bültende açılma/tıklama istatistikleri tutulur; dilediğin an tek tıkla ayrılabilirsin. Gizlilik
