Native vs Cross-Platform
Native iOS/Android development versus cross-platform Flutter, React Native, KMP: performance, time-to-market, hiring, and which strategy fits your product.
Skia/Impeller tabanlı, pixel-perfect cross-platform UI
JavaScript/TypeScript ile native bileşenler, web developer'lar için tanıdık
Cross-platform mobile development'in iki dev oyuncusu — Google'ın 2017'de tanıttığı Flutter (Dart, custom rendering engine) ve Meta'nın 2015'te tanıttığı React Native (JavaScript/TypeScript, native bridge) — 2026'da hâlâ kıyasıya rekabet ediyor. Flutter Stack Overflow Developer Survey 2024'te %48 'most loved framework' kategorisinde, React Native ise dünya genelinde ~38K aktif iş ilanıyla en çok aranan cross-platform skill. Yüzeysel benzerlik aldatıcı: Flutter custom Skia/Impeller rendering ile her platforma kendi pixel'lerini çiziyor, React Native ise gerçek native UIView/Android View component'lerini JavaScript bridge ile yönetiyor. Bu temel mimari farkı performans, look-and-feel ve geliştirici deneyimini kökten etkiliyor. 2024'te iki framework de büyük güncellemeler aldı: Flutter 3.27 Impeller varsayılan + Web/Wasm production-ready, React Native 0.76 New Architecture (Fabric + TurboModules) varsayılan oldu. Bu karşılaştırma flutter.dev resmi docs, reactnative.dev resmi docs, Flutter Engage 2024, React Conf 2024 talks, Stack Overflow Developer Survey 2024, JetBrains State of Developer Ecosystem 2024 ve 12+ yıllık production mobile deneyimine dayanmaktadır.
Flutter'ın temel devrimi 'self-contained rendering engine' yaklaşımıdır. iOS ve Android'in kendi UI kit'lerini bypass eder; Skia (eski) veya Impeller (yeni) ile her piksel'i kendi çizer. Sonuç: %100 platform-eşit görünüm — iPhone ve Android'de aynı pixel-perfect UI. Trade-off: native widget'ları taklit etmek (Cupertino + Material) gerekir, gerçek native değil. React Native ise gerçek native UIView (iOS) ve android.view.View (Android) component'leri JavaScript bridge ile yönetir. JavaScript thread'inde React reconciler çalışır, bridge üzerinden native UI thread'ine update gönderir. Sonuç: gerçek native widget'lar, native look-and-feel out-of-the-box. Trade-off: bridge overhead — eski mimaride frame drop'lar yaşanırdı. 2024'te bu fark daraldı: React Native New Architecture (Fabric C++ renderer + TurboModules JSI direkt çağrı) bridge'i tamamen kaldırdı. Sonuç: 60fps stabilite her ikisinde de mümkün, ancak Flutter'ın Impeller'ı her platformda Metal/Vulkan native API kullandığı için en hızlı kalmaya devam ediyor.
Flutter'ın 'Stateful Hot Reload' özelliği endüstrinin en hızlı iterative development tool'larından biri. Dart VM'inin sıcak takasıyla widget tree'yi rebuild eder, state korunur. Tipik değişiklik 200-500ms'de UI'a yansır. React Native 'Fast Refresh' (2019+) benzer deneyim sağlar — Metro bundler dosya değişikliğini detect eder, JS bundle'ı incremental yeniden yükler. State preservation iyileştirildi 0.61+ ile. Pratik fark: Flutter hot reload daha güvenilir ve hızlı (Dart compile-once + VM swap), Fast Refresh JavaScript ekosisteminin natürel hot module replacement geleneği üzerine kurulu — bazen state senkronizasyon problemleri oluşabilir. IDE deneyimi: Flutter VS Code + IntelliJ + Android Studio first-class destek, DevTools widget inspector güçlü. React Native VS Code + Flipper (2024'te Reactotron/Expo DevTools'a kayıyor) + React Devtools. Apple WWDC 2024'te Xcode 16'nın React Native debugging desteği iyileştirildi.
2024 production benchmark'ları (Reso Coder + Flutter Engage 2024 + React Conf 2024): Flutter cold start 1.2-1.8s (iOS 13 Pro), React Native 1.5-2.3s (New Architecture). Frame rendering 60fps stable her ikisinde de basit listelerde. Karmaşık animasyonlarda Flutter Impeller %15-25 daha tutarlı (Skia'dan %60 jitter azalmıştı). Memory footprint Flutter ~80-120MB tipik, React Native ~100-150MB (JS heap + native overhead). Bundle size: Flutter iOS app ~7MB, Android ~8MB (Skia engine inline); React Native ~20-30MB (Hermes engine + JavaScript core). Hermes (Meta'nın JS engine'i, RN 0.70+ default) JS startup'ı ~30% hızlandırdı, V8 yerine bytecode pre-compilation. Production seçenek: Flutter UI-heavy animation/game-like apps için ideal, React Native data-driven business apps için yeterli (Shopify, Discord production). Apple Q1 2026 rapor: App Store top 100'de Flutter 12, React Native 18 app.
Flutter ekosistemi pub.dev üzerinde 50K+ Dart paketi. Top paketler: provider (state, 6k★), riverpod (state, 7k★), bloc (state, 12k★), dio (HTTP, 12k★), cached_network_image (5k★), get_it (DI, 2k★), flutter_hooks (3k★). Google ve Flutter team kendi 'Material Components for Flutter' ve 'Cupertino Components' kütüphanelerini bakım modundan çıkarıp aktif geliştirmeye aldı (2024). React Native npm üzerinde 2.5M+ paket — JavaScript dünyasının tüm ekosistemi (TypeScript, Lodash, RxJS, etc) doğrudan kullanılabilir. Native module'ler için: react-native-reanimated 3.x (animation, 8k★), react-native-gesture-handler (5k★), react-native-svg (10k★), react-native-mmkv (storage, 5k★). Expo (RN için meta-framework) 50.x (2024) production-grade oldu — EAS Build cloud build, Expo Router file-based routing, Expo Modules native module API. RN npm avantajı şu: backend ve frontend kütüphaneler paylaşılabilir (validation lib, API client). Flutter Dart-only — backend için server-side Dart (shelf framework) gerekiyor.
Flutter Platform Channels ile native (Swift/Objective-C, Kotlin/Java) kod çağırır. Method channels, event channels, basic message channels — typed serialization (JSON, primitive types). Flutter 3.7+ (2023) Pigeon code generator native binding kodunu otomatik üretiyor — type-safe iOS+Android+Flutter binding. React Native New Architecture (Fabric + TurboModules) JSI (JavaScript Interface) ile native modülleri direkt çağırır — bridge yok, sync mümkün. C++ TurboModules platform-bağımsız native logic için ideal (örn. encryption, video codec). Production senaryo: bir kütüphanenin native build'i gerekiyorsa (örn. ML model inference, custom hardware integration), Flutter Pigeon ile 1-2 saatte binding oluşturulur; React Native TurboModules + Codegen ile benzer sürede. Apple WWDC 2024'te Vision Pro / visionOS native development için React Native (native bridge) Flutter'dan önde — Meta resmi visionOS bridge yayınladı 2024 Q4.
LinkedIn İş İlanları 2026 Q1: React Native ~38K küresel pozisyon, Flutter ~22K. Türkiye özelinde kariyer.net Flutter 720+, React Native 1100+ ilan. Stack Overflow Developer Survey 2024: React Native %12.8 'used and want to use again' (loved oranı %48), Flutter %8.7 'used and want to use again' (loved oranı %66 — daha sevilen ama az kullanılan). JetBrains State of Developer Ecosystem 2024: Flutter %12 mobile dev'in birincil tercih (2020'den %4 büyüme), React Native %16 (2020'den stabil). Kotlin Multiplatform (KMP) yeni rakip — 2024'te %180 büyüme, ama 2026'da hâlâ ~%4 mobile dev'in birincil tercih. Production örneği: Shopify Mobile 2020'de RN'a tam geçiş — 200+ developer scale. Google Pay 2018-2024 arası Flutter migration tamamladı (130M+ kullanıcı, 1M+ LOC). Sonuç: eğer JavaScript/TypeScript ekibi varsa RN doğal seçim; greenfield project + UI consistency öncelik ise Flutter; iOS+Android shared business logic + native UI istiyorsan KMP.
| Özellik | Flutter | React Native |
|---|---|---|
| İlk yayın yılı | 2017 (Google I/O) | 2015 (Facebook) |
| Resmi destekleyen | Meta + community | |
| Programlama dili | Dart | JavaScript / TypeScript |
| Render mimarisi | Custom (Skia/Impeller, GPU direct) | Native bridge (gerçek UIView/View) |
| Cold start (iOS) | ~1.2-1.8s | ~1.5-2.3s (New Architecture ile) |
| Frame rendering 60fps | Stable Impeller (Metal/Vulkan native) | Stable Fabric (New Architecture) |
| Memory footprint | ~80-120MB | ~100-150MB |
| Bundle size (iOS) | ~7MB | ~20-30MB (Hermes + JS) |
| Hot reload | Stateful (200-500ms, en hızlı) | Fast Refresh (incremental) |
| Native API erişimi | Platform Channels + Pigeon | JSI + TurboModules (sync mümkün) |
| Ekosistem büyüklüğü | pub.dev 50K+ paket | npm 2.5M+ paket (genel JS) |
| Web destek | Flutter Web stable + Wasm | React Native Web (3rd party Expo) |
| Desktop destek (macOS/Win/Linux) | Stable beta | Microsoft React Native Windows/macOS |
| İş ilanı sayısı (LinkedIn 2026) | ~22K | ~38K |
| Stack Overflow 2024 'loved' | %66 | %48 |
Flutter, Google'ın 2017 Google I/O'da tanıttığı open-source UI toolkit. Eric Seidel ve ekip tarafından 2014'te 'Sky' adıyla başlatıldı, 2018 stable 1.0 sürümü. Dart programlama dili (Google, 2011) ile yazılır — JIT geliştirme zamanı + AOT production compilation. Custom rendering engine: Skia (2D graphics, 2017-2023) ve Impeller (Metal/Vulkan, 2023+) GPU'da pixel'leri direkt çizer — native UI kit'lerini bypass eder. Sonuç %100 platform-eşit görünüm. iOS, Android, Web, macOS, Windows, Linux, Embed (Toyota infotainment) destekleniyor. Flutter 3.27 (Aralık 2024) Wasm production-ready, Material 3 Expressive variant. 2026'da App Store top 100'de 12 Flutter app. Apache 2.0 lisanslı, Google ekosistemi (Firebase, Google Maps, Google Pay) first-class entegre.
React Native, Facebook (şimdi Meta) tarafından 2015'te tanıtıldı — Jordan Walke (React.js yaratıcısı) liderliğinde. 'Learn once, write anywhere' felsefesi: web React bilgisi mobil'e direkt uygulanır. JavaScript/TypeScript + JSX syntax. Native bridge mimarisi: JavaScript thread + native UI thread, message-based bridge ile iletişim. 2024'te radikal mimari değişim: New Architecture (Fabric C++ renderer + TurboModules JSI) RN 0.76'da default — bridge tamamen kaldırıldı, sync method calls mümkün. Hermes JavaScript engine (Meta, RN 0.70+ default) V8 yerine bytecode pre-compilation, mobile için optimize. Microsoft React Native Windows + macOS active development, Meta visionOS bridge 2024 Q4. Expo (RN için meta-framework) 50.x EAS Build cloud, Expo Router file-based, production-grade. MIT lisanslı.
Google Pay 2018-2024 arası native iOS+Android'den Flutter'a tam migration. 1M+ LOC.
BMW yeni mobile app'ini Flutter ile yazdı (2023+). Premium müşteri deneyimi.
eBay otomobil platformu Flutter ile rebuild edildi (2021+).
Alibaba ikinci el platformu Flutter'ı production-grade adopte etti.
ByteDance bazı TikTok bağlantılı app'leri Flutter ile yazdı.
Meta kendi ürünlerinde RN kullanıyor — Marketplace, Ads Manager, Workplace bazı feature'lar.
Shopify 2020'de tüm mobile'ı RN'a taşıdı. 200+ developer scale, native'in 3x verimliliği.
Discord 2018'den beri RN kullanıyor. New Architecture early adopter.
Microsoft Office Mobile RN core team'i destekliyor. Windows/macOS RN aktif geliştirme.
Coinbase 2021'de native'den RN'a tam migration. New Architecture pioneer.
// Flutter - Animasyonlu ürün kartı
import 'package:flutter/material.dart';
class ProductCard extends StatefulWidget {
final String productName;
final double price;
final String imageUrl;
const ProductCard({
super.key,
required this.productName,
required this.price,
required this.imageUrl,
});
@override
State<ProductCard> createState() => _ProductCardState();
}
class _ProductCardState extends State<ProductCard>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
late Animation<double> _scaleAnimation;
@override
void initState() {
super.initState();
_controller = AnimationController(
duration: const Duration(milliseconds: 200),
vsync: this,
);
_scaleAnimation = Tween<double>(begin: 1.0, end: 0.95).animate(
CurvedAnimation(parent: _controller, curve: Curves.easeInOut),
);
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTapDown: (_) => _controller.forward(),
onTapUp: (_) => _controller.reverse(),
child: AnimatedBuilder(
animation: _scaleAnimation,
builder: (context, child) => Transform.scale(
scale: _scaleAnimation.value,
child: Card(
child: Column(
children: [
Image.network(widget.imageUrl, height: 200, fit: BoxFit.cover),
Padding(
padding: const EdgeInsets.all(16),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(widget.productName, style: Theme.of(context).textTheme.titleMedium),
Text('₺${widget.price.toStringAsFixed(2)}',
style: const TextStyle(fontWeight: FontWeight.bold, color: Colors.green)),
],
),
),
],
),
),
),
),
);
}
}// React Native - Animasyonlu ürün kartı
import React, { useRef } from 'react';
import {
Animated,
TouchableWithoutFeedback,
Image,
Text,
View,
StyleSheet,
} from 'react-native';
interface ProductCardProps {
productName: string;
price: number;
imageUrl: string;
}
export function ProductCard({ productName, price, imageUrl }: ProductCardProps) {
const scaleAnim = useRef(new Animated.Value(1)).current;
const handlePressIn = () => {
Animated.spring(scaleAnim, {
toValue: 0.95,
useNativeDriver: true,
}).start();
};
const handlePressOut = () => {
Animated.spring(scaleAnim, {
toValue: 1,
friction: 3,
useNativeDriver: true,
}).start();
};
return (
<TouchableWithoutFeedback onPressIn={handlePressIn} onPressOut={handlePressOut}>
<Animated.View style={[styles.card, { transform: [{ scale: scaleAnim }] }]}>
<Image source={{ uri: imageUrl }} style={styles.image} resizeMode="cover" />
<View style={styles.info}>
<Text style={styles.name}>{productName}</Text>
<Text style={styles.price}>₺{price.toFixed(2)}</Text>
</View>
</Animated.View>
</TouchableWithoutFeedback>
);
}
const styles = StyleSheet.create({
card: { borderRadius: 12, overflow: 'hidden', backgroundColor: 'white', elevation: 4 },
image: { width: '100%', height: 200 },
info: { flexDirection: 'row', justifyContent: 'space-between', padding: 16 },
name: { fontSize: 16, fontWeight: '600' },
price: { fontSize: 16, fontWeight: '700', color: '#22c55e' },
});Custom design + animasyon ağırlıklı app (Awwwards-tier visual)
Custom rendering engine her piksel'i sen kontrol edersin. CustomPainter + Canvas API + Impeller GPU performance ile 60fps complex animations. Cupertino+Material dual look-and-feel.
JavaScript/TypeScript ekibi mevcut (web team)
Mevcut JS skill'lerini direkt kullan. Backend API client'ları paylaşılabilir, validation libraries (Zod, Yup) RN+web ortak. Learning curve sıfır.
iOS-native + Android-native paritesi (gerçek native UI)
Gerçek UIView/View component'leri — native look-and-feel out-of-box. Apple HIG / Material Design fark hissedilmez. Shopify, Discord production örnekleri.
Cross-platform UI consistency (her platformda aynı pixel)
Self-contained rendering — her platformda %100 aynı görünüm. Marka kimliği custom design system için ideal. Google Pay, BMW production örnekleri.
Hızlı MVP (4-6 hafta time-to-market)
Expo SDK 50+ EAS Build ile cloud-based iOS+Android build. Native module gerekmediği sürece Mac+Xcode gerekmiyor. Hızlı iteration.
Apple Vision Pro / visionOS uygulaması
Meta Vision Pro için React Native resmi bridge yayınladı. Flutter visionOS desteği yok (visionOS 2 SADECE SwiftUI native + RN bridge).
Game-like UI (Cupertino tarzı oyun, custom physics)
Flame engine (Flutter game framework, 7k★) production-ready. CustomPainter + Box2D + Skia GPU. RN'da game framework limited.
iOS + Android shared business logic + native UI tercih
KMP 1.0 (2023) iş mantığı + network + DB shared, UI tarafı native (SwiftUI + Compose). Netflix, McDonald's production. Cross-platform value 'shared logic' ise KMP daha esnek.
Flutter'da setState() abuse — büyük widget tree gereksiz rebuild
State management library kullan (Riverpod, BLoC, Provider). const constructor + key + extract widget pattern. Flutter DevTools Widget Inspector ile rebuild'leri profile et.
React Native'de bridge bottleneck (Old Architecture)
New Architecture (Fabric + TurboModules) etkinleştir — RN 0.76+ default. JSI direkt çağrı bridge'i kaldırıyor, sync method calls mümkün. Hermes engine V8'in yerine.
Flutter Web SEO problemi — server-side rendering yok
Flutter Web SPA only — SEO için Next.js+Flutter Web hybrid veya statik content için Hydration. Public-facing site için Flutter Web KULLANMA, internal tool veya web app için OK.
React Native Metro bundler yavaş (cold start 30-60s)
Metro 0.81+ + Hermes pre-compilation + RAM bundles + inline requires. Flipper kaldır (deprecated 2024) Reactotron veya Expo DevTools kullan.
Flutter platform_specific_imports fail web target'ında
Conditional imports (`if (dart.library.html) ...`) ile web vs native ayır. Kotlin'in expect/actual benzeri pattern. flutter.dev docs 'Conditional Imports' guide.
Flutter'ın geleceği parlak — Google'ın Mobile + Web + Embed (Toyota infotainment, Canonical Ubuntu) stratejisi devam ediyor. Flutter 4.0 roadmap (2025): WebGL2 + WebAssembly default web target, RFW (Remote Flutter Widgets) framework, Material 3 Expressive variant. Impeller 2024 sonu both platforms default. Flutter Engage 2024'te Wasm production-ready ilan edildi — Flutter Web app'ler dart2wasm ile ~%30 daha hızlı startup. Flutter Forge program 2024 — Google ekosistem entegrasyonu (Firebase Studio + Genkit + Imagen API). Trend: Multi-platform (mobile+web+desktop+embed) tek codebase çekirdek vaad, JS ekosisteminden bağımsız büyüyor.
React Native'in geleceği Meta'nın stratejik yatırımıyla parlak. RN 0.76 (Ekim 2024) New Architecture default — eski Bridge mimarisi yıl sonu deprecate. RN 0.78+ (2025): Hermes 2.0 (V8'e yakın performans), Expo Router 5.0 (file-based + type-safe), Skia integration (high-performance custom rendering Flutter benzeri ihtiyaç için). Microsoft React Native Windows/macOS active development. Meta Vision Pro / visionOS bridge 2024 Q4 — VR/AR cross-platform öncülük. Trend: JavaScript ekosistem entegrasyonu derinleşiyor (Vercel + Expo + Bun + Hermes), native developer experience Flutter ile parite hızında. KMP rakibi büyüyor ama RN ekosistem dominantlığını koruyacak.
2025'te Flutter, performans ve tutarlı UI açısından öne geçiyor — özellikle özel tasarımlı, animasyon ağırlıklı uygulamalar için. React Native ise JavaScript/TypeScript ekibiniz varsa ve hızla iterasyon yapmanız gerekiyorsa daha pratik. İkisi de üretim kalitesinde; karar ekip yetkinliğine göre verilmeli.
Ücretsiz Danışmanlık AlBu yazının en değerli bilgisi
Bu ipucu, yazının en önemli çıkarımını içeriyor.
Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.
Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.
Flutter, Skia/Impeller ile native bridge olmadan render ettiği için genellikle daha tutarlı 60fps sağlıyor. React Native New Architecture ile bu farkı önemli ölçüde kapattı.
Bu karşılaştırma 22+ resmi ve güncel kaynaktan derlenmiştir. Tüm linkler son araştırma tarihinde doğrulandı.