React Native Uygulama Geliştirme Rehberi 2026: Prodüksiyon Uygulamaları ve Mülakat Soruları
2026 yılında React Native ile prodüksiyon uygulamaları geliştirmenin kapsamlı rehberi. Expo SDK 56, EAS Build, Hermes V1, Yeni Mimari ve React Native geliştiricileri için mülakat hazırlığı.

2026 yılında React Native uygulama geliştirme, Yeni Mimari, Expo SDK 56 ve son bir yılda önemli ölçüde olgunlaşan prodüksiyon araçları üzerine odaklanmaktadır. Bu rehber, prodüksiyon uygulamaları oluşturmak için pratik iş akışını kapsamakta ve deneyimli React Native geliştiricilerini ayırt eden yaygın mülakat sorularını ele almaktadır.
Önerilen prodüksiyon stack: EAS Build ile Expo SDK 56, React Native 0.85+, Hermes V1 motoru ve varsayılan olarak etkinleştirilmiş Yeni Mimari. Derleme süreleri SDK 55'e kıyasla iOS'ta %16 ve Android'de %60 düştü.
Prodüksiyona Hazır React Native Projesi Kurulumu
2026'da yeni bir React Native projesi başlatmak, Expo (önerilen) ve bare React Native arasında seçim yapmayı gerektirmektedir. Expo, başlangıç seviyesine uygun bir wrapper'dan çoğu prodüksiyon uygulaması için React Native ekibinin resmi önerisine dönüşmüştür.
# Create a new Expo project with SDK 56
npx create-expo-app@latest my-production-app
cd my-production-app
# Verify the New Architecture is enabled (default since RN 0.76)
npx expo config --type introspect | grep newArchEnabledFabric, TurboModules ve JSI'yi içeren Yeni Mimari, karmaşık uygulamalarda performans darboğazlarına neden olan asenkron JSON köprüsünü ortadan kaldırmaktadır. JavaScript artık native modülleri senkron olarak çağırabilmekte ve bu durum zamanlama hatalarının tüm bir kategorisini elimine etmektedir.
{
"expo": {
"name": "MyProductionApp",
"slug": "my-production-app",
"version": "1.0.0",
"newArchEnabled": true, // Default in SDK 56
"android": {
"package": "com.company.myproductionapp",
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#ffffff"
}
},
"ios": {
"bundleIdentifier": "com.company.myproductionapp",
"supportsTablet": true
},
"plugins": [
"expo-router"
]
}
}Expo Router, Next.js'e benzer dosya tabanlı routing getirerek navigasyon standardı haline gelmiştir. /app dizin yapısı doğrudan route'lara eşlenmektedir.
Hermes V1 Motoru ve JavaScript Performansı
Hermes V1, React Native 0.84'te varsayılan JavaScript motoru olarak gönderilmiş, hem JavaScriptCore'u hem de eski Hermes'i değiştirmiştir. Yeni derleyici ve sanal makine, daha hızlı bytecode yürütme, daha düşük bellek ayak izi ve daha iyi garbage collection duraklatma dağılımı sunmaktadır.
// Performance monitoring with Hermes V1
// HermesInternal is available globally when running on Hermes
declare global {
var HermesInternal: {
getRuntimeProperties: () => Record<string, unknown>;
enableSamplingProfiler: () => void;
disableSamplingProfiler: () => string;
} | undefined;
}
export function checkHermesStatus(): boolean {
const isHermes = typeof HermesInternal === 'object' && HermesInternal !== null;
if (isHermes && __DEV__) {
const props = HermesInternal.getRuntimeProperties();
console.log('Hermes version:', props['OSS Release Version']);
console.log('Bytecode version:', props['Bytecode Version']);
}
return isHermes;
}Hermes V1, derleme işlemi sırasında JavaScript'i bytecode'a ön derlemektedir. Bu, çalışma zamanında JavaScript ayrıştırmasını ortadan kaldırır ki bu uygulama başlatma süresinin önemli bir bölümünü oluşturur. Prodüksiyon derlemeleri, JSC'ye kıyasla %10-30 daha hızlı Time to Interactive elde etmektedir.
EAS Build ve Optimize Edilmiş Derleme ile Oluşturma
EAS Build, önbellekleme, imzalama ve dağıtım ile bulutta prodüksiyon derlemelerini yönetmektedir. SDK 56, iOS'ta Expo modülleri için önceden derlenmiş XCFramework'ler ve Android'de çalışma zamanı yansımasını ortadan kaldıran bir Kotlin derleyici eklentisi tanıttı.
{
"cli": {
"version": ">= 15.0.0"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": {
"simulator": true
}
},
"preview": {
"distribution": "internal",
"ios": {
"resourceClass": "m-medium"
},
"android": {
"buildType": "apk"
}
},
"production": {
"ios": {
"resourceClass": "m-large"
},
"android": {
"buildType": "app-bundle"
},
"env": {
"EXPO_USE_PRECOMPILED_MODULES": "1"
}
}
},
"submit": {
"production": {}
}
}Prodüksiyon uygulamasını derleme:
# Build for iOS App Store
eas build --platform ios --profile production
# Build for Google Play
eas build --platform android --profile production
# Submit to stores after build
eas submit --platform allAndroid için önceden derlenmiş başlıklar özelliği (expo-build-properties'de usePrecompiledHeaders), Expo'nun benchmark'larına göre CMake derleme sürelerini 17 dakikadan 6 dakikaya düşürmüştür.
React Native mülakatlarında başarılı olmaya hazır mısın?
İnteraktif simülatörler, flashcards ve teknik testlerle pratik yap.
State Yönetimi ve Veri Çekme Kalıpları
Prodüksiyon React Native uygulamaları tipik olarak sunucu state'i için TanStack Query'yi istemci state'i için Zustand veya Jotai ile birleştirmektedir. Bu ayrım, kod tabanını öngörülebilir tutmakta ve çoğu kullanım durumu için Redux karmaşıklığından kaçınmaktadır.
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { api } from '@/lib/api';
import type { Product } from '@/types';
// Query key factory for type-safe cache management
export const productKeys = {
all: ['products'] as const,
lists: () => [...productKeys.all, 'list'] as const,
list: (filters: ProductFilters) => [...productKeys.lists(), filters] as const,
details: () => [...productKeys.all, 'detail'] as const,
detail: (id: string) => [...productKeys.details(), id] as const,
};
export function useProducts(filters: ProductFilters) {
return useQuery({
queryKey: productKeys.list(filters),
queryFn: () => api.products.list(filters),
staleTime: 5 * 60 * 1000, // 5 minutes
gcTime: 30 * 60 * 1000, // 30 minutes (formerly cacheTime)
});
}
export function useCreateProduct() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (data: CreateProductInput) => api.products.create(data),
onSuccess: () => {
// Invalidate list queries to refetch
queryClient.invalidateQueries({ queryKey: productKeys.lists() });
},
});
}Çevrimdışı öncelikli yetenekler için TanStack Query'yi WatermelonDB veya expo-sqlite aracılığıyla yerleşik SQLite desteği ile birleştirilmelidir:
import * as SQLite from 'expo-sqlite';
import NetInfo from '@react-native-community/netinfo';
const db = SQLite.openDatabaseSync('app.db');
export async function initializeOfflineStorage() {
await db.execAsync(`
CREATE TABLE IF NOT EXISTS pending_mutations (
id TEXT PRIMARY KEY,
type TEXT NOT NULL,
payload TEXT NOT NULL,
created_at INTEGER NOT NULL
);
`);
}
export async function queueMutation(type: string, payload: object) {
const id = crypto.randomUUID();
await db.runAsync(
'INSERT INTO pending_mutations (id, type, payload, created_at) VALUES (?, ?, ?, ?)',
[id, type, JSON.stringify(payload), Date.now()]
);
}
export async function syncPendingMutations() {
const state = await NetInfo.fetch();
if (!state.isConnected) return;
const pending = await db.getAllAsync<PendingMutation>(
'SELECT * FROM pending_mutations ORDER BY created_at ASC'
);
for (const mutation of pending) {
try {
await processMutation(mutation);
await db.runAsync('DELETE FROM pending_mutations WHERE id = ?', [mutation.id]);
} catch (error) {
console.error('Sync failed for mutation:', mutation.id);
break; // Stop on first failure to maintain order
}
}
}React Native Reanimated 4 ile Animasyon Sistemi
React Native 0.85, Yeni Mimari ile uyumlu yeni bir animasyon backend'i tanıttı. Reanimated 4 bundan tam olarak yararlanarak animasyonları JS köprüsünü geçmeden UI thread'inde çalıştırmaktadır.
import Animated, {
useSharedValue,
useAnimatedStyle,
withSpring,
withTiming,
interpolate,
Extrapolation,
} from 'react-native-reanimated';
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
const SWIPE_THRESHOLD = 120;
export function SwipeableCard({ onSwipe, children }: SwipeableCardProps) {
const translateX = useSharedValue(0);
const opacity = useSharedValue(1);
const panGesture = Gesture.Pan()
.onUpdate((event) => {
translateX.value = event.translationX;
})
.onEnd((event) => {
if (Math.abs(event.translationX) > SWIPE_THRESHOLD) {
const direction = event.translationX > 0 ? 'right' : 'left';
translateX.value = withTiming(
direction === 'right' ? 500 : -500,
{ duration: 200 }
);
opacity.value = withTiming(0, { duration: 200 }, () => {
onSwipe(direction);
});
} else {
translateX.value = withSpring(0, {
damping: 15,
stiffness: 150,
});
}
});
const animatedStyle = useAnimatedStyle(() => ({
transform: [
{ translateX: translateX.value },
{
rotate: `${interpolate(
translateX.value,
[-200, 0, 200],
[-15, 0, 15],
Extrapolation.CLAMP
)}deg`,
},
],
opacity: opacity.value,
}));
return (
<GestureDetector gesture={panGesture}>
<Animated.View style={animatedStyle}>
{children}
</Animated.View>
</GestureDetector>
);
}worklet direktifi (Reanimated 4'te useAnimatedStyle'a geçirilen fonksiyonlar için örtük), animasyon mantığının UI thread'inde çalışmasını sağlamaktadır. Bu, desteklenen cihazlarda tutarlı 120Hz yenileme hızı elde etmektedir.
React Native Geliştiricileri İçin Mülakat Soruları
2026'da React Native pozisyonları için teknik mülakatlar, Yeni Mimari, performans optimizasyonu ve prodüksiyon dağıtımına yoğun şekilde odaklanmaktadır. Belirli konularda pratik yapmak için ek React Native mülakat soruları incelenmelidir.
Yeni Mimari neyi değiştirdi ve neden önemli?
Yeni Mimari, asenkron JSON köprüsünü JSI (JavaScript Interface) ile değiştirerek JavaScript ve native kod arasında senkron iletişimi mümkün kılmıştır. Üç bileşen çekirdeği oluşturmaktadır:
- JSI: JavaScript'in native nesnelere referans tutmasına ve metodlarını doğrudan çağırmasına olanak tanıyan C++ katmanı
- Fabric: Senkron layout ölçümlerini ve eşzamanlı render'ı destekleyen yeni render sistemi
- TurboModules: Köprü yerine JSI üzerinden iletişim kuran ve lazy yüklenen native modüller
Pratik etki: UI thread çekişmesi tipik uygulamalarda %10-30 düştü. Yoğun native modül kullanan uygulamalar, serileştirme yükü ortadan kalktığı için thread'ler arası çağrı performansında 3 kata kadar iyileşme görmektedir.
Hermes V1 JavaScriptCore'dan nasıl farklıdır?
Hermes V1, derleme zamanında JavaScript'i bytecode'a ön derleyerek çalışma zamanında ayrıştırma adımını ortadan kaldırmaktadır. Temel farklılıklar:
- Başlatma süresi: Hermes ayrıştırmayı atlayarak Time to Interactive'i %10-30 azaltmaktadır
- Bellek: Optimize edilmiş bytecode gösterimi sayesinde daha düşük temel bellek kullanımı
- Hata ayıklama: Hermes, Chrome DevTools Protocol'ü native olarak kullanırken JSC özel bir adaptör gerektirmekteydi
- Garbage collection: Hermes, daha kısa duraklama süreleriyle generasyonel GC kullanmaktadır
Odun: Hermes tarihsel olarak hesaplama yoğun kod için daha yavaş zirve yürütme hızına sahipti, ancak V1 bu farkı önemli ölçüde kapatmıştır.
React Native'de useCallback, useMemo ve React.memo arasındaki farkı açıklayın
Her üçü de memoization araçlarıdır ancak farklı amaçlara hizmet etmektedir:
// useCallback: memoizes a function reference
const handlePress = useCallback(() => {
navigation.navigate('Detail', { id: item.id });
}, [item.id, navigation]);
// useMemo: memoizes a computed value
const sortedItems = useMemo(() => {
return items.slice().sort((a, b) => a.price - b.price);
}, [items]);
// React.memo: memoizes a component's render output
const ProductCard = React.memo(function ProductCard({ product, onPress }: Props) {
return (
<Pressable onPress={onPress}>
<Text>{product.name}</Text>
</Pressable>
);
});React Native'de React.memo, FlatList tarafından render edilen liste öğeleri için özellikle önemlidir. Bu olmadan, parent state değiştiğinde her öğe yeniden render olur ve kaydırma sırasında kare düşüşlerine neden olur.
Prodüksiyon React Native uygulamasında deep linking nasıl yönetilir?
Deep linking, birden fazla katmanda yapılandırma gerektirir: native URL şemaları, universal/app links ve JavaScript router.
{
"expo": {
"scheme": "myapp",
"ios": {
"associatedDomains": ["applinks:myapp.com"]
},
"android": {
"intentFilters": [
{
"action": "VIEW",
"autoVerify": true,
"data": [
{
"scheme": "https",
"host": "myapp.com",
"pathPrefix": "/product"
}
],
"category": ["BROWSABLE", "DEFAULT"]
}
]
}
}
}Expo Router, app dizin yapısı URL yollarıyla eşleştiğinde ayrıştırmayı otomatik olarak yönetmektedir. Özel yönetim için:
import { useURL } from 'expo-linking';
import { useEffect } from 'react';
import { router } from 'expo-router';
export default function RootLayout() {
const url = useURL();
useEffect(() => {
if (url) {
const parsed = parseDeepLink(url);
if (parsed.requiresAuth && !isAuthenticated) {
// Store intended destination, redirect to login
router.replace('/login');
}
}
}, [url]);
return <Slot />;
}Universal links (iOS) ve App Links (Android), sunucu tarafı yapılandırması gerektirir: kök domain'den sunulan apple-app-site-association dosyası ve assetlinks.json dosyası.
Pratik yapmaya başla!
Mülakat simülatörleri ve teknik testlerle bilgini test et.
2026'da React Native Geliştirme İçin Temel Çıkarımlar
- Yeni Mimari zorunludur: eski köprü React Native 0.82'de devre dışı bırakıldı ve npm paketlerinin %85'i artık yeni mimariyi desteklemektedir
- EAS Build ile Expo SDK 56, önceden derlenmiş modüllerle iOS derleme sürelerini %16 ve Android CMake derlemesini %60 kısaltarak prodüksiyona en hızlı yolu sağlamaktadır
- Hermes V1, yapılandırma gerektirmeden varsayılan motordur ve JSC'ye kıyasla %10-30 daha hızlı başlatma sunmaktadır
- TanStack Query artı hafif bir istemci state kütüphanesi (Zustand/Jotai), Redux karmaşıklığı olmadan çoğu prodüksiyon veri yönetimi ihtiyacını karşılamaktadır
- Reanimated 4 yeni animasyon backend'i ile tamamen UI thread'inde çalışarak 120Hz animasyonlar elde etmektedir
- Mülakat hazırlığı JSI mekaniği, Fabric render'ı, Hermes ile performans profilleme ve EAS ile prodüksiyon dağıtımına odaklanmalıdır
React Native kodundaki hatayı bulabilir misin?
Gerçek bir kod parçası, gizli bir hata, günde bir deneme. Denemek için hesap gerekmez.

Yazan:
Anthony Fillion-MailletSharpSkill kurucusu
10 yılı aşkın süredir fullstack geliştirici. SharpSkill’i yönetiyor ve burada yayımlanan her şeyden sorumlu.
14 Eylül 2026 tarihinde güncellendi
Etiketler
Paylaş
İlgili makaleler

2026'da React Native Yeni Mimari: Hermes V1, Bridgeless Mod ve Mülakat Soruları
React Native Yeni Mimari 2026'da Hermes V1, Bridgeless Mod, TurboModules ve Fabric ile varsayılan olarak gelir. Performans kazanımları, geçiş kalıpları ve temel mülakat soruları hakkında kapsamlı inceleme.

React Native 0.84'te Hermes V1: Performans, Ön Derlenmiş Bytecode ve Mülakat Soruları
React Native 0.84'te Hermes V1 performans optimizasyonlarına derinlemesine bakış: bytecode ön derleme, Hades GC, bellek yönetimi ve mobil geliştiriciler için temel mülakat soruları.

React Native ve TypeScript 2026: Tip-Güvenli Mimari ve Mülakat Soruları
TypeScript, Codegen, TurboModule ve Strict TypeScript API ile tip-güvenli React Native uygulamaları oluşturma. Mimari pattern'ler, typed navigasyon, 0.87 toolchain gereksinimleri ve mülakat sorularını kapsıyor.