React Native nedir? Mimari, ekosistem ve ne zaman tercih edilmeli
Tanım: React dilinde mobil arayüz
React Native (RN), Facebook/Meta ekosisteminden doğmuş, JavaScript veya TypeScript ile bildirimsel (declarative) bileşenler yazarak iOS ve Android’de çalışan uygulamalar üretmenizi sağlayan bir çerçevedir. “WebView içinde web sitesi gösterme” yaklaşımının tersine, çoğu bileşen yerel (native) görünüm ve dokunma olaylarıyla eşlenir; bu da performans ve mağaza uyumluluğu açısından hibrit kaplama çözümlerinden ayrıştırır. Temel fikir şudur: React’te alıştığınız bileşen ağacı, durum yönetimi ve hooks düzeni aynı kalır; farklı olan render hedefi tarayıcı DOM’u değil, mobil platformun arayüz kitaplıklarıdır.
Metro, JavaScriptCore / Hermes ve paketleme
Geliştirme sırasında Metro paketleyici, modülleri yeniden yazıp cihaz/simülatöre akıtır; üretim derlemesinde JavaScript paketiniz uygulama içine gömülür (veya güncellenebilir paket stratejisiyle servis edilir). Hermes motoru birçok projede varsayılan olarak öne çıktı: daha öngörülebilir başlangıç süresi ve bellek kullanımı için optimize edilmiş bir AOT/bytecode yoludur. Motor seçimi, kullandığınız kütüphanelerin uyumluluğunu ve kilitli hata ayıklama ihtiyaçlarını doğrudan etkiler.
Bridge, JSI ve yeni mimari (Fabric / TurboModules)
Klasik RN’de JS ve native katman arasındaki köprü (bridge) asenkron ve seri hale dile çevrilmiş mesaj trafiği ile çalışır; yoğun liste kaydırma veya çok sık native çağrı içeren animasyonlarda bu tasarım zaman zaman darboğaz olabiliyordu. JSI (JavaScript Interface), C++ tabanlı bir katmanla JS ile native kodun daha doğrudan konuşmasını hedefler; buna oturan Fabric (render) ve TurboModules (native modül sistemi) ile “yeni mimari” denilen dönüşüm, uzun vadede daha düşük iletişim maliyeti ve daha iyi paralelleşme vadeder. Kütüphane desteğinin olgunlaşması zaman aldığından, yeşil sahada hangi sürüm bayraklarının açık olduğunu ve bağımlılık matrisini ürün kararına bağlamak gerekir.
Çekirdek bileşenler ve stil modeli
`View`, `Text`, `Image`, `ScrollView`, `TextInput` gibi yapılar web’deki `div`/`span` benzeri rollere yaklaşır; ancak özellik isimleri ve düzen kuralları flexbox ağırlıklıdır (çoğu mobil yerleşimde CSS grid’den çok RN flex modeli hakimdir). Stil nesneleri genelde JavaScript objesi olarak kalır; büyük ekranda yeniden kullanım için Styled Components, NativeWind (Tailwind), veya tasarım token tabanlı kendi soyutlamalarınız devreye girer. Erişilebilirlik özellikleri (`accessibilityRole`, `accessibilityLabel`) erken zamandan planlanmalıdır—sonradan yapıştırma maliyetlidir.
Expo ile yönetilen iş akışı
Expo, RN üzerinde derleme, imzalama ve OTA güncelleme (EAS Update) süreçlerini saran bir araç zinciridir; prototipten üretime daha hızlı çıkmak için tercih edilir. Yerel CocoaPods / Gradle’a derin müdahale veya sıra dışı SDK kullanımı gerekiyorsa “development build” veya “bare” ayrılımına gidersiniz. Expo’nun soyutladığı yüzler değişince (örneğin belirli native API sürümü) kendi kodunuzu SDK sürümüyle birlikte koşturma disiplinine ihtiyaç duyarsınız.
Navigasyon, durum ve veri katmanı
- React Navigation; stack/tab/drawer desenleri ve deep link parametreleri net sözleşilmeli.
- Global durum için Redux Toolkit, Zustand veya context + server cache (TanStack Query vb.) seçimini ekran boyutuna ve ekip alışkanlığına göre yapın.
- Çevrimdışı ve arka plan görevleri platforma özgüdür; kütüphane seçerken iOS/Android izin ve pil politikalarını okuyun.
Performans pratikleri
Liste performansı için `FlatList`/`SectionList` ile `keyExtractor`, `getItemLayout` (mümkünse) ve pencere boyutu ayarları kritik; her satırı zengin görselle doldurmak JS iş parçacığını meşgul eder. `useMemo` ve `React.memo` her sorunu çözmez—önce ölçüm (Flipper, React DevTools, performance monitor) yapın. Görüntü önbelleği ve ağ katmanı için FastImage/önbellek politikaları bellek baskısını yönetir.
Native modül ve üçüncü parti SDK’lar
Ödeme, harita, push bildirim, kamera filtresi gibi yetenekler sık sık yerel SDK veya köprü paketleriyle gelir. Paket seçiminde son commit tarihi, issue kuyruğu, yeni mimari uyumluluğu ve lisansı birlikte değerlendirin. Apple ve Google’ın gizlilik manifestoları (ATT, veri güvenliği beyanları) RN’i muaf etmez—uygulama sahibi sizsiniz.
Ne zaman tam native (Swift/Kotlin) düşünmeli?
- Aşırı düşük gecikmeli kamera/grafik hattı veya platform özel donanımla sıkı entegrasyon.
- Şirket içi mobil ekibin yalnızca tek platforma odaklı olması ve ortak bileşen ihtiyacının zayıflaması.
- Regülasyonun çok sık native denetleyici API’leri zorunlu kıldığı niş durumlar.
Özet checklist
- Proje oluşturma: Expo SDK hedefleri, RN sürümü ve TypeScript sıkılığı kararları.
- Tasarım sistemi token’ları, karanlık mod ve yazı ölçeği.
- Hata günlükleri (Sentry vb.), özellik bayrakları, sürüm ve mağaza metadata otomasyonu.



