Flutter vs React Native
Google'ın Dart tabanlı Flutter'ı ile Meta'nın JavaScript/TypeScript tabanlı React Native'ini her açıdan karşılaştırıyoruz. Hangi cross-platform framework 2025'te öne çıkıyor?
React Native'i bir platforma dönüştüren, EAS ile uçtan uca yönetilen framework
Kendi render motoruyla tutarlı, ama kurulumu artık daha çok sana ait bir SDK
Bu artık bir dil değil, ekosistem sahipliği kararı. JS/TypeScript bilen, hızlı lansman isteyen bir ekipte Expo doğru varsayılan: EAS'ın altı ürünü (Build, Submit, Workflows, Update, Hosting, Observe) zinciri tek platformda topluyor; bedeli servis bağımlılığı ve ücretli EAS katmanları. Tasarım sistemine tam hâkimiyet, masaüstü dahil tutarlı render ve servis kilidinden kaçınmak istiyorsan Flutter'ı seçmelisin; CI/CD ve izlemeyi kendin kurarsın.
| Kategori | Expo (React Native) | Flutter |
|---|---|---|
| Performans | 8/10 | 8/10 |
| Öğrenme Kolaylığı | 9/10 | 6/10 |
| Ekosistem | 8/10 | 8/10 |
| Topluluk | 8/10 | 8/10 |
| İş Pazarı | 7/10 | 7/10 |
| Gelecek | 8/10 | 8/10 |
// Expo — EAS Update ile mağaza onayı beklemeden OTA JS güncellemesi (TypeScript)
// app.config.ts — update kanalı tanımı
import { ExpoConfig, ConfigContext } from "expo/config";
export default ({ config }: ConfigContext): ExpoConfig => ({
...config,
name: "MyApp",
slug: "my-app",
version: "1.0.0",
runtimeVersion: { policy: "appVersion" },
updates: { url: "https://u.expo.dev/your-project-id" },
});
// Terminal: production build al ve mağazaya gönder
// eas build --platform all --profile production
// eas submit --platform all
// Bug bulundu — native build'e dokunmadan JS/varlık düzeltmesini yayınla
// eas update --branch production --message "Fix: login crash on cold start"
// EAS Observe ile üretimde performans izleme (GA: 20 Ağustos 2026)
// -> https://docs.expo.dev/eas/observe/introduction/
// Ayrı bir native kütüphane gerekir; Expo Go'da çalışmaz, development ya da
// production build şart:
// npx expo install expo-observe
// Kök layout'u <ObserveRoot> ile sar, uygulama hazır olduğunda markInteractive() çağır.
// Ölçülenler: soğuk/sıcak açılış, ilk render, etkileşime hazır olma, bundle
// yükleme ve EAS Update indirme süresi. JS hata kaydı önizleme aşamasında.// Flutter 3.47 — material_ui bağımsız paketine geçiş (Dart)
// pubspec.yaml — yeni bağımsız paketi ekle
// dependencies:
// material_ui: ^1.0.0
// cupertino_ui: ^1.0.0
// Terminal: SDK-içi eski widget'lardan yeni pakete otomatik migrasyon
// $ dart fix --apply --code=migrate_design_widgets
// main.dart — yeni paketten import (eski: package:flutter/material.dart)
import 'package:material_ui/material_ui.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Profil Kartı',
home: Scaffold(
appBar: AppBar(title: const Text('Profil')),
body: const Center(child: Text('Merhaba, Flutter 3.47')),
),
);
}
}
// Not: Flutter'da resmi bir "eas update" karşılığı yoktur —
// bu değişikliği kullanıcıya ulaştırmak için yeni bir build alıp
// mağaza incelemesinden geçirmen gerekir.Bu artık bir dil değil, ekosistem sahipliği kararı. JS/TypeScript bilen, hızlı lansman isteyen bir ekipte Expo doğru varsayılan: EAS'ın altı ürünü (Build, Submit, Workflows, Update, Hosting, Observe) zinciri tek platformda topluyor; bedeli servis bağımlılığı ve ücretli EAS katmanları. Tasarım sistemine tam hâkimiyet, masaüstü dahil tutarlı render ve servis kilidinden kaçınmak istiyorsan Flutter'ı seçmelisin; CI/CD ve izlemeyi kendin kurarsın.
Ücretsiz Danışmanlık AlJS/TypeScript ekibiniz varsa ve hızlı lansman + yönetilen build/update/monitoring servisi istiyorsanız Expo (SDK 57, EAS Observe artık GA — 20 Ağustos 2026). Tasarım sisteminizde tam kontrol, tutarlı çoklu-platform render (mobile+web+masaüstü) ve üçüncü taraf servise bağımlı olmamak istiyorsanız Flutter; ancak Flutter 3.47 ile Material/Cupertino artık ayrı paket olduğundan 'kurulum sorumluluğu' arttı (12 Ağustos 2026).