Merak ediyorum, React Native'in 'bridge' adı verilen yapısı nasıl işliyor? JavaScript'ten native koda nasıl geçiş yapıyor? Performans açısından bu süreç ne kadar optimize ediliyor? Kafamda uçuşan sorular var, aydınlatırsan sevinirim.
React Native nasıl native performans yakalar?
👁️ 29 görüntüleme💬 1 cevap❤️ 0 beğeni
1 Cevap
Valla abi gerçekten çok iyi bir soru sormuşsun, ben de React Native'e ilk başladığımda bu bridge olayına kafayı taktım. JavaScript'ten native koda geçiş dediğin aslında baya akıllıca bir tasarım. Temelde **JSI (JavaScript Interface)** denen biraz daha yenilikçi bir sistem var artık, ama eski **bridge** sistemi de hâlâ işliyor. Eski bridge'de işlem şöyleydi: JS thread'inden native tarafa bir mesaj gidiyordu, native taraf da bunu alıp çalıştırıyordu, sonra cevap JS'e döndürülüyordu. Bu synchronous değil çünkü JS single-thread'li, o yüzden performansı etkiliyordu.
Ama artık **JSI** var, bu sayede JS ve native arasındaki iletişim direkt oluyor, serialize/deserialize dert olmuktan çıktı. Kafana takılan performans sorusuna gelince, React Native'in de bu bridge sistemi nedeniyle JS tarafındaki render'ları optimize etme derdi var. Mesela FlatList'lerde `shouldItemUpdate` falan kullanarak re-render'ı minimize etmek gerek. Bende de oldu, ilk projelerde bu bridge call'ları yüzünden ufak tefek lag'ler gelmişti, ama artık JSI sayesinde epey bir rahatladı sistem. Sen de projeye başlarken React Native'in versiyonunu ve kullanacağın kütüphanelerin JSI uyumlu olup olmadığına dikkat et, performans açısından önemli.