Mobil uygulama yapmak istiyorsunuz. İlk soru kaçınılmaz: iOS ve Android için ayrı ayrı mı geliştireceğiz, yoksa tek kod tabanıyla mı? Bu kararı doğru vermek, bütçenizi ve teslim sürenizi doğrudan etkiliyor.
Kısa Cevap
Çoğu iş uygulaması için: React Native veya Flutter. Grafik-yoğun oyunlar veya donanım erişimi kritikse: Native.
Ama tabii ki gerçek bu kadar basit değil. Detaylara girelim.
Cross-Platform Seçenekleri
React Native
Meta’nın JavaScript tabanlı framework’ü. 2015’ten bu yana olgunlaştı ve büyük şirketler (Facebook, Shopify, Discord) production’da kullanıyor.
Güçlü yanları:
- Web geliştirici ekipleriniz hızla adapte olur
- Dev kodu paylaşımı (web + mobil)
- Büyük ekosistem ve topluluk
Zayıf yanları:
- Performans kritik animasyonlarda native’e göri geri kalır
- Metro bundler bazen acı verebilir
- “Köprü mimarisi” bazı native özellikleri karmaşıklaştırır
// React Native örnek
import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
import Animated, {
useSharedValue,
useAnimatedStyle,
withSpring,
} from 'react-native-reanimated';
export function AnimatedButton({ onPress, label }) {
const scale = useSharedValue(1);
const animatedStyle = useAnimatedStyle(() => ({
transform: [{ scale: scale.value }]
}));
return (
<Animated.View style={animatedStyle}>
<TouchableOpacity
onPressIn={() => (scale.value = withSpring(0.95))}
onPressOut={() => (scale.value = withSpring(1))}
onPress={onPress}
>
<Text>{label}</Text>
</TouchableOpacity>
</Animated.View>
);
}
Flutter
Google’ın Dart tabanlı framework’ü. Son 3 yılda ciddi ivme kazandı.
Güçlü yanları:
- Pixel-perfect UI kontrolü (kendi render engine’i: Skia/Impeller)
- Animasyon performansı mükemmel
- Web ve masaüstü desteği de var
Zayıf yanları:
- Dart öğrenme eğrisi (JavaScript ekipleri için)
- Bazı native SDK entegrasyonları zor
- APK boyutu React Native’e göre büyük
// Flutter örnek
class AnimatedButton extends StatefulWidget {
final VoidCallback onPressed;
final String label;
const AnimatedButton({
required this.onPressed,
required this.label,
});
@override
State<AnimatedButton> createState() => _AnimatedButtonState();
}
class _AnimatedButtonState extends State<AnimatedButton>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
late Animation<double> _scale;
@override
void initState() {
super.initState();
_controller = AnimationController(
duration: const Duration(milliseconds: 150),
vsync: this,
);
_scale = Tween(begin: 1.0, end: 0.95).animate(
CurvedAnimation(parent: _controller, curve: Curves.easeInOut),
);
}
@override
Widget build(BuildContext context) {
return ScaleTransition(
scale: _scale,
child: ElevatedButton(
onPressed: widget.onPressed,
child: Text(widget.label),
),
);
}
}
Native: Swift & Kotlin
Platform özelliklerine tam erişim, en yüksek performans. Ancak maliyet iki katı.
Ne zaman native?
- ARKit / ARCore yoğun kullanımı
- Bluetooth LE / health sensör entegrasyonu
- Çok karmaşık custom animasyonlar (60+ FPS kritik)
- App Store/Play Store öne çıkarma stratejisi (platform uyumu avantajı)
Karar Matrisi
| Kriter | React Native | Flutter | Native |
|---|---|---|---|
| İlk geliştirme maliyeti | Düşük | Düşük | Yüksek |
| UI özelleştirme | Orta | Yüksek | Tam |
| Performans | İyi | Çok iyi | Mükemmel |
| Ekip büyüklüğü | 1-2 dev | 1-2 dev | 2-4 dev |
| Web kodu paylaşımı | Evet | Kısmen | Hayır |
| Bakım maliyeti | Düşük | Düşük | Yüksek |
Peki Expo?
React Native geliştirmeyi hızlandıran meta-framework. Başlangıç için neredeyse her zaman öneriyoruz:
- OTA (over-the-air) güncellemeler — App Store onayı beklemeden hata düzeltme
- EAS Build — CI/CD altyapısı dahil
- SDK’lar kolayca entegre edilir
Expo ile başlayın, platform özelliğine ihtiyaç duyduğunuzda “bare workflow”a geçin.
Gerçek Proje Karşılaştırması
Aynı özellikleri farklı teknolojilerle geliştirdiğimizde gördüğümüz süre farkı:
| Özellik | Native (iOS+Android) | React Native | Flutter |
|---|---|---|---|
| Auth sistemi | 3 hafta | 1 hafta | 1 hafta |
| Liste ekranları | 2 hafta | 3 gün | 3 gün |
| Kamera entegrasyonu | 1 hafta | 2 gün | 3 gün |
| Custom animasyonlar | 1 hafta | 1 hafta | 3 gün |
| Toplam MVP | ~12 hafta | ~6 hafta | ~6 hafta |
Maliyet farkı gerçek: Native için iki ayrı geliştirici gereksinimi, proje bütçesini %60-80 artırabilir.
Tavsiyemiz
MVP için React Native + Expo ile başlayın. Ekibiniz büyürse ve platform özgü animasyon/donanım gereksinimi ortaya çıkarsa Flutter veya Native’e geçişi değerlendirin.
Uygulamanız için en doğru teknolojiyi seçmek için ücretsiz bir görüşme yapabilirsiniz. İletişime geçin →