Exploring Infinite Possibilities on FrontEnd 🚀
Burak Sağlık
Search...

Thu Feb 20 2025

React Native Fabric ve TurboModules ile Native Kod Geliştirme

React Native, mobil uygulama geliştirme dünyasında çığır açan bir teknoloji olarak karşımıza çıkıyor. Hem iOS hem de Android için tek bir kod tabanıyla çalışabilme avantajı, geliştiricilere büyük bir esneklik sunuyor. Ancak, React Native'in mevcut mimarisi bazı sınırlamalara sahip. İşte tam da bu noktada Fabric ve TurboModules devreye giriyor. Bu yeni mimari, React Native'in performansını ve esnekliğini bir üst seviyeye taşıyor. Peki, bu yeni teknolojiler neler getiriyor ve native kod geliştirme sürecini nasıl etkiliyor? Gelin birlikte inceleyelim.

Temel Kavramlar

1. React Native'in Mevcut Mimarisi ve Sınırlamaları

React Native'in mevcut mimarisi, JavaScript Thread, UI Thread, Native Modules Thread ve Shadow Thread gibi farklı thread'ler arasında bir köprü (Bridge) kullanarak çalışıyor. Bu köprü, JavaScript ve native kod arasında iletişim sağlıyor. Ancak bu yapının bazı sınırlamaları var:

  • Performans Sorunları: JavaScript ve native kod arasındaki iletişim asenkron ve serileştirilmiş (serialized) olduğu için performans kayıpları yaşanabiliyor.
  • Başlangıç Süresi: Uygulama başlangıcında JavaScript kodunun derlenmesi zaman alabiliyor.
  • Karmaşıklık: Native modüllerin entegrasyonu ve yönetimi bazen karmaşık hale gelebiliyor.

İşte bu sınırlamaları aşmak için Facebook, Fabric ve TurboModules gibi yeni bir mimari üzerinde çalışmaya başladı.

2. Fabric: Yeni Renderer Mimarisi

Fabric, React Native'in yeni renderer mimarisidir. Mevcut mimarideki köprü (Bridge) yapısını ortadan kaldırarak, JavaScript ve native kod arasında daha doğrudan bir iletişim sağlar. Peki Fabric ne gibi avantajlar sunuyor?

Fabric'in Avantajları:
  • Daha Hızlı Render Süreleri: Fabric, UI bileşenlerini daha hızlı render eder.
  • Daha Az Thread Geçişi: JavaScript ve native kod arasındaki iletişim daha doğrudan hale gelir, bu da performansı artırır.
  • Daha İyi Kullanıcı Deneyimi: UI güncellemeleri daha hızlı ve akıcı bir şekilde gerçekleşir.
Fabric Nasıl Çalışır?
  • Fabric, JavaScript ve native kod arasında doğrudan bir bağlantı kurar.
  • UI bileşenleri, native tarafında daha verimli bir şekilde yönetilir.
  • Shadow Tree hesaplamaları daha hızlı ve optimize edilmiş bir şekilde yapılır.

3. TurboModules: Native Modüllerin Yeni Yüzü

TurboModules, React Native'de native modüllerin yönetimini ve kullanımını kolaylaştıran bir yapıdır. Mevcut mimaride native modüller, uygulama başlangıcında hemen yüklenir. Bu da başlangıç süresini uzatır. TurboModules ise bu modülleri lazy loading (isteğe bağlı yükleme) mantığıyla yönetir.

TurboModules'in Avantajları:
  • Daha Hızlı Başlangıç Süreleri: Native modüller, sadece ihtiyaç duyulduğunda yüklenir.
  • Daha Az Bellek Kullanımı: Kullanılmayan modüller bellekten boşaltılır.
  • Daha Kolay Entegrasyon: Native modüllerin yönetimi ve entegrasyonu daha kolay hale gelir.
TurboModules Nasıl Çalışır?
  • TurboModules, native modülleri JavaScript tarafında otomatik olarak tanır.
  • Modüller, sadece kullanıldıklarında yüklenir ve başlatılır.
  • Bu sayede uygulama başlangıç süresi önemli ölçüde kısalır.

4. Fabric ve TurboModules ile Native Kod Geliştirme

Fabric ve TurboModules, native kod geliştirme sürecini de önemli ölçüde etkiliyor. İşte bu yeni mimari ile native kod geliştirirken dikkat edilmesi gerekenler:

Native Modül Oluşturma:
  • iOS için:
    • Objective-C veya Swift kullanarak native modüller oluşturabilirsiniz.
    • Modülünüzü RCTBridgeModule protokolüne uygun hale getirin.
    • TurboModules, modülünüzü otomatik olarak tanır ve yönetir.
  • Android için:
    • Java veya Kotlin kullanarak native modüller oluşturabilirsiniz.
    • Modülünüzü ReactContextBaseJavaModule sınıfından türetin.
    • TurboModules, modülünüzü otomatik olarak tanır ve yönetir.
UI Bileşenleri Oluşturma:
  • Fabric ile birlikte, native UI bileşenleri oluşturmak daha kolay hale geldi.
  • RCTViewManager (iOS) veya ViewManager (Android) sınıflarını kullanarak custom bileşenler oluşturabilirsiniz.
  • Bu bileşenler, JavaScript tarafında doğrudan kullanılabilir.
Performans Optimizasyonu:
  • Fabric ve TurboModules, performansı artırmak için birçok optimizasyon sunar.
  • Özellikle büyük ve karmaşık projelerde bu yeni mimariyi kullanarak performans sorunlarını çözebilirsiniz.

React Server Components Nasıl Çalışır?

React Server Components, sunucu ve istemci arasında bir protokol kullanır. Bu protokol, sunucuda render edilen bileşenlerin istemciye nasıl gönderileceğini ve istemci tarafında nasıl entegre edileceğini belirler.

Adımlar:

  1. Sunucuda Render: Bileşenler sunucuda render edilir ve JSON formatında istemciye gönderilir.
  2. İstemcide Entegrasyon: İstemci, sunucudan gelen JSON verisini alır ve bu veriyi kullanarak bileşenleri ekranda gösterir.
  3. Etkileşim: İstemci tarafında etkileşim gerektiren bileşenler, geleneksel React bileşenleri gibi çalışır.

5. Sonuç: Geleceğin Mobil Geliştirme Mimarisi

Fabric ve TurboModules, React Native'in geleceğini şekillendiren iki önemli teknolojidir. Bu yeni mimari, performansı artırırken geliştiricilere daha esnek ve güçlü bir altyapı sunuyor. Özellikle büyük ölçekli projelerde Fabric ve TurboModules'i kullanarak, kullanıcı deneyimini bir üst seviyeye taşıyabilirsiniz.

Eğer siz de React Native ile mobil uygulama geliştiriyorsanız, Fabric ve TurboModules'e geçiş yaparak bu avantajlardan faydalanmaya başlayabilirsiniz. Unutmayın, geleceğin mobil geliştirme dünyasına hazır olmak için bugünden adım atmak gerekiyor!


Umarım bu yazı, React Native Fabric ve TurboModules ile native kod geliştirme konusunda size rehberlik eder. Eğer bu konuyla ilgili daha fazla sorunuz varsa veya belirli bir konuda detay isterseniz, benimle iletişime geçmekten çekinmeyin. Bir sonraki yazıda görüşmek üzere! 🚀

Not: Bu yazı, React Native'in en güncel sürümlerine ve dokümantasyonuna dayanarak hazırlanmıştır. Eğer Fabric ve TurboModules ile ilgili güncellemeler veya değişiklikler olursa, bu yazıyı güncelleyeceğim.

Burak Sağlık

Burak Saglik

©2024 Desing and Developed by @Burak Sağlık

All rights reserved