React Native App-Ontwikkeling Gids 2026: Productie-Apps Bouwen en Sollicitatievragen
Uitgebreide gids voor React Native app-ontwikkeling in 2026 met Expo SDK 56, New Architecture, Hermes V1 en veelvoorkomende sollicitatievragen voor React Native ontwikkelaars.

React Native app-ontwikkeling in 2026 draait om de New Architecture, Expo SDK 56 en productierijpe tooling die het afgelopen jaar aanzienlijk is gerijpt. Deze gids behandelt de praktische workflow voor het bouwen van productie-apps en bespreekt veelvoorkomende sollicitatievragen die ervaren React Native ontwikkelaars onderscheiden.
De aanbevolen productie stack: Expo SDK 56 met EAS Build, React Native 0.85+, Hermes V1 engine en de New Architecture standaard ingeschakeld. Build-tijden daalden met 16% op iOS en 60% op Android vergeleken met SDK 55.
Een Productierijp React Native Project Opzetten
Een nieuw React Native project starten in 2026 betekent kiezen tussen Expo (aanbevolen) en bare React Native. Expo is geëvolueerd van een beginnersvriendelijke wrapper naar de officiële aanbeveling van het React Native team voor de meeste productie-apps.
# 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 newArchEnabledDe New Architecture, die Fabric, TurboModules en JSI omvat, elimineert de asynchrone JSON-bridge die prestatieproblemen veroorzaakte in complexe apps. JavaScript kan nu native modules synchroon aanroepen, waardoor een hele categorie timing-bugs verdwijnt.
{
"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 is de standaard geworden voor navigatie en brengt bestandsgebaseerde routing vergelijkbaar met Next.js. De /app mapstructuur wordt direct gemapt naar routes.
Hermes V1 Engine en JavaScript Prestaties
Hermes V1 werd uitgeleverd als de standaard JavaScript engine in React Native 0.84, ter vervanging van zowel JavaScriptCore als de oude Hermes. De nieuwe compiler en virtuele machine leveren snellere bytecode-uitvoering, lager geheugengebruik en betere verdeling van garbage collection pauzes.
// 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 precompileert JavaScript naar bytecode tijdens het buildproces. Dit elimineert JavaScript parsing tijdens runtime, wat een aanzienlijk deel van de app-opstarttijd uitmaakt. Productie builds zien 10-30% snellere Time to Interactive vergeleken met JSC.
Builds met EAS Build en Geoptimaliseerde Compilatie
EAS Build verzorgt productie builds in de cloud met caching, signing en distributie. SDK 56 introduceerde voorgecompileerde XCFrameworks voor Expo modules op iOS en een Kotlin compiler plugin voor Android die runtime reflection elimineert.
{
"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": {}
}
}De productie-app bouwen:
# 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 allDe precompiled headers functie voor Android (usePrecompiledHeaders in expo-build-properties) reduceerde CMake compilatietijden van 17 minuten naar 6 minuten in Expo's benchmarks.
Klaar om je React Native gesprekken te halen?
Oefen met onze interactieve simulatoren, flashcards en technische tests.
State Management en Data Fetching Patronen
Productie React Native apps combineren typisch TanStack Query voor server state met Zustand of Jotai voor client state. Deze scheiding houdt de codebase voorspelbaar en vermijdt de complexiteit van Redux voor de meeste use cases.
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() });
},
});
}Voor offline-first mogelijkheden kan TanStack Query gecombineerd worden met WatermelonDB of de ingebouwde SQLite ondersteuning via expo-sqlite:
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
}
}
}Animatiesysteem met React Native Reanimated 4
React Native 0.85 introduceerde een nieuwe animatie backend die aansluit bij de New Architecture. Reanimated 4 maakt hier volledig gebruik van en draait animaties op de UI thread zonder de JS bridge te passeren.
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>
);
}De worklet directive (impliciet in Reanimated 4 voor functies doorgegeven aan useAnimatedStyle) zorgt ervoor dat de animatielogica op de UI thread draait. Dit bereikt een consistente 120Hz verversingssnelheid op ondersteunde apparaten.
Sollicitatievragen voor React Native Ontwikkelaars
Technische sollicitaties voor React Native posities in 2026 richten zich sterk op de New Architecture, prestatie-optimalisatie en productie deployment. Meer React Native sollicitatievragen zijn beschikbaar om specifieke onderwerpen te oefenen.
Wat is er veranderd met de New Architecture en waarom is het belangrijk?
De New Architecture verving de asynchrone JSON bridge door JSI (JavaScript Interface), wat synchrone communicatie tussen JavaScript en native code mogelijk maakt. Drie componenten vormen de kern:
- JSI: Een C++ laag die JavaScript toestaat referenties naar native objecten te behouden en hun methodes direct aan te roepen
- Fabric: Het nieuwe rendering systeem dat synchrone layout metingen en concurrent rendering ondersteunt
- TurboModules: Native modules die lazy laden en communiceren via JSI in plaats van de bridge
De praktische impact: UI thread contention daalde met 10-30% in typische apps. Apps met intensief gebruik van native modules zien tot 3x verbetering in cross-thread call prestaties omdat serialisatie overhead wordt geëlimineerd.
Hoe verschilt Hermes V1 van JavaScriptCore?
Hermes V1 precompileert JavaScript naar bytecode tijdens build time, waardoor de parsing stap tijdens runtime wordt geëlimineerd. Belangrijke verschillen:
- Opstarttijd: Hermes slaat parsing over, wat de Time to Interactive met 10-30% vermindert
- Geheugen: Lager basisgeheugengebruik door geoptimaliseerde bytecode representatie
- Debugging: Hermes gebruikt het Chrome DevTools Protocol native, terwijl JSC een aangepaste adapter vereiste
- Garbage collection: Hermes gebruikt een generationele GC met kortere pauzetijden
De afweging: Hermes had historisch gezien langzamere piekuitvoeringssnelheid voor rekenintensieve code, hoewel V1 deze kloof aanzienlijk heeft verkleind.
Leg het verschil uit tussen useCallback, useMemo en React.memo in React Native
Alle drie zijn memoization tools, maar ze dienen verschillende doelen:
// 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>
);
});In React Native is React.memo bijzonder belangrijk voor lijst items die worden gerenderd door FlatList. Zonder dit wordt elk item opnieuw gerenderd wanneer de parent state verandert, wat frame drops veroorzaakt tijdens het scrollen.
Hoe wordt Deep Linking afgehandeld in een productie React Native app?
Deep Linking vereist configuratie op meerdere niveaus: native URL schemes, universal/app links en de 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 handelt parsing automatisch af wanneer de app mapstructuur overeenkomt met de URL paden. Voor aangepaste afhandeling:
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) en App Links (Android) vereisen server-side configuratie: respectievelijk een apple-app-site-association bestand en een assetlinks.json bestand, geserveerd vanaf het root domein.
Begin met oefenen!
Test je kennis met onze gespreksimulatoren en technische tests.
Belangrijkste Inzichten voor React Native Ontwikkeling in 2026
- De New Architecture is verplicht: de oude bridge werd uitgeschakeld in React Native 0.82 en 85% van de npm packages ondersteunt nu de nieuwe architectuur
- Expo SDK 56 met EAS Build biedt het snelste pad naar productie, met voorgecompileerde modules die iOS build tijden met 16% en Android CMake compilatie met 60% verminderen
- Hermes V1 is de standaard engine zonder configuratie nodig, met 10-30% snellere opstart vergeleken met JSC
- TanStack Query plus een lichtgewicht client state library (Zustand/Jotai) dekt de meeste productie data management behoeften zonder Redux complexiteit
- Reanimated 4 met de nieuwe animatie backend bereikt 120Hz animaties door volledig op de UI thread te draaien
- Sollicitatievoorbereiding moet focussen op JSI mechanismen, Fabric rendering, prestatie profiling met Hermes en productie deployment met EAS
Zie jij de bug in React Native?
Een echt codefragment, een verborgen bug, één poging per dag. Zonder account uit te proberen.

Geschreven door
Anthony Fillion-MailletOprichter van SharpSkill
Al meer dan 10 jaar fullstack-ontwikkelaar. Hij leidt SharpSkill en staat in voor alles wat hier verschijnt.
Bijgewerkt op 14 september 2026
Delen
Gerelateerde artikelen

React Native App-ontwikkeling 2026: Complete Gids en Sollicitatievragen
De complete gids voor React Native app-ontwikkeling in 2026. JSI, Fabric, New Architecture, performance-optimalisatie en veelgestelde sollicitatievragen voor ontwikkelaars.

React Native 0.87 en SwiftPM in 2026: Modern iOS Build Systeem en Sollicitatievragen
React Native 0.87 introduceert experimentele Swift Package Manager ondersteuning voor iOS builds. Deze gids behandelt SwiftPM configuratie, de Strict TypeScript API, Metro 0.87 optimalisaties en sollicitatievragen voor senior mobile developers.

Flutter vs React Native Performance Vergelijking: Benchmarks en Sollicitatievragen 2026
Vergelijk de performance van Flutter en React Native in 2026 met echte benchmarks. Impeller, New Architecture, frame rates, geheugenverbruik en veelgestelde sollicitatievragen.