Skip to main content
EngineeringProduct Building

Neden Çapraz Platform Çerçeveleri Yerine Swift ile Yerel iOS Uygulamaları Geliştiriyoruz

Mortgy
4 min read

Platformlar arası cazibenin tuzağı

Açık olalım: Flutter'ı seviyoruz. Platformlar arası erişimin platforma özgü özelliklerden daha önemli olduğu birçok müşteri projesi için kullanıyoruz. React Native de sağlam. Ancak kendi yapay zeka destekli iOS uygulamalarımız için — CoreML'i zorlayan, kamerayı 60fps'de kullanan ve Apple birinci taraf uygulamalarından ayırt edilemez görünen uygulamalar — tutarlı bir şekilde yerel Swift ve SwiftUI'yi seçiyoruz.

Bu ideolojik bir tutum değildir. Bu, gerçek ürünler sunmaya ve önemsenen şeyleri ölçmeye dayalı pratik bir karardır: performans, kullanıcı tutma oranı, App Store derecelendirmeleri ve geliştirme hızı.

CoreML performans açığı gerçektir

Uygulamanız 60fps'de bilgisayarlı görme yapan bir ML boru hattını çalıştırdığında, platformlar arası çerçevelerin köprü ek yükü gerçek bir darboğaz haline gelir. Swift'te CoreML entegrasyonu sıfır ek yükü vardır — model Neural Engine'de çalışır, sonuçlar yerel Swift türleri olarak geri gelir ve kullanıcı arayüzü aynı karede güncellenir.

Bir YOLOv8 nesne algılama modelini üç yaklaşımda kıyasladık: CoreML ile yerel Swift, CoreML'e platform kanal köprüsü ile Flutter ve yerel modül ile React Native. Sonuçlar çarpıcıydı:

Yerel Swift: 12ms ortalama çıkarım süresi. Flutter köprüsü: 28ms (köprü her kare başına ~16ms serileştirme ek yükü ekler). React Native: 35ms. 30fps kamera girişinde, bu köprü ek yükü neredeyse yarısını çerçeve bütçenizden tüketir. 60fps'de, platformlar arası için oyun bitti.

Yapay zeka çıkarımının ara sıra gerçekleştiği uygulamalar için (fotoğraf filtresi, metin analizi özelliği), bu ek yük ihmal edilebilir düzeydedir. Ancak gerçek zamanlı yapay zeka — canlı kamera işleme, sürekli sensör analizi, akışlı ses transkripsiyonu — için yerel Swift ile CoreML, akıcı bir deneyim sunan tek seçenektir.

SwiftUI, bir üretkenlik güç kaynağına dönüştü

SwiftUI, iOS 17 ve 18 ile önemli ölçüde olgunlaştı. Navigation stacks, observable makrolar ve yeni animasyon API'leri, platformlar arası dünyada herhangi bir şeyle rekabet edebilir. SwiftUI previews ile iterasyon hızımız, birçok durumda sıcak yenileme (hot reload) ile karşılaştırıldığında daha hızlıdır, çünkü previewler uygulamanın tamamını yeniden derlemeden oluşturulur.

Swift 5.9'daki Observable makrosu, SwiftUI durum yönetimini acı verici hale getiren boilerplate'lerin çoğunu ortadan kaldırdı. Yeni Navigation sistemi ile birleştirildiğinde, karmaşık çok ekranlı akışları oluşturmak artık basit ve tür güvenlidir. Çerçeveyle mücadele etmek yerine daha az zaman harcayıp özellik geliştirmeye daha fazla zaman ayırıyoruz.

Yerel görünmesi gereken uygulamalar için — uygun iOS jestleri, haptics, Dynamic Island entegrasyonu, Canlı Etkinlikler, widget'lar — SwiftUI bunları ücretsiz olarak sağlar. Platformlar arası çerçeveleri ya bu özelliklere erişemez ya da zaman tasarrufu sağlamayan karmaşık platform kanal uygulamaları gerektirir.

App Store avantajı

Apple, uygulamaları gözden geçirir ve farkı görebilir. Yerel Swift uygulamaları daha sorunsuz inceleme süreçleri, ilk gün en son API'lere erişim ve daha iyi öne çıkarma fırsatları alır. Apple, en son platform özelliklerini sergileyen uygulamaları aktif olarak tanıtır — ve birisi bir köprü oluşturana kadar platformlar arası çerçeveleri kullanarak bu özellikleri kullanamaz, bu da genellikle aylar alır.

Yerel uygulamalarımız, ortalama App Store derecelendirmesi 4,7 yıldız alır. En yaygın olumlu incelemeler hız ve uygulamanın iOS'e ait gibi hissettirilmesinden bahseder. Bu yerel his, özellikle animasyonlar, geçişler ve jest etkileşimleri için platformlar arası çerçevelerle neredeyse imkansız şekilde çoğaltılır.

Platformlar arası yaklaşımın doğru olduğu zaman

Platformlar arası geliştirme mantıklı hale gelir: uygulamanız temel olarak bir API tarafından desteklenen bir CRUD arayüzü ise, ilk günden iOS ve Android'e sınırlı bir bütçeyle ihtiyacınız varsa, AI özelliklerinizin tümü sunucu tarafındaysa veya bir konsepti doğrulamak için MVP oluşturuyorsanız. Müşteri işlerimizde tam olarak bu senaryolar için Flutter kullanıyoruz.

Diğer her şey için — özellikle cihazda ML, özel kamera işlem hatları, ARKit entegrasyonu veya HealthKit ya da HomeKit gibi derin işletim sistemi entegrasyonu içeren uygulamalar — native git. Başlangıç yatırımı kendisini performans, kullanıcı memnuniyeti ve uzun vadeli bakım edilebilirlik açısından karşılar.

Bizim tavsiyemiz

Eğer native ve platformlar arası geliştirme arasında karar veren bir startup iseniz, kendinize bir soru sorun: uygulamanızın temel değer önerisi platforma özel bir yeteneğe bağlı mı? Cevap evet ise — ve çoğu AI uygulaması için öyledir — native git. Cevap hayır ise, Flutter veya React Native sizin için iyi bir seçim olacak ve zamandan tasarruf ettirecektir.

iHux'ta, tavsiyelerimizde platform-agnostik, yürütmemizde platform-spesifik'iz. Sizin ürününüz için hangi yaklaşımın doğru olduğunu samimiyetle söyleyelim ve sonra bunu düzgün bir şekilde inşa edelim.

Mortgy

Founder & CEO