Hybrid mobile development, 2026’da kurumsal ekiplerin “web teknolojileriyle mobile build et” stratejisinin merkezinde yer alıyor. Ionic 8 ve Capacitor 7, bu alanın iki ana oyuncusu ve aslında aynı şirket tarafından (Ionic Inc.) geliştirilse de farklı problem alanlarına hizmet ediyor. Stack Overflow Developer Survey 2025’e göre, web developer’ların %42’si mobile build için Ionic ya da Capacitor kullanıyor; bu rakam React Native’in %38’inin önünde.

Capacitor 7, Ionic’in “web app to native” runtime’ı; Ionic 8 ise üzerine inşa edilen UI framework. Aralarındaki ilişki React Native ile Expo’ya benzer ama farkları çok. Bu yazıda, Türkiye’de Vakıfbank, Avivasa ve birçok e-ticaret şirketinin tercih ettiği bu stack’i production seviyesinde inceliyoruz.

Ionic 8 ve Capacitor 7 Mimarisi — Görsel 1
Ionic 8 ve Capacitor 7 Mimarisi — Görsel 1

Ionic 8 ve Capacitor 7 Mimarisi

İlişkiyi anlamak için iki ürünün ayrı görevlerini anlamak şart. Capacitor 7, native bir web view’ı (iOS’ta WKWebView, Android’de Chrome WebView) wrap eden bir runtime’dır; web kodunuzu native app olarak paketler ve native API’lara köprü sağlar. Ionic 8, üzerinde çalışacak UI framework’tür; Material Design + iOS HIG uyumlu component library sağlar. Ionic olmadan Capacitor kullanabilirsiniz (vanilla React/Vue/Svelte/Angular ile); Capacitor olmadan Ionic kullanılmaz.

2026 itibariyle Capacitor 7 production’da iki ana use case’e hizmet ediyor. Birincisi, “mevcut web app’i mobile’a port etmek”: e-ticaret site’lerinin mobile app versiyonu, B2B dashboard’ların mobile karşılığı, internal tool’lar. İkincisi, “web teknolojileriyle yeni mobile app build etmek”: startup’ların hızlı MVP, ekibin web ağırlıklı olduğu kurumsal projeler.

Capacitor 7’nin Production Yetenekleri

Capacitor 7, 2024 sonbaharında yayınlandı ve native API erişimi tarafında büyük iyileştirmeler getirdi. Yeni plugin architecture, custom native code yazmayı çok daha kolaylaştırıyor ve TypeScript-first plugin SDK sağlıyor. Bu, eski Cordova-based hybrid stack’lerin en büyük zayıflığını çözüyor: native API erişiminin zorluğu.

Özellik Capacitor 7 Cordova (legacy) React Native Flutter
Rendering Engine WebView WebView Native UI Skia Custom
Plugin Yazma Kolaylığı TypeScript-first JS bridge JSI/TurboModules Platform Channels
Performance (basit ekran) 55 FPS 40 FPS 60 FPS 60 FPS
Performance (karmaşık liste) 30-40 FPS 20-30 FPS 50-60 FPS 60 FPS
Cold Start 1.500ms 2.000ms 1.200ms 1.100ms
Bundle Size (initial) 800 KB – 2 MB 1-3 MB 15 MB native 25 MB native

Capacitor’ın en büyük performance dezavantajı, ağır animasyonlu ve uzun liste içeren ekranlarda WebView’ın yapısal sınırlamaları. WKWebView ve Chrome WebView, native UI thread’lerinden bağımsız çalıştığı için, 60 FPS hedefi karmaşık ekranlarda zor. Native bridge call’ları (kamera açma, biometric auth) async ve overhead’li. Production’da bu sınırların farkında olmak şart.

Ionic 8 UI Framework: Web Components Tabanlı

Ionic 8, framework-agnostic web components üzerine kurulu. Stencil.js ile yazılmış component library’si, React, Vue, Svelte, Angular ve hatta vanilla JavaScript ile kullanılabiliyor. Bu, “tek UI library, herhangi bir framework” pattern’i sağlıyor.

Production’da Ionic 8’in en büyük avantajı, iOS ve Android adaptive design. Aynı component, iOS’ta Apple Human Interface Guidelines, Android’de Material Design 3’e göre otomatik render oluyor. ion-segment-button iOS’ta cupertino-style, Android’de material chip. Bu, “tek kod tabanı, iki native deneyim” hedefine yaklaşıyor.

// Ionic React example
import { IonPage, IonContent, IonList, IonItem, IonLabel, IonRefresher, IonRefresherContent } from '@ionic/react';

const ProductsPage = () => {
  const [products, setProducts] = useState([]);

  const handleRefresh = async (event: CustomEvent) => {
    await fetchProducts();
    event.detail.complete();
  };

  return (
    
      
        
          
        
        
          {products.map(p => (
             navigate(`/product/${p.id}`)}>
              
                

{p.title}

{p.price} TL

))}
); };

Bu pattern, iOS’ta otomatik olarak swipe-to-refresh native iOS davranışı, Android’de Material 3 swipe refresh indicator gösterir. Aynı component, native iOS uygulamasındaki UIRefreshControl ya da Android’in SwipeRefreshLayout’una benzer deneyim sağlar.

Ionic 8 ve Capacitor 7 Mimarisi — Görsel 2
Ionic 8 ve Capacitor 7 Mimarisi — Görsel 2

Native Plugin Ecosystem ve Capacitor Community

Capacitor’ın native API erişimi, plugin ecosystem üzerinden çalışır. Resmi Capacitor plugin’leri (Camera, Geolocation, Push Notifications, Filesystem, App, Browser, Device) tamamen production-ready ve TypeScript desteklidir. Topluluk plugin’leri (Capacitor Community organization altında) Bluetooth, MLKit, Stripe, biometric auth gibi spesifik feature’lar için mevcut.

  • @capacitor/camera: Native kamera ve fotoğraf seçici. iOS ve Android’de native dialog’lar.
  • @capacitor/geolocation: GPS ve location services. Background tracking için ayrı plugin.
  • @capacitor/push-notifications: Firebase Cloud Messaging ve APNs entegrasyonu.
  • @capacitor/filesystem: Native file system erişimi. iCloud ve Android scoped storage destekli.
  • @capacitor/biometric: Face ID, Touch ID, Android Biometric API.
  • @capacitor/local-notifications: Scheduled local notifications.
  • @capacitor/share: Native share dialogs.

Custom plugin yazmak gerekirse (örneğin Türkiye-spesifik bir SDK’yı entegre etmek için), Capacitor 7’nin TypeScript plugin SDK’sı kullanılır. iOS tarafında Swift kod, Android tarafında Kotlin/Java kod yazılır; bunlar otomatik olarak TypeScript bridge’i üzerinden web tarafına expose edilir.

Live Update ve Over-The-Air Deployment

Capacitor 7’nin production’daki en güçlü özelliklerinden biri, Appflow Live Update. Web kodunu (HTML, CSS, JS, assets) App Store ve Google Play’den geçmeden direkt cihazlara push edebiliyorsunuz. Bu, hızlı bug fix ve feature flag dağıtımı için kritik.

Live Update’in çalışma mantığı şu: uygulama başladığında server’a “yeni versiyon var mı” sorusunu gönderir. Yeni web bundle varsa background’da indirir, bir sonraki uygulama açılışında aktive eder. Native kod değişiklikleri için hala App Store/Play Store gerekli ama feature %85’i web tarafında olduğu için bu kısıtlama nadiren büyük problem.

App Store ve Play Store kuralları, bu pattern’e uyumlu. Apple, “JavaScript kodunun OTA güncellenmesi” konusunda 2025’te resmi izin verdi (Section 3.3.1 güncellemesi). Native kod (Swift, Kotlin) OTA güncellemesi yasak, ama Capacitor’da native kod hep sabit kalır ve sadece web layer güncellenir.

Performance Optimizasyonu: WebView Sınırları İçinde

Capacitor uygulamalarının performansı, %95 web tarafında optimize edilir. WebView’ın kendi performansı (iOS WKWebView, Android Chrome) modern ve hızlı, ama JavaScript ile yazılan kod ne kadar verimsizse performans o kadar düşer. Production’da kritik optimizasyon noktaları:

  • Virtual List: Uzun listeler için ion-virtual-scroll ya da react-window kullanın. Native FlatList kadar verimli olmasa da büyük fark yaratır.
  • Image Lazy Loading: Resim ağır ekranlar için intersection observer ile lazy load. ion-img component’i built-in destekler.
  • Code Splitting: Route-level code splitting ile initial bundle’ı küçültün. Production’da 200-400 KB initial bundle hedefi.
  • Service Worker Caching: Web app’i offline-first hale getirin. Workbox ile cache stratejileri.
  • Animation Optimization: CSS transform ve opacity dışındaki animasyonlardan kaçının. requestAnimationFrame doğru kullanın.

Ionic Inc. CEO Max Lynch, 2025 IoniCon konuşmasında şu vurguyu yapmıştı: “Capacitor’ın felsefesi ‘native UI’ı taklit etmek’ değil, ‘web teknolojilerinin gücünü mobile’a getirmek’. Eğer her piksel native deneyim arıyorsanız, SwiftUI ya da Jetpack Compose kullanın. Eğer ‘hızlı geliştirme, geniş ekip kullanılabilirliği ve OTA güncelleme’ istiyorsanız, Capacitor ideal.”

Authentication ve Security Patterns

Production Capacitor uygulamalarında authentication, web standardlarının üzerine native bridges eklenerek yapılır. OAuth 2.0 / OIDC akışları için @capacitor/browser plugin’i ile native browser açılır (SFSafariViewController iOS, Chrome Custom Tabs Android). Session token’ları @capacitor/preferences ile native secure storage’a yazılır (iOS Keychain, Android EncryptedSharedPreferences).

Auth Yöntemi Capacitor Plugin Native Wrapper Güvenlik Seviyesi
OAuth 2.0 / OIDC @capacitor/browser SFSafari / Chrome Tabs Yüksek (PKCE destekli)
Biometric @capacitor/biometric Face/Touch ID / BiometricPrompt Çok yüksek
Secure Token @capacitor/preferences Keychain / EncryptedSharedPrefs Yüksek
Certificate Pinning Custom plugin NSURLSession / OkHttp Çok yüksek
App Attestation Custom plugin DeviceCheck / SafetyNet Çok yüksek

Bankacılık ve fintech senaryolarında, ek olarak jailbreak/root detection, SSL pinning ve app integrity verification gibi katmanlar gerekir. Bunlar custom Capacitor plugin’leri olarak yazılır ya da hazır enterprise security paketleri (örneğin Promon SHIELD, Appsealing) kullanılır.

Ionic 8 ve Capacitor 7 Mimarisi — Görsel 3
Ionic 8 ve Capacitor 7 Mimarisi — Görsel 3

Testing Stratejisi: Cypress + Playwright + Native Test

Capacitor uygulamalarında testing iki katmanlı çalışır. Web layer için standart web testing araçları (Cypress, Playwright, Jest, Vitest) kullanılır. Native layer için Capacitor’ın test araçları ya da geleneksel mobile E2E test framework’leri (Maestro, Appium) tercih edilir.

Test Türü Araç Test Edilen Yürütme
Web Unit Vitest / Jest Component logic Çok hızlı (50ms/test)
Web E2E Playwright / Cypress Browser-based UI Hızlı (2-5s/test)
Native E2E Maestro Real app on device/simulator Yavaş (15-30s/test)
Visual Regression Percy / Chromatic Screenshot comparison Orta (deterministik)

Production’da en güçlü pattern, business logic’i web E2E ile test etmek (hızlı, ucuz, çok feature coverage) ve sadece native API’leri (kamera, biometric, push notification) Maestro/Appium ile test etmek. Bu yaklaşım, geleneksel “her şeyi real device’da test et” stratejisine göre test maliyetini %70 azaltır.

Sıkça Sorulan Sorular

Ionic 8 ile Ionic 7 arasında migrasyon kolay mı?

Evet, Ionic 7’den 8’e geçiş büyük breaking change içermiyor. CLI command’ı `ionic migrate` ile otomatik kod dönüşümü yapılıyor. Manuel olarak güncellenmesi gereken kısımlar genelde özel CSS variable kullanımları ve deprecated component’lar.

Capacitor 7’de native iOS/Android kod yazmak gerekiyor mu?

Çoğu senaryoda hayır. Resmi ve community Capacitor plugin’leri yaygın native feature’ları kapsıyor. Custom native kod sadece şu durumlarda gerekli: spesifik bir Türkiye-yerli SDK entegrasyonu (örneğin İyzico, BKM Express), kurumsal SSO sistemleri, ya da çok özel bir hardware feature.

Performance olarak React Native ile karşılaştırması nasıl?

Basit ekranlarda Capacitor %85-90 React Native performansına ulaşıyor. Karmaşık animasyonlu ve uzun liste içeren ekranlarda React Native %30-40 daha iyi. Capacitor’ın avantajı, ekip web bilgisiyle hızlı geliştirme; React Native’in avantajı native UI rendering ve performans.

App Store onayında Capacitor uygulamaları sorun yaşıyor mu?

Modern Capacitor uygulamaları sorun yaşamıyor. Apple, “minimum 80% native functionality” kuralını 2019’da gevşetti. Capacitor uygulamaları “hybrid app” olarak sınıflandırılıyor ve standart inceleme sürecinden geçiyor. Push notification, in-app purchase ve background mode gibi feature’lar tam destekli.

Offline-first nasıl yapılır?

Üç katmanda: service worker ile static asset caching, IndexedDB ile local data storage, sync queue pattern ile offline-to-online data merge. Capacitor’ın @capacitor/filesystem plugin’i ile büyük asset’leri (PDF, video) lokal saklayabilirsiniz. Workbox library’si service worker yönetimini büyük ölçüde kolaylaştırıyor.

Kurumsal Ionic/Capacitor Dönüşümünde Tipik Sorunlar

Türkiye’de Ionic/Capacitor projelerinde gözlemlediğim üç ana problem var. Birincisi, performance beklenti yanlışlığı. Yönetim “native gibi olacak” beklentisiyle proje başlatıyor, ekip “WebView içinde web app” gerçeğini production’da öğreniyor. Çözüm: en başta net olarak “bu uygulama dashboard, içerik tüketimi ve form-based interaction için. Yoğun animasyon ve grafik için değil” diye scope tanımlamak.

İkincisi, native plugin maintenance. Community plugin’leri zaman zaman maintenance olmaz hale geliyor ve iOS/Android’in yeni sürümleriyle uyumsuzluk yaşıyor. Çözüm: kritik plugin’leri fork edip kendi private repo’nuzda tutmak, ve quarterly olarak güncellemek.

Üçüncüsü, tooling fragmentation. Ionic CLI, Capacitor CLI, Cordova legacy araçları ve framework-specific CLI’lar (Angular CLI, Vue CLI) bir arada çalışıyor. Bu, ekip için ilk öğrenme döneminde kafa karıştırıcı. Çözüm: ekip içinde “tooling champion” yetiştirmek ve standard tooling stack’ini dokümante etmek.

Bir e-ticaret projesinde Capacitor + Ionic geçişi danışmanlığında yaşadığımız ders şuydu: “Hibrit yaklaşım, hibrit problemler getirir.” Web layer’da çözdüğünüz problem native layer’da geri gelir; native layer’da çözdüğünüz problem web layer’da farklı görünür. Doğru pattern: en başta “web-first thinking” benimsemek, native’i sadece kaçınılmaz feature’lar için kullanmak. Eğer her ekranınızı native düşünüp web’e zorluyorsanız, Capacitor sizin için yanlış araç. — Ömer Önal

Sonuç

Ionic 8 ve Capacitor 7, 2026’da hibrit mobile development için olgun ve production-ready bir stack. Web teknolojilerine yatırım yapmış ekipler, mevcut bilgilerini mobile’a aktarmak için en güçlü yolu sunuyor. Production’da başarı için üç temel kural geçerli: scope’u “web-friendly use case’ler” ile sınırla (dashboard, içerik, form), performance optimizasyonunu en başta web tarafında yap, ve native plugin’leri stratejik olarak seç (önce resmi, sonra community, son çare custom). Bu üç kuralı uygulayan ekipler, Capacitor’ın hız ve esneklik avantajlarını eksiksiz alıyor.

Ionic/Capacitor geçişinizi, mimari kararlarınızı ve performance optimizasyon stratejinizi birlikte tasarlayalım. İletişim sayfasından bana ulaşın, 30 dakikalık ücretsiz keşif görüşmesinde mevcut durumunuzu analiz edip somut bir geçiş planı çıkaralım.

Ömer ÖNAL

Yazılım Mimarı | Yapay Zeka LLC. Ölçeklenebilir SaaS, .NET Core altyapıları ve Otonom AI süreçleri inşa ediyorum. Kod değil, sistem tasarlarım.

Yorum (1)

  1. Ömer ÖNAL
    Mayıs 23, 2026

    Yazılım mimarisi danışmanlığında sık karşılaştığım soru: “Hangi pattern hangi senaryoda?” Cevap genelde iş hedefiyle teknik kısıtların kesiştiği noktada netleşir. Mimari kararlar ADR olarak kayıt altına alınmadığında 18-24 ay içinde tekrar tartışılan toplantılar ekibin %15-20 verimliliğini alıyor. Yorumlarınız?

Yorum Yap

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir