Development Tools
React Native heeft verschillende tools om je te helpen bij het ontwikkelen en debuggen van je app.
Belangrijkste DevTools:
- Expo Go: Test je app op je telefoon
- Developer Menu: Toegang tot debug opties
- Console.log: Print waarden naar de console
- Remote Debugging: Debug in Chrome DevTools
- Element Inspector: Inspecteer UI elementen
Expo Go App
Met de Expo Go app kun je je React Native app direct op je telefoon testen zonder te publiceren.
Installatie
Download Expo Go:
- iOS: Download van de App Store
- Android: Download van Google Play Store
App Starten
# Start development server
npx expo start
# Of met specifieke opties
npx expo start --clear # Clear cache
npx expo start --tunnel # Voor testing via internet
Verbinden met Expo Go
Methode 1: QR Code Scannen
- Start je app met
npx expo start - Open Expo Go op je telefoon
- Scan de QR code in de terminal
Methode 2: Zelfde WiFi Netwerk
- Zorg dat laptop en telefoon op hetzelfde WiFi zitten
- Start je app met
npx expo start - Druk op 'a' voor Android of 'i' voor iOS
Problemen met verbinden?
- Zorg dat laptop en telefoon op hetzelfde WiFi netwerk zitten
- Probeer
npx expo start --tunnel - Check of firewall de connectie blokkeert
Console.log Debugging
De simpelste manier om te debuggen is met console.log().
Basis Console.log
import { useEffect } from 'react';
export default function App() {
const [count, setCount] = useState(0);
// Log bij component mount
useEffect(() => {
console.log('Component gemount!');
}, []);
// Log bij state change
useEffect(() => {
console.log('Count is nu:', count);
}, [count]);
return (
<View>
<Text>Count: {count}</Text>
</View>
);
}
Console Methodes
// Normale log
console.log('Dit is een log');
// Waarschuwing (geel)
console.warn('Dit is een waarschuwing');
// Error (rood)
console.error('Dit is een error');
// Info
console.info('Dit is info');
// Object/Array printen
const user = { name: 'Jan', age: 25 };
console.log('User:', user);
// Meerdere waarden
console.log('Name:', user.name, 'Age:', user.age);
Waar Console Output te Zien
Console logs zijn te zien in:
- Terminal: Waar je
npx expo starthebt uitgevoerd - Chrome DevTools: Als je Remote Debugging aan hebt staan
- Expo Go App: Shake telefoon → "Show Dev Menu" → "Debug"
Remote Debugging
Voor geavanceerder debuggen kun je Chrome DevTools gebruiken.
Chrome DevTools Openen
- Open Developer Menu (shake telefoon of Cmd + D)
- Klik op "Debug Remote JS"
- Chrome opent automatisch met DevTools
Breakpoints Gebruiken
import { useState } from 'react';
import { View, Pressable, Text } from 'react-native';
export default function App() {
const [count, setCount] = useState(0);
const increment = () => {
debugger; // Pauze hier!
setCount(count + 1);
};
return (
<View>
<Text>{count}</Text>
<Pressable onPress={increment}>
<Text>+</Text>
</Pressable>
</View>
);
}
Chrome DevTools Features:
- Console: Zie alle console.log() outputs
- Sources: Bekijk je code en zet breakpoints
- Network: Zie API calls (werkt beperkt)
- Application: Bekijk AsyncStorage (beperkt)
Let op: Remote debugging maakt je app langzamer! Gebruik alleen tijdens development.
Element Inspector
Met de Element Inspector kun je UI elementen inspecteren en hun styles bekijken.
Inspector Activeren
- Open Developer Menu
- Klik op "Toggle Element Inspector"
- Tik op een element in je app
- Zie de styles en layout info
Inspector toont:
- Component naam en hiërarchie
- Alle toegepaste styles
- Layout info (width, height, margin, padding)
- Flexbox layout eigenschappen
Layout Animatie Inspecteren
Zie hoe layout veranderingen worden geanimeerd:
- Open Developer Menu
- Enable "Debug Chrome"
- In Chrome DevTools: More Tools → Rendering
- Enable "Paint Flashing"
Debug Tips & Tricks
1. Fast Refresh
Fast Refresh herlaadt automatisch je app bij code wijzigingen.
// Als Fast Refresh niet werkt, forceer reload:
// Developer Menu → Reload
2. Error Boundaries
Vang errors op in je app:
import { Component } from 'react';
class ErrorBoundary extends Component {
state = { hasError: false };
static getDerivedStateFromError(error) {
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
console.log('Error:', error);
console.log('Error Info:', errorInfo);
}
render() {
if (this.state.hasError) {
return <Text>Er ging iets mis!</Text>;
}
return this.props.children;
}
}
3. Performance Monitor
Zie FPS en memory gebruik:
- Open Developer Menu
- Klik op "Show Perf Monitor"
- Zie RAM, JS heap, Views, UI/JS FPS
4. Network Debugging
Debug API calls met Reactotron (third-party tool):
npm install --save-dev reactotron-react-native
5. Veelgemaakte Fouten
Typische fouten en oplossingen:
- Red screen: JavaScript error, check de stack trace
- Yellow box: Warning, meestal veilig te negeren maar check wel
- White screen: Check console.log voor errors bij app start
- App crasht: Check terminal voor native errors
6. Handige Shortcuts
| Actie | Shortcut |
|---|---|
| Reload app | r in terminal |
| Open Developer Menu | Cmd + D (iOS) / Cmd + M (Android) |
| Clear cache | npx expo start --clear |
Samenvatting
Expo Go
Test op je telefoon
Developer Menu
Debug opties & tools
Console.log
Simpelste debug methode
Element Inspector
Inspecteer UI elementen
Je hebt nu geleerd:
- Expo Go gebruiken om te testen op je telefoon
- Developer Menu openen en gebruiken
- Console.log voor simpel debuggen
- Remote debugging met Chrome DevTools
- Element Inspector voor UI debugging
- Handige tips en shortcuts