1) Giriş
Mobil uygulama geliştirme süreçlerinde kullanıcı deneyimini doğrudan etkileyen en kritik konulardan biri state yönetimidir. Özellikle React Native (RN) gibi bileşen tabanlı framework’lerde state’in nasıl tutulduğu, güncellendiği ve paylaşıldığı; uygulamanın performansından bakım maliyetine kadar birçok alanı etkiler.
Yanlış kurgulanmış bir state yönetimi:
- Beklenmeyen UI davranışlarına
- Performans problemlerine
- Debug edilmesi zor hatalara
- Zamanla büyüyen teknik borca
neden olur. Buna karşılık doğru bir state yönetimi yaklaşımı, mobil uygulamanın ölçeklenebilir, öngörülebilir ve sürdürülebilir olmasını sağlar.
React Native ekosisteminde state yönetimi için çok sayıda yaklaşım ve araç bulunur. Ancak her proje için “tek doğru” yoktur. Uygulamanın kapsamı, kullanıcı sayısı, gerçek zamanlı ihtiyaçları ve ekip yapısı gibi faktörler state yönetimi kararlarını doğrudan etkiler.
Bu yazıda:
- Mobil uygulamalarda state kavramını
- React Native özelinde state yönetimi yaklaşımlarını
- Hangi senaryoda hangi yöntemin doğru olduğunu
- En sık yapılan hataları
- Ondokuzon’un pratikte benimsediği yaklaşımları
teknik doğruluğu koruyarak ama anlaşılır bir dille ele alacağız.
2) Temel Kavramlar
State yönetimini doğru anlayabilmek için önce temel kavramları netleştirmek gerekir.
State Nedir?
State, bir uygulamanın o anki durumunu temsil eden veridir. Kullanıcının yaptığı her etkileşim, uygulamanın state’ini değiştirir.
Örnekler:
- Kullanıcının giriş yapıp yapmadığı
- Sepetteki ürünler
- Açık/kapalı modal durumu
- API’den gelen veri
React Native’de state değiştiğinde, ilgili bileşenler otomatik olarak yeniden render edilir.
Local State vs Global State
Local State
- Tek bir bileşeni ilgilendirir
- Genellikle useState veya useReducer ile yönetilir
- Basit ve izole durumlar için idealdir
Global State
- Birden fazla ekran veya bileşen tarafından kullanılır
- Uygulama genelinde paylaşılır
- Redux, Context API, Zustand gibi çözümlerle yönetilir
Yanlış yerde global state kullanmak, uygulamayı gereksiz yere karmaşıklaştırır.
Prop Drilling Problemi
State, üst bileşenden alt bileşenlere props ile aktarılırken çok derin hiyerarşiler oluşabilir. Buna prop drilling denir.
Bu durum:
- Kod okunabilirliğini düşürür
- Bakımı zorlaştırır
Global state çözümleri genellikle bu problemi çözmek için kullanılır.
State vs Derived State
Her veri state olmak zorunda değildir. Bazı değerler mevcut state’lerden türetilmiş olabilir.
Yanlışlıkla her şeyi state yapmak:
- Gereksiz render’lara
- Karmaşık veri akışına
yol açar.
3) Teknik Derinlik
Bu bölümde React Native özelinde kullanılan state yönetimi yaklaşımlarını daha teknik bir perspektiften ele alıyoruz.
React Native’de Yerel State Yönetimi
useState
Basit durumlar için idealdir.
const [count, setCount] = useState(0);
Avantajları:
- Basit
- Okunabilir
- Hızlı geliştirme
Dezavantajları:
- Karmaşık state yapılarında yetersiz kalır
useReducer
Daha karmaşık state geçişleri için kullanılır.
const reducer = (state, action) => {
switch (action.type) {
case ‘increment’:
return { count: state.count + 1 };
default:
return state;
}
};
Avantajları:
- State geçişleri merkezi
- Daha öngörülebilir yapı
Context API (React Native’de)
Context API, global state ihtiyacı için React’in sunduğu yerleşik çözümdür.
Kullanım alanları:
- Tema yönetimi
- Dil ayarları
- Kullanıcı oturum bilgileri
Ancak Context:
- Büyük ve sık güncellenen state’ler için uygun değildir
- Yanlış kullanımda performans sorunları yaratabilir
Redux (RN Özelinde)
Redux, React Native projelerinde uzun yıllardır kullanılan güçlü bir state yönetimi çözümüdür.
Avantajları:
- Tek yönlü veri akışı
- Zaman yolculuğu (devtools)
- Büyük uygulamalar için ideal
Dezavantajları:
- Boilerplate fazlalığı
- Öğrenme eğrisi
Modern RN projelerinde genellikle Redux Toolkit tercih edilir.
Alternatifler: Zustand, Recoil, Jotai
Son yıllarda daha hafif çözümler öne çıkmıştır.
Zustand
- Minimal API
- Context + Redux arası bir yapı
- Performans odaklı
Recoil
- Atom bazlı state yönetimi
- Daha esnek yapı
Ondokuzon projelerinde bu çözümler, proje ölçeğine göre değerlendirilir.
En Sık Yapılan Hatalar
- Her şeyi global state yapmak
- Context’i Redux gibi kullanmak
- Async state yönetimini kontrolsüz yapmak
- State’i UI’dan ayırmamak
Bu hatalar zamanla ciddi teknik borca dönüşür.
4) Adım Adım Uygulama / Rehber Bölümü
Bu bölümde React Native projelerinde doğru state yönetimi yaklaşımını adım adım ele alıyoruz.
Adım 1: State Türlerini Belirleme
Önce şu sorular sorulmalıdır:
- Bu state sadece bu ekranı mı ilgilendiriyor?
- Başka ekranlar da kullanacak mı?
- Kalıcı mı, geçici mi?
Adım 2: Basitten Başlamak
İlk aşamada:
- useState
- useReducer
ile başlanmalı, erken optimizasyondan kaçınılmalıdır.
Adım 3: Global State Gereksinimini Analiz Etme
Aşağıdaki durumlarda global state mantıklıdır:
- Kullanıcı oturumu
- Sepet
- Uygulama ayarları
Adım 4: Async State ve API Yönetimi
API çağrıları state yönetiminin en kritik noktalarındandır.
Öneriler:
- Loading ve error state’lerini ayırmak
- Tek bir source of truth oluşturmak
Adım 5: Performans Testleri
State değişimleri:
- Gereksiz render’a yol açıyor mu?
- Memoization gerekli mi?
Bu sorular düzenli olarak kontrol edilmelidir.
5) Performans, Güvenlik ve Optimizasyon
State yönetimi doğrudan performansı etkiler.
Performans
- Gereksiz global state render maliyetlidir
- Selector’lar optimize edilmelidir
- Memo kullanımı dengeli olmalıdır
Güvenlik
- Hassas veriler (token vb.) state’te tutulmamalı
- Secure storage tercih edilmelidir
2025 Standartları
- Minimal global state
- Async state yönetimi net ayrılmış yapı
- UI ve business logic separation
- Performans ölçümleri (profiling)
6) Kullanılan Teknolojiler (Ondokuzon Perspektifi)
React Native
Ana mobil geliştirme çatımızdır.
React.js / Next.js
Web tarafındaki state yaklaşımlarıyla tutarlılık sağlanır.
Firebase
Gerçek zamanlı state senaryolarında dikkatli kullanım gerekir.
PHP / Laravel
Backend API’ler state mimarisini doğrudan etkiler.
Ondokuzon’da state yönetimi, frontend ve backend birlikte düşünülerek tasarlanır.
7) Sık Sorulan Sorular
Her RN projesinde Redux gerekli mi?
Hayır.
Context API yeterli mi?
Küçük projelerde evet.
Global state performansı düşürür mü?
Yanlış kullanılırsa evet.
Async state en zor kısım mı?
Genellikle evet.
State’i ne zaman refactor etmeliyim?
Büyüme başladığında.
Zustand production için uygun mu?
Evet, doğru kurgulanırsa.
State test edilebilir mi?
Evet, doğru ayrıştırılırsa.
8) Sonuç / Özet
Mobil uygulamalarda state yönetimi, sadece teknik bir tercih değil; ürünün geleceğini belirleyen mimari bir karardır. React Native projelerinde doğru state yönetimi yaklaşımı:
- Daha az bug
- Daha yüksek performans
- Daha sürdürülebilir kod
- Daha mutlu kullanıcılar
anlamına gelir.
Her projede ihtiyaçlar farklıdır. Bu nedenle state yönetimi çözümleri de ezbere seçilmemelidir. Ondokuzon olarak, React Native projelerinde state yönetimini; uygulamanın ölçeğini, ekibin deneyimini ve ürün hedeflerini birlikte değerlendirerek tasarlıyor, uzun vadede sürdürülebilir mimariler kurmaya odaklanıyoruz.

Yorum Bırak