React Native oder Flutter? Diese Frage stellen sich viele Teams beim Start eines Mobile-Projekts. In diesem detaillierten Vergleich zeigen wir Stärken, Schwächen und konkrete Use Cases beider Frameworks.
Technologie-Übersicht
React Native
- Sprache: JavaScript/TypeScript
- UI: Native Components
- Bridge: JavaScript Bridge
- Release: 2015 (Meta)
- Apps: Facebook, Instagram, Discord
Flutter
- Sprache: Dart
- UI: Custom Render Engine (Skia)
- Performance: Compiled zu Natice Code
- Release: 2018 (Google)
- Apps: Google Pay, BMW, Alibaba
Performance-Vergleich
React Native Performance
// React Native - JavaScript Thread
import { FlatList, Text } from 'react-native'
function ProductList({ products }) {
return (
<FlatList
data={products}
renderItem={({ item }) => (
<Text>{item.name}</Text>
)}
// Performance Optimierung nötig
keyExtractor={item => item.id}
getItemLayout={(data, index) => ({
length: 80,
offset: 80 * index,
index,
})}
/>
)
}
Performance:
- ⚡ 60 FPS möglich
- ⚠️ JavaScript Bridge Overhead
- ✅ Hermes Engine verbessert Performance
- ❌ Complex Animations können ruckeln
Flutter Performance
// Flutter - Compiled zu Native
import 'package:flutter/material.dart';
class ProductList extends StatelessWidget {
final List<Product> products;
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: products.length,
itemBuilder: (context, index) {
return Text(products[index].name);
},
// Automatisch optimiert
);
}
}
Performance:
- ⚡ 120 FPS möglich
- ✅ Kein Bridge Overhead
- ✅ Smooth Animations out-of-the-box
- ✅ Consistent Performance
Benchmark (Real Device):
- Scroll Performance: Flutter 15% schneller
- Startup Time: React Native 20% schneller
- Memory Usage: Ähnlich (~150 MB)
Developer Experience
React Native DX
Vorteile:
// ✅ Bekannte Syntax (React)
function App() {
const [count, setCount] = useState(0)
return (
<View>
<Text>Count: {count}</Text>
<Button onPress={() => setCount(c => c + 1)} />
</View>
)
}
- ✅ JavaScript/TypeScript (bekannt)
- ✅ Große Community (React Entwickler)
- ✅ Hot Reload
- ✅ npm Ecosystem
- ❌ Native Code für komplexe Features
Flutter DX
Vorteile:
// Dart Syntax (Java-ähnlich)
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
int count = 0;
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Count: $count'),
ElevatedButton(
onPressed: () => setState(() => count++),
child: Text('Increment'),
),
],
);
}
}
- ✅ Hot Reload
- ✅ Starke Typisierung
- ✅ Alles in Dart (weniger Bridges)
- ❌ Dart Lernkurve
- ❌ Kleinere Community
Ecosystem & Packages
React Native
- npm Packages: 2 Millionen+
- React Native Packages: ~10.000
- Navigation: React Navigation, React Native Navigation
- State: Redux, Zustand, MobX
- UI: React Native Paper, Native Base
Flutter
- pub.dev Packages: 50.000+
- Navigation: Built-in Navigator 2.0
- State: Riverpod, Provider, Bloc
- UI: Material Design & Cupertino (built-in)
Code-Sharing
React Native + Next.js
// Shared Business Logic
// packages/shared/src/api.ts
export async function fetchProducts() {
const res = await fetch('/api/products')
return res.json()
}
// React Native App
import { fetchProducts } from '@shared/api'
// Next.js Web App
import { fetchProducts } from '@shared/api'
Code-Sharing: 70-90% zwischen Web & Mobile
Flutter Web
// Gleicher Code für Mobile & Web
class ProductList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: fetchProducts(),
builder: (context, snapshot) {
return ListView(/* ... */);
},
);
}
}
Code-Sharing: 95-100%
Native Features
React Native Native Modules
// React Native - Native Code nötig
import { NativeModules } from 'react-native'
const { BiometricAuth } = NativeModules
// Custom Native Module in Java/Swift
async function authenticate() {
return await BiometricAuth.authenticate()
}
Flutter Platform Channels
// Flutter - Platform Channel
import 'package:flutter/services.dart';
class BiometricAuth {
static const platform = MethodChannel('biometric');
Future<bool> authenticate() async {
return await platform.invokeMethod('authenticate');
}
}
Use Cases
Wann React Native?
✅ Ideal wenn:
- Team kennt React/JavaScript
- Web-App existiert (Code-Sharing)
- Schnelle Iterationen wichtig
- Community-Support kritisch
- Native Look wichtig
Beispiel-Apps:
- Social Media Apps
- E-Commerce Apps
- Content-Apps
- Prototype/MVP
Wann Flutter?
✅ Ideal wenn:
- Performance kritisch
- Custom UI/Animations
- Web + Mobile aus einem Code
- Konsistentes Look wichtig
- Game-ähnliche Apps
Beispiel-Apps:
- Fintech Apps
- Gaming Apps
- IoT Dashboards
- Design-heavy Apps
Migration & Interop
React Native → Native
// Schrittweise Migration möglich
// Einzelne Screens als Native
import { NativeModules } from 'react-native'
NativeModules.NavigationManager.pushNativeScreen('Profile')
Flutter → Native
// Flutter in Native einbetten
// Add to Screen ist möglich
FlutterViewController controller = FlutterViewController();
// Add to Native Navigation
Build & Deploy
React Native
# iOS Build
cd ios && pod install
pnpm run ios
# Android Build
pnpm run android
# Release Build
pnpm run build:ios
pnpm run build:android
Flutter
# iOS Build
flutter run -d ios
# Android Build
flutter run -d android
# Release Build
flutter build ios --release
flutter build apk --release
Build Time: Flutter ~30% schneller
Team & Hiring
React Native
- Developers verfügbar: Sehr viele
- Hiring: Einfach (React kennen viele)
- Kosten: Mittel
- Learning Curve: Niedrig (für React Devs)
Flutter
- Developers verfügbar: Weniger
- Hiring: Schwieriger
- Kosten: Höher (Spezialisierung)
- Learning Curve: Mittel-Hoch
Kosten-Vergleich
Entwicklungskosten (Durchschnitt):
React Native App:
- Entwicklung: 40.000 - 80.000 €
- Maintenance: 1.000 - 2.000 €/Monat
Flutter App:
- Entwicklung: 45.000 - 90.000 €
- Maintenance: 1.200 - 2.500 €/Monat
Native Apps (iOS + Android):
- Entwicklung: 80.000 - 150.000 €
- Maintenance: 2.000 - 4.000 €/Monat
Unsere Empfehlung
Wählen Sie React Native wenn:
- Ihr Team React/JS kennt
- Sie eine Web-App haben
- Sie schnell starten wollen
- Native Look wichtig ist
- Community-Support kritisch ist
Wählen Sie Flutter wenn:
- Performance kritisch ist
- Custom UI/Animations nötig
- Web + Mobile geplant
- Konsistente UX wichtig
- Sie langfristig planen
Zusammenfassung
React Native:
- ✅ Große Community
- ✅ JavaScript/TypeScript
- ✅ Code-Sharing mit Web
- ❌ Performance-Limits
- ❌ More native code needed
Flutter:
- ✅ Beste Performance
- ✅ Custom UI einfach
- ✅ Single Codebase
- ❌ Kleinere Community
- ❌ Dart Lernkurve
Beide sind exzellent - Wahl hängt von Team & Projekt ab.
App-Entwicklung Beratung?
Als Mobile-Spezialisten helfen wir:
- 📱 Framework-Auswahl für Ihr Projekt
- 💻 Cross-Platform Development
- 🚀 MVP Development (4-8 Wochen)
- 🔄 Migration Native → Cross-Platform
Aktualisiert: Januar 2024