Frontend & Web

React Native 0.75 ve Expo 52: Daha Ucuz, Stabil Cross-Platfo

120 bin kullanıcıya ulaşan bir üretim uygulamasını %38 daha düşük geliştirme maliyetiyle yayınlamak rüya gibi. Meğer yeni React Native, Expo ve Firebase yığını bunu gerçeğe dönüştürmüş.

{# Always render the hero — falls back to the theme OG image when article.image_url is empty (e.g. after the audit's repair_hero_images cleared a blocked Unsplash hot-link). Without this fallback, evergreens with cleared image_url render no hero at all → the JSON-LD ImageObject loses its visual counterpart and LCP attrs go missing. #}
React Native, Expo ve Firebase logolarının entegre edildiğini temsil eden bir ekran görüntüsü veya grafik.

Key Takeaways

  • React Native 0.75, Expo 52 ve Firebase 11 ile olağanüstü uygulama kararlılığı (%99.2 çökme oranı olmayan) ve önemli maliyet tasarrufu (%38 daha düşük geliştirme maliyeti) sağlanabiliyor.
  • React Native 0.75'teki yeni bridgeless mimarisi, JS-native gecikmesini büyük ölçüde azaltırken, Expo 52'nin EAS Build'i CI/CD sürelerini önemli ölçüde kısaltıyor.
  • Ekip uzmanlığı ve ekosistem sinerjisi, ham çerçeve yeteneklerinden daha ağır basabilen, başarılı cross-platform geliştirmenin kritik faktörleri.

Yüzde doksan dokuz virgül iki çökme oranı olmayan oturum. Bunu bir sindirin. İstikrarın genellikle bir hayal olduğu bir sektörde, altı kişilik bir ekibin React Native 0.75, Expo 52 ve Firebase 11 üzerinde bir cross-platform uygulama geliştirerek elde ettiği bu rakam, muazzam bir başarı. Bu sadece sıradan bir teknoloji güncellemesi değil; uygulamaları ölçekte inşa etme şeklimizi değiştirecek, önceden karmaşık görünen çoklu platform hedeflerini aniden heyecan verici derecede ulaşılabilir kılan bir devrim. Bu projenin arkasındaki ekip sadece bir uygulama inşa etmekle kalmamış, aynı zamanda mobil ve web geliştirmenin geleceği için bir vaka çalışması tasarlamış.

Bu geriye dönük inceleme geçici bir trendle ilgili değil. Temel bir platform ilerlemesiyle ilgili. Geliştirme iş akışlarını yeniden şekillendiren, karmaşık, çoklu platform hedeflerini aniden, heyecan verici derecede ulaşılabilir hissettiren türden bir sıçramadan bahsediyoruz. Bu projenin arkasındaki insanlar sadece bir uygulama yapmamış; mobil ve web geliştirmenin geleceği için bir vaka çalışması tasarlamışlar.

Rakamlar Yalan Söylemez: Doğrudan Karşılaştırma

Hype’ı bir kenara bırakalım. Buradaki veriler çarpıcı. 2024 3. Çeyrek boyunca, ekibin seçtiği yığın—React Native 0.75, Expo 52 ve Firebase 11—aylık 120.000 aktif kullanıcıya sahip bir uygulama sundu ve birçok native geliştiricinin kıskançlıktan gözleri yaşaracağı bir çökme oranıyla övündü. Bunu Flutter 3.22 projeleriyle karşılaştırın: özellik başına %38 daha yüksek geliştirme maliyeti. Bu durum, özellikle sınırlı kaynaklara sahip girişimler ve çevik ekipler için devasa anlamlar taşıyor.

Ve sadece maliyet tasarrufu değil. React Native 0.75’in yeni bridgeless mimarisi bir oyun değiştirici; eski sürümlere kıyasla kıyaslamalarında bildirilen %42’lik bir oranla JS-native gecikmesini büyük ölçüde azaltıyor. Bu, kullanıcıların uygulamayı neden aniden bu kadar hızlı hissettiklerini tam olarak ifade edemeseler bile hissedecekleri türden bir performans artışı.

Expo 52 de geri kalmıyor; EAS Build 12.4 ile Android App Bundle derleme sürelerini önemli ölçüde, %31 oranında azaltıyor. CI/CD darboğazlarıyla boğuşan ekipler için bu, trafiğin tıkandığı bir otoyolda hızlı şerit bulmak gibi. Peki Firebase 11? Modüler SDK’sı optimizasyon konusunda bir ustalık dersi sunuyor ve üretim paketinden 18.7KB tasarruf sağlıyor—izole edildiğinde mütevazı bir rakam, ancak verimlilik için devam eden çabanın bir kanıtı.

Bu Yığın Neden Yarışı Kazandı?

Bu yeni ekosisteme dalmadan önce ekip ödevini yapmıştı. Dört haftalık yoğun bir dönemde, Flutter 3.22’yi AWS Amplify ile, Native Swift/Kotlin’i Firebase ile ve eski bir React Native kurulumunu seçtikleri yığına karşı denediler. Değerlendirme kriterleri lazer odaklıydı: özellik başına geliştirme maliyeti, pazara çıkış süresi, üretim stabilitesi ve bulut harcamaları. Flutter, yetenekli olmasına rağmen, React bilgisine sahip mühendisleri için daha dik bir öğrenme eğrisi gerektirdi ve geliştirme maliyetlerini %22 artırdı. Native geliştirme? Bu, özellik başına maliyetlerini ikiye katlardı ve dreaded ayrı iOS ve Android ekiplerine bölünmeyi zorunlu kılardı. Firebase 11 ayrıca BaaS için Supabase 2.10’u geride bıraktı, öncelikle Expo’nun derleme işlem hattıyla üstün entegrasyonu sayesinde CI/CD yapılandırmasında önemli bir %40 tasarruf sağladı. Raporlama? Firebase Crashlytics, önceki araçları Sentry’ye kıyasla %15 daha doğru çökme bilgisi sundu ve hata ayıklama olayı başına 3 saat tasarruf sağladı.

Bireysel bileşenlerin güçlü rakipleri olabileceği açık, ancak bu özel kombinasyonun sinerjisi gerçek ayırıcı faktördü. Her enstrümanın kendi rolünü çaldığı ancak asıl sihrin birlikte çaldıklarında ortaya çıktığı mükemmel ayarlanmış bir orkestra gibi.

İnsan Faktörü: Deneyim Önemlidir

Teknik detaylarda kaybolmak kolaydır, ancak makale kritik, sıklıkla gözden kaçan bir faktörü vurguluyor: ekip uzmanlığı. Ekibin mevcut React deneyimi önemli bir rüzgar oldu. Bu, diğer çerçevelerin güçlü olmadığı anlamına gelmez; bu, araçları kullanan insanların araçlar kadar önemli olduğunu hatırlatır. Yeni bir çerçeve tanıtmak, zaman yatırımı gerektirir ve küçük bir ekip için bu yatırımın hızlı bir şekilde geri ödeme yapması gerekir. Bu durumda, mevcut React Native ve Expo becerilerinden yararlanmak anında getiri sağladı.

Geliştirmenin Geleceğine Bir Bakış

Veriler net bir eğilimi gösteriyor: Expo tarafından yönetilen iş akışları hakim olmaya hazırlanıyor. Dahili bir anket, 2026 yılına kadar cross-platform uygulamaların %70’inin bu yılki %42’den Expo’yu benimseyeceğini öngörüyor. Bu sadece kolaylık değil; kodlamadan dağıtıma ve ötesine kadar tüm geliştirme yaşam döngüsünü kolaylaştırmak için tasarlanmış bilinçli bir ekosistemle ilgili. Altta yatan karmaşıklığın çoğunu soyutlayan daha entegre, tercihlerine bağlı geliştirme ortamlarına doğru bir hareketi simgeliyor.

Bu, yapay zekanın temel bir platform kayması olduğu bir çağ. Artık niş araçlardan bahsetmiyoruz; yazılım yaratımının temel dokusunu değiştiren temel teknolojilerden bahsediyoruz. React Native, doğru ekosistemle eşleştirildiğinde, bu yeni manzarada zorlu bir rakip olarak ortaya çıkıyor. Sadece native’e bir alternatif olmanın ötesine geçerek, birinci sınıf performans ve geliştirici hızı sunabilen birinci sınıf bir vatandaş haline geliyor. Hız veya kalite arasında seçim yapma günleri hızla soluyor.

Bu yığının tek dezavantajı, React Native 0.75’in bridgeless mimarisinin hala isteğe bağlı olması ve bazı üçüncü taraf native modüllerin henüz uyumlu olmaması—ancak popüler React Native kütüphanelerinin %90’ının 2024 3. Çeyrek itibarıyla bridgeless uyumlu sürümleri olduğunu bulduk.

Bu alıntı çok şey anlatıyor. Küçük bir büyüme sancısı kabul ediyor—isteğe bağlı bir özellik, uyumluluk hala olgunlaşıyor—ancak hemen bunu ezici bir olumluyla bağlamlıyor: ekosistemin büyük çoğunluğu zaten orada. Bu bir zayıflık işareti değil; hızla ve sağlıklı bir şekilde genişleyen bir ekosistemin işaretidir. Bridgeless mimarisi tam olarak yaygınlaştığında, React Native’in performans tacını daha da sağlamlaştıracaktır. Bu, bir ekosistemin ivme kazandığının sesidir.

Kod Hakkında Ne Diyebiliriz?

Firebase kimlik doğrulama kurulum kodunun dahil edilmesi akıllıca bir hamle, geliştiricilerin bu hizmetleri nasıl entegre ettiğine dair somut bir örnek sunuyor. Özellikle ortam değişkenlerinin hassas yapılandırma (@env) için kullanılması ve yerelde expo-secure-store ile web’de varsayılan tarayıcı kalıcılığı kullanarak kimlik doğrulama durumu için platforma özgü kalıcılığın kullanılmasıyla Expo 52 için en iyi uygulamaları sergiliyor. Bu pratik kesit, soyut tartışmayı somut uygulamaya dayandırıyor.

```javascript // React, Expo, Firebase 11’den gerekli modülleri içe aktarın import React, { createContext, useContext, useState, useEffect, useCallback } from ‘react’; import { initializeAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword, signOut, onAuthStateChanged, updateProfile, sendPasswordResetEmail } from ‘firebase/auth’; import { initializeApp, getApps } from ‘firebase/app’; import { Platform } from ‘react-native’; import * as SecureStore from ‘expo-secure-store’; import { EXPO_PUBLIC_FIREBASE_API_KEY, EXPO_PUBLIC_FIREBASE_PROJECT_ID } from ‘@env’;

// Ortam değişkenlerini kullanan Firebase yapılandırması (Expo 52 en iyi pratik) const firebaseConfig = { apiKey: EXPO_PUBLIC_FIREBASE_API_KEY, authDomain: ${EXPO_PUBLIC_FIREBASE_PROJECT_ID}.firebaseapp.com, projectId: EXPO_PUBLIC_FIREBASE_PROJECT_ID, storageBucket: ${EXPO_PUBLIC_FIREBASE_PROJECT_ID}.appspot.com, messagingSenderId: ‘our-messaging-sender-id’, // OSS örneği için sansürlendi appId: ‘our-app-id’, // OSS örneği için sansürlendi };

// Firebase uygulaması yalnızca daha önce başlatılmadıysa başlatılır (hot reload sorunlarını önler) const app = getApps().length === 0 ? initializeApp(firebaseConfig) : getApps()[0];

// Platforma özgü kalıcılık ile kimlik doğrulamayı yapılandırın (Expo 52) // React Native 0.75, iOS/Android için SecureStore’u, web için localStorage’ı destekler let auth; if (Platform.OS === ‘web’) { auth = initializeAuth(app, { // Web varsayılan olarak tarayıcı kalıcılığını kullanır }); } else { // Native, uygulama yeniden başlatmalarında kalıcı kimlik doğrulama için Expo SecureStore’u kullanır const { getReactNativePersistence } = require(‘firebase/auth’); auth = initializeAuth(app, { persistence: getReactNativePersistence(SecureStore), }); }

// Kimlik doğrulama bağlamının şeklini tanımlayın const AuthContext = createContext({ user: null, isLoading: true, signUp: async (email, password, displayName) => {}, signIn: async (email, password) => {}, signOut: async () => {}, resetPassword: async (email) => {}, error: null, });

// Tam hata işleme ve yükleme durumuyla kimlik doğrulama sağlayıcısı bileşeni


🧬 İlgili İçgörüler

Written by
DevTools Feed Editorial Team

Curated insights, explainers, and analysis from the editorial team.

Worth sharing?

Get the best Developer Tools stories of the week in your inbox — no noise, no spam.

Originally reported by dev.to