React Native, aynı kod tabanını kullanarak iOS, Android ve web uygulamaları gibi birden çok platformda uygulamalar oluşturmak için tasarlanmış açık kaynaklı bir JavaScript framework’üdür. Temeli React’e dayanır ve genel olarak mobil uygulama alanında çokça tercih edilmektedir.
ReactJS (web) ve React Native, Facebook tarafından hayata geçirildi. React Native, şirketin en büyük sorunlu noktasını çözmeyi amaçlayan bir Hackathon projesiydi. Bu sayede Facebook çatısı altındaki uygulamalar için farklı çözümler üreterek sorunları çözmek hedeflendi.
React Native, uygulamanın kullanıcı arayüzünü derlemek için JavaScript’i kullanır, ancak işletim sistemlerine ait görünümlerini kullanır. Daha karmaşık özellikler için, işletim sistemine özgü yazılım dillerinde kod uygulamasına izin verir (iOS için Swift ve Objefctive-C ve Android için Java ve Kotlin).
İçerik Tablosu
React ve React Native
React, web uygulamaları için hızlı ve güvenilir Kullanıcı Arayüzleri oluşturmak için front-end kısmında kullanılan açık kaynaklı bir JavaScript kütüphanesidir. Çok fazla yeniden kullanılabilir bileşenlere dayanmaktadır.
Bahsettiğimiz gibi, yıllar sonra React Native gibi, React de ölçeklenebilirlik sorunlarına doğrudan bir cevap olarak 2011 yılında Facebook tarafından hayata geçirildi. Facebook reklamlarının son derece büyüdüğü ve kullanıcı arayüzündeki sürekli güncellemelerin platformu önemli ölçüde yavaşlattığı bir dönemde React bu sorunu çözdü ve 2012’de Instagram, Facebook tarafından satın alındığında uygulamaların zaman tünelinde de kullanıldı.
React tarafından desteklenen ve Facebook tarafından geliştirilen React Native, React’in doğal bir sonucuydu. JavaScript kullanarak işletim sistemine özgü yazılım dillerinde geliştirilenlere işletim sistemine özgü yakın uygulamalar oluşturmaya izin veren bir mobil framework’tür.
Her iki framework de birbiriyle yakından ilişkilidir, ancak tamamen farklı bir amaca hizmet ederler. Web geliştirme için React, mobil geliştirme için React Native (HTML kullanmayan) kullanılır.
React Native nasıl çalışır?
React Native’in uygulamanın arayüzünü oluşturmak için JavaScript kullandığından bahsetmiştik. Rakiplerinin (örneğin IONIC) aksine, React Native web görünümlerine değil, işletim sistemine özgü uygulamalar geliştirilebilen platformlar tarafından sağlanan materyallere dayanır. Kullanıldığı platformun görünümlerine, bileşenlerine yerleşik erişime sahiptir. Ayrıca kullanıldığı platform içindeki farklı dillerde yazılmış kodu kullanabilir ve API’nin uygulama içindeki işletim sistemine özgü özelliklere erişmesine izin verebilir.
Peki bu tam olarak nasıl oluyor?
React Native, JavaScript ve yerleşik öğeler arasında asenkron iletişime izin veren “köprü” kavramını kullanır – köprü kavramı, React Native’in esnekliğinin tam kalbinde yer alır. Bir platforma ait dildeki ögeler ve JavaScript öğeleri tamamen farklı teknolojilerdir, ancak iletişim kurabilirler.
Bu tür mimari, birçok işletim sisteminin geliştiricilere sunduğu özelliklerini kullanma avantajı sunar, ancak aynı zamanda önemli zorlukları beraberinde getirir; örneğin uygulama içinde köprülerin sürekli kullanımı, performansını önemli ölçüde yavaşlatabilir. Çok sayıda olay, çok fazla veri vb. içeren bir uygulama oluşturuyorsanız, React Native en iyi seçenek olmayabilir. Aşağıda bunun hakkında daha fazlasına değineceğiz.
React Native’in Artıları
Kodun yeniden kullanılabilirliği ve daha hızlı geliştirme
Aynı anda birden fazla platform için etkili geliştirme, React Native’in en büyük ve en güçlü avantajıdır. Farklı platformlar için aynı kod tabanını kullanmanın başka faydaları da vardır: uygulamanızın daha hızlı geliştirilmesi ve pazara sunulması, daha kolay ve daha ucuz bakım (birden çok kod tabanıyla değil, tek bir kod tabanıyla ilgilenirsiniz) ve yeni geliştiriciler için daha sorunsuz bir katılım süreci sağlar.
“Hot reloading – Sıcak yeniden yükleme” özelliği sayesinde React Native, geliştiricilerin hiçbir şeyi yenilemeye gerek kalmadan koddaki değişiklikleri canlı bir önizlemede görmelerini sağlar. Bu görünüşte küçük ince ayar, kod içinde değiştirilen her şeye gerçek zamanlı geri bildirim sağladığı için geliştirme sürecini somut olarak iyileştirebilir.
Verim
Diğer platformlar arası geliştirme çözümleriyle karşılaştırıldığında, React Native’in “köprü” konsepti devrim niteliğinde görülebilir. React Native uygulamaları, işletim sistemine özgü dillerde yazılmış kodun kullanımına izin verdiğinden, web tabanlı çapraz platform çözümleri kadar gecikmeli değildir. Resmi iddia, React Native’in “yerel benzeri” bir performans sağladığıdır, ancak bu her zaman doğru değildir, bunu söylemenin en iyi yolu, “işletim sistemine uygun uygulama geliştirme dilleriyle yazılmış uygulamalara” yakın bir deneyim vermesidir .
Maliyet verimliliği
Maliyet verimliliği, platformlar arası geliştirmenin asıl nedenidir. Kodun birden çok platformda yeniden kullanılması sayesinde, projeyi teslim etmek için genellikle daha küçük bir ekibe ihtiyacınız olur. Temelde bir yerine iki benzer işletim ürünü sunmak için iki ayrı ekibe ihtiyaç duyduğunuz dillerde geliştirmenin aksine, React Native proje geliştirmek için maliyetlerinizin artmasını önler.
Büyüyen geliştirici topluluğu
React Native, açık kaynaklı bir frameworktür ve topluluğu gelişiyor ve sürekli genişliyor . Sürekli olarak iyileştirmeler ve frameworkü genişleten unsurlar üzerinde çalıştıkları için Facebook’un katılımını unutamayız. Bunun sizin için anlamı, React Native’de henüz çözülmemiş bir sorunla karşılaşsanız bile, frameworkü daha kapsamlı ve istikrarlı hale getirmekle ilgilendikleri için size yardım etmeye istekli bir grup insan bulabilirsiniz.
React Native’in Eksileri
Nispeten genç bir teknoloji
React Native hala nispeten yeni ve daha önce de belirttiğimiz gibi, kesinlikle bazı sınırlamaları, aksaklıkları ve ele alınması gereken sorunları var. Frameworkte bazı özel modüller yoktur, bu da geliştiricilerin sıfırdan kendileri için yenilerini oluşturmaları ve oluşturmak için daha fazla zamana ihtiyaç duyabilecekleri anlamına gelir.
mobil geliştiricilere duyulan ihtiyaç
React Native’in en güçlü özelliği – daha iyi performans için işletim sistemi ekosistemine uygun kodları da uygulamak, zaman zaman React Native geliştiricilerinin, mobil uygulama geliştiricilerinin yardımına ihtiyaç duyabilecekleri anlamına gelir. Aynısı, uygulamayı AppStore ve Google Play Store’da yayınlamak için de geçerlidir. Tipik olarak, yerel mobil geliştiriciler, başarılı bir lansman için prosedüre ve gerekli belgelere daha aşinadır.
React Native ekibine yardım edebilecek ve platformlara özgü dillerde mobil geliştiricilerin bulunduğu bir ajansla işbirliği yapıyorsanız bu sorun olmayabilir. Ancak, yalnızca kendi platformlar arası ekibinizle çalışırken kesinlikle dikkate alınması gereken bir şeydir.
React Native, karmaşık tasarımlar ve yoğun etkileşimlerle verimli çalışamaz
React Native’in performansı, karmaşık UI tasarım kararları, karmaşık animasyonlar ve yoğun etkileşimlerle karşı karşıya kaldığında söner. Bir kez daha, bunun nedeni köprü kavramıdır – tüm yazılım modülleri uygulamanın JavaScript bölümü ile iletişim kurmak zorundadır ve bu tür etkileşimlerin çok fazla olması uygulamayı önemli ölçüde yavaşlatarak uygulamayı geciktirebilir ve yalnızca kötü bir deneyime neden olabilir.
Facebook’a güven
Üçüncü taraf açık kaynak teknolojisine güvenmenin kendine göre dezavantajları vardır. Facebook, teknolojiyi kullanmaktan vazgeçmeye karar verirse, başkalarının da ondan uzaklaşmasına neden olabilir. Şu an itibariyle, böyle bir şey söz konusu değil. Facebook, ana Facebook uygulamasında , Reklam Yöneticisi uygulamasında, Facebook Analytics’te ve Instagram’da React Native’i kullanıyor. Frameworkün topluluğu sürekli genişliyor ve yeni büyük şirketler oyuna giriyor.
Bununla birlikte, bu dikkat edilmesi gereken şey; platformalara ait yazılım teknolojileri, herhangi bir çapraz platform çözümüne kıyasla bu açıdan çok daha fazla destek ve geriye dönük uyumluluk sunar.
Platformlara özgü yazılım dillerinde geliştirilenlere yakın performans sunması ancak yine de yavaş olması
React Native performansının mevcut diğer platformlar arası çözümlerden daha üstün olduğunu anlatmıştık, ancak platformlara özgü uygulama geliştirmeye kıyasla hala bir şekilde daha yavaş. React Native’in uygulamanızın performansı üzerindeki etkisi en iyi şekilde geliştirme ekibinizle tartışılır. Mevcut uygulamaların çoğu için, uygulama çok fazla veri veya “köprü” ile etkileşimde bulunmak zorundaysa, bu büyüyebilecek bir soruna neden olabilir.
React Native ne için kullanılır?
React Native’i ne zaman kullanabileceğiniz veya kullanamayacağınız konusunda sektörle ilgili gerçek bir kısıtlama yoktur. Ana nokta, AR, VR gibi işletim sistemine özgü özelliklere ve entegrasyonlara çok fazla dayanmayan veya rekabet avantajı sağlamak için karmaşık tasarım veya animasyonlara ihtiyaç duymayan, müşteriye yönelik tüm uygulamalar için yeterince iyi bir framework olmasıdır. React Native, geliştirmelerini daha hızlı hale getiriyor ve şu an itibariyle kararlı bir uygulama oluşturmak için yeterli destek ve modüller sunuyor. Diğer bir avantaj, web uygulamanız React’te yazılmışsa, bir React Native mobil uygulaması oluşturmanın da daha kolay olmasıdır.
Çok sayıda büyük oyuncu, ürünlerinde aktif olarak React Native kullanıyor veya geçiş yapmaya karar verdi.
Facebook ve React Native – sosyal medya platformu
React Native kullanan şirketlerin listesi, nihai yaratıcısı Facebook olmasaydı eksik kalırdı. Amaçları, web geliştirmenin tüm zevklerini (hızlı yinelemeler, ürünü geliştirmek için tek bir ekip) mobil cihazlara getirmekti. Facebook ekibi bloglarında ilk olarak yalnızca bir öğeyi React Native’e (iOS için Facebook uygulamasındaki Etkinlikler sekmesi) nasıl dönüştürdüklerini açıkladı ve bu sayede başlangıç zamanını iki kat daha hızlı yapmayı başardılar. İyileştirmelerin framework düzeyinde yapılmış olması sayesinde, uygulama, React Native’in en son sürümüne geçiş yaparken otomatik olarak fayda sağlayacaktır.
Facebook’un React Native’e ayarlanan iOS ve Android uygulamalarının yanı sıra Facebook, Reklam Yöneticisini React Native kullanarak sıfırdan oluşturdu.
Instagram ve React Native – sosyal medya platformu
iOS ve Android için Facebook uygulamaları, React Native’e güvenen tek uygulama değil. Instagram, React Native’i 2016’da keşfetmeye başladı ve blog yazılarında, ürün ekiplerinin özellikleri hem iOS hem de Android’de daha hızlı göndermesine izin verdiğini de ifade ettiler.
Walmart & React Native – e-ticaret
Walmart, bir süpermarket zinciri işleten çok uluslu bir Amerikan perakende şirketidir. Uygulamaları çevrimiçi alışveriş, ürün arama, mağaza içi fiyat kontrolü sunar. Şu anda, uygulamalarında kullanılan kodun %95’i React Native ile yazılmıştır .
Bloomberg & React Native – içerik ve medya
Bloomberg, React Native gemisine oldukça erken atladı – 2016’da, yeni uygulamalarının ilk sürümünü piyasaya sürdüklerinde. Bloomberg uygulaması, kullanıcılara, günün belirli bir saatini yansıtan küratörlü haberlerin yanı sıra konumlarına göre kişiselleştirilmiş içeriğe erişim sağlar. Bu, React Native’i diğer Bloomberg uygulamalarında da uygulama planlarıyla hızla bir şirket geçişi haline geldi .
Tesla & React Native – eşlik eden bir uygulama
Tesla, React Native’i neden seçtiklerine dair pek fazla bilgi açıklamıyor. Uygulama, tüm Tesla araçları için bir asistan ve yol arkadaşı olarak hizmet vermektedir. Uygulama, hem Android hem de iOS cihazlarını araba ile senkronize eder ve neredeyse tüm Tesla özelliklerinin kontrol edilmesini ve izlenmesini sağlar.
Shopify – e-ticaret oluşturma platformu
Shopify kısa süre önce, iOS ve Android platformlarında uygulama deneyimini geliştirmeye ve iyileştirmeye yardımcı olacaklarını belirterek, React Native’in şirkette mobilin geleceği olduğunu duyurdu.
React Native için en iyi projeler
Bahsettiğimiz gibi, React Native kullanımı açısından sektöre özgü bir engel yoktur, her şey uygulamanızın temel özelliklerini ve rekabet avantajını oluşturmaya bağlıdır.
React Native, yalnızca yerinde performans sunduğundan ve (çoğu durumda) aynı hizmet veya ürüne sahip iki ayrı dilde uygulama oluşturmaktan daha kolay ve daha ucuz olduğundan, tüketiciye yönelik tüm uygulamalar için mükemmel bir çözümdür. Tüketiciye yönelik uygulamaların çoğu, React Native’i harika ve güvenilir bir çözüm haline getiren karmaşık animasyonlara ve kullanıcı arayüzleri kullanmayacağından (performans odaklı olarak) mantıklı bir tercih olacaktır.
İşletmelerinde React Native kullanan çeşitli sektörlerdeki şirketlerden bazıları:
- Sosyal ağlar– Instagram, Facebook Uygulaması, Discord, Pinterest
- Eğlence ve Gazetecilik– Vogue, Bloomberg
- B2B çözümleri– Salesforce, Shopify
- Hizmet uygulamaları– UberEats, Delivery.com
- Alışveriş– Walmart
Uygulamanızın başarısının büyük ölçüde geliştiricilerin becerilerine ve uzmanlığına bağlı olduğunu unutmayın. Platformlar arası uygulamanızı oluştururken, verilen teknolojide uygulamanız için tüm riskleri ve potansiyel fırsatları tahmin edebilecek bir ortak veya çalışma arkadaşı seçin. React Native ile, platformlara özgü dillerde uygulamalar oluşturma konusunda da deneyimin olması faydalı olacaktır.