React’i Neden Bırakıyorum?

Zafer Ayan
4 min readApr 1, 2023

Yıllardır sizin de bildiğiniz üzere React ve React Native üzerine içerikler üretiyorum. Ancak son dönemde React ekibinin aldığı kararlar ve React Native özelinde herhangi bir aksiyon alınmaması, React’e ciddi derecede soğumama neden oldu. Şimdi bu kısımları maddeler halinde açıklayacağım:

1. Öğrenim Eğrisi

React’e başlamamın temel nedenlerinden biri, library formunda olduğu için uygulama geliştirim sürecini olukça basitleştiriyordu. Sadece fonksiyonlarla yapılabilecek bir ekran kim istemezdi ki? Ayrıca class kullanılmadığında state yönetimi de oldukça kolay hale gelerek hook’ların yükselişini sağladı. Bu sayede hem class bileşenlerinden kurtulmuş, hem de basit bir uygulama geliştirme sürecinin kapılarını aralamış olduk.

Ancak son zamanlarda React ekibinin create-react-app’i öldürmesi ile birlikte oluşan kafa karışıklığı durumları iyice karmaşık hale getirmeye başladı. Halihazırda çok basit bir geliştirim imkanı sunan React, başlangıç olarak NextJS framework’ünün diretilmesi ile birlikte Angular framework’üne benzeyerek ciddi derecede öğrenim eğrisini arşa çıkardı.

React de artık Angular eğrisini bu seviyeye getirdi

2. State kütüphaneleri seçiminde karmaşa

React en basit haliyle veri üzerinden arayüz güncellemeyi sağlayan bir kütüphanedir diyebiliriz. Ancak global state yönetimi için belirli bir yol sunmadığından dolayı her ekip kendi state yönetim kütüphanesini geliştirmeye başladı. Bu kütüphaneler arasında bir fikir birliği bulunmadığı gibi, aynı işi yapan pek çok elemanın bir arada bulunması da kafaları karıştıran ayrı bir etmen niteliğinde.

Redux tarafında her ne kadar karmaşıklıklar giderilmesi için Redux Toolkit ortaya atılsa da, basitleştirmeden ziyade pek çok farklı sorunları da bir arada getirmeye başladı. Sıfırdan redux öğrenmek isteyen bir junior’ın izleyeceği yol 2 katına çıktı ve Redux öğrenmek isteyenler neredeyse ayrı bir framework öğrenmek zorunda kaldılar.

En iyi 25 adet state kütüphanesinden birini seçerken başarılar dilerim. Kaynal: Kaynak: https://fe-tool.com/en-us/awesome-react-state-management

3. React Native tarafındaki toolchain’in karmaşıklığı

React’i seçmemin en önemli nedenlerinden biri de mobil tarafta da uygulama geliştirimine olanak sağlamasıydı. Halihazırda cross-platform uygulama geliştirimi için Apache Cordova + Framework 7 ikilisini kullanan benim için dahi müthiş bir olaydı. Çünkü performanslı uygulama geliştirimi ve 60 FPS animasyonlarn daha eski cihazlarda çalışmasını sağlayan bir gelişim olarak lanse edildi. Tabii durum tam olarak böyle değildi.

React Native Bridge mimarisi bu şekildeydi.

React Native halihazırda bridge adlı bir ara yapı kullanarak JSON mesajlar aracılığıyla JS -> Native iletişimini sağlayan bir yapıya sahipti. Bu mimari her ne kadar basit ekranlarda hızlı çalışsa da, sayıları onbinleri bulan listeleri render etmekte zorlanıyordu. Bu nedenler 0.70 sonrasında bridge-i ortadan kaldırarak JSI (JavaScript Interface)mimarisini getirdiler.

Yeni React Mimarisi

JSI, altta yatan JS motoruna yapışık bir şekilde gelen isteklerin doğrudan karşılanmasını sağladı. Bu gerçekten de liste render edimindeki pek çok problemi de ortadan kaldırmış oldu.

Ancak sıfırdan başlayan geliştiriciler için kurulum süreci çok karmaşıklaşmaya başladı ve junior’ları Expo tarafına kaydırmaya çalıştılar. Ancak pek çok uygulama native modül gereksinimine sahip olduğu için, junior’lar da en nihayetinde karmaşık ekosistemi kurmak zorunda kaldı. Bu sistem işletim sistemi özelinde de farklılıklar gösterdiği için Android, XCode, VsCode gibi 3 farklı IDE kurulumu ve beraberinde geliştirim ortamının sağlanması oldukça zor bir hal almaya başladı.

4. React Native’in hala 1.0 sürümüne gelememiş olması

Bu neden de aslında bir önceki maddenin destekleyicisi niteliğinde diyebilirim. Flexbox Gap bile React Native’in çıkışından 8 sene sonra 0.70 sürümünde tanıtılmış iken tutarlı uygulamalar yapmak da iyice zorlaşmaya baslıyor. Üstelik versiyonlar arasındaki geçiş o kadar sert ki 0.70'te kullandığınız bir özelliği 0.69'da kullanamayabiliyorsunuz.

Tabii bu duruma antitez olarak Lorenzo Sciandra’nın 1.0 is a Lie videosunu izleyebilirsiniz. Seçim size kalmış:

Sonuç olarak

Artık React geliştirmek yerine halihazırda düzgün bir yapı sunan Angular’a geçmeye karar verdim. Angular her ne kadar zor gibi görünse de aslında bir kere öğrendikten sonra oldukça basit bir geliştirim yöntemi sunuyor. Verilerin nasıl yönetileceği, routing’in nasıl yapılacağı gibi pek çok konu zaten hazır olarak geldiği için, mimari tarafında zaman kaybetmeden sadece business geliştirimine odaklanıyorsunuz.

Mobil desktop her platforma geliştirim seçeneği sunması da büyük bir artı niteliğinde.

Bu yazımda eksik/hatalı olduğunu düşündüğünüz kısımlar varsa bana ulaşabilirsiniz. Sonraki yazımda tekrar görüşmek üzere…

--

--