Expo (React Native) vs Flutter Karşılaştırması

React Native'i bir platforma dönüştüren, EAS ile uçtan uca yönetilen framework

VS
Flutter

Kendi render motoruyla tutarlı, ama kurulumu artık daha çok sana ait bir SDK

12 dk okumaCross-Platform

Hızlı Karar

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.

Expo (React Native)Flutter
Tam sonucu oku

Puan Karşılaştırması

Grafik yükleniyor...

Detaylı Puanlama

Detaylı Puanlama: Expo (React Native) ve Flutter — kategori bazında 10 üzerinden puanlar
KategoriExpo (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

Artıları & Eksileri

Expo (React Native)

Artıları

  • Kurulum için yalnız Node.js LTS gerekir — Xcode/Android Studio olmadan Expo Go/Snack ile anında test
  • EAS Build/Update/Workflows/Observe tek platformda: CI/CD, OTA update ve performans izleme kendin kurmaz, satın alırsın
  • CNG (expo prebuild) ile native klasörler tekrar üretilebilir — 'eject' artık tek yönlü bir kapı değil
  • EAS Update ile mağaza onayı beklemeden JS/varlık düzeyinde anında OTA güncelleme
  • TypeScript/React bilen bir ekip sıfır dil öğrenmeden başlar
  • EAS Build Free plan ayda 15+15 build ve 1.000 MAU update içerir — küçük projeye maliyetsiz başlangıç
  • React Native'in devasa npm ekosistemine doğrudan erişim
  • Config plugin sistemi native yapılandırmayı programatik ve tekrarlanabilir kılar

Eksileri

  • SDK 57 şu an React Native 0.86 taşıyor; RN 0.87 (11 Ağustos 2026) henüz bir Expo SDK'sına girmedi
  • Resmi bir dahili tasarım/UI kütüphanesi hiç sunmadı — tutarlı görünüm için üçüncü taraf kütüphane seçimi sana ait
  • EAS Free plan aşıldığında Starter ($19/ay + kredi) veya Production ($199/ay) ücretli katmana geçiş gerekir
  • Expo Go (iOS) 3 Eylül 2026'dan beri terminal + uygulamada login gerektiriyor
  • EAS bulut-öncelikli tasarlandığı için kurumsal on-prem CI zorunluluğuyla uyumu zayıf
  • Çok nadir/özel native SDK'lar için config plugin yazmak ek efor gerektirebilir

En Uygun

JS/TypeScript ekibinden gelen, hızlı lansman isteyen takımlarKendi CI/CD, performans izleme ve OTA altyapısını kurmak istemeyen küçük-orta ekiplerMVP/prototip geliştirme ve hızlı iterasyonOTA update ihtiyacı yüksek, mağaza onayı beklemeden JS düzeltmesi göndermek isteyen uygulamalarWeb'i de aynı React kod tabanından hedeflemek isteyenler

Flutter

Artıları

  • Kendi render motoru (Skia/Impeller) sayesinde tüm platformlarda pixel-perfect, tutarlı görünüm
  • 178.800+ GitHub yıldızı ve Pub.dev'de köklü, olgun paket ekosistemi
  • 4 hedef ailesi (mobile/web/desktop/embedded) resmi olarak destekleniyor — tek codebase'den masaüstüne çıkabilirsin
  • Google'ın kendi ürünlerinde (Google Pay, Google Earth, NotebookLM) production kullanımı sürüyor
  • material_ui/cupertino_ui artık bağımsız paketler — SDK'nın 3 aylık döngüsünü beklemeden bug-fix alabilirler
  • Hot reload ile hızlı geliştirme döngüsü Dart tarafında da güçlü
  • Native modül/plugin yazımı iyi dokümante edilmiş (platform channels)

Eksileri

  • Dart, ekibin JS/TS bilgisiyle doğrudan tekrar kullanılamayan yeni bir dil
  • Resmi/entegre bir OTA-JS-update mekanizması yok — release AOT ikili; native build + mağaza onayı gerekir
  • Resmi bir yönetilen CI/CD-build-monitoring platformu (EAS dengi) yok — CI/CD, crash/perf izleme ve dağıtımı üçüncü taraflarla (Fastlane, Codemagic, Sentry vb.) sen kurarsın
  • Flutter 3.47 minimum iOS 13→15, macOS 10.15→12 yükseltti — eski cihaz desteği isteyen projeler bu sürümde takılı kalabilir
  • Material/Cupertino'nun SDK-içi eski sürümleri Kasım 2026'da deprecate olacak — migrasyon (dart fix --apply --code=migrate_design_widgets) ek bir bakım işi
  • Resmi, sabit bir fiyat/servis sayfası yok çünkü framework ücretsiz — ama bu, eksik olan CI/CD/monitoring/OTA'yı ayrı ayrı satın almak (veya kurmak) zorunda kalman anlamına geliyor

En Uygun

Tasarım sistemine tam hâkimiyet isteyen, tutarlı çoklu-platform render önceliği olan ekiplerMobile + web + masaüstünü aynı codebase'den hedeflemek isteyenlerÜçüncü taraf yönetilen servise (EAS gibi) kilitlenmek istemeyen, kendi CI/CD'sini kurmaya istekli ekiplerDart öğrenmeye zaman ayırabilecek, uzun vadeli büyük ölçekli uygulamalarGoogle ekosistemiyle (Firebase, Google Cloud) derin entegrasyon isteyenler

Kod Karşılaştırması

Expo (React Native)
// 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
// 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.

Sonuç

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 Al
SSS

Sıkça Sorulan Sorular

JS/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).

Giriş

İki taraf da 2026 yazında yön değiştirdi. 12 Ağustos 2026'da yayınlanan Flutter 3.47, Material ve Cupertino tasarım kütüphanelerini bağımsız material_ui/cupertino_ui paketleri olarak sundu — dikkat et, bu sürümde geçiş opt-in: çekirdek SDK eski kütüphaneleri hâlâ içeriyor, formal deprecation Kasım 2026 stable'ında. Expo tarafında ise SDK 57 (30 Haziran 2026, React Native 0.86) ve 20 Ağustos 2026'da GA'ya geçen EAS Observe var. Bu yüzden soru artık "hangi dili öğreneceğim" değil, "kimin altyapısına ne kadar bağımlı olacağım". Expo'da React/TypeScript bilginle başlarsın; EAS build, OTA update, CI ve performans izlemeyi senin yerine yönetir — karşılığında bu servislere bağımlı kalırsın. Flutter'da Dart öğrenirsin ama tek render motoruyla tüm platformlarda aynı görünümü alırsın; CI/CD, dağıtım ve izleme sana kalır. Aşağıda bu iki model dokuz kriterde karşılaştırılıyor. Not: taraflarca yayınlanmış nicel bir "soğuk açılış" ölçümü yok; bunu kendi projenle ölçmelisin.

Karşılaştırma Matrisi

Karşılaştırma Matrisi: Expo (React Native) / Flutter
ÖzellikExpo (React Native)Flutter
Köken (şirket kuruluşu / ilk sürüm)2015 (650 Industries kuruluşu) · depo 20162017 (alfa, Google)
DilTypeScript / JavaScriptDart
En güncel sürüm (2026-09-06)SDK 57 (30 Haz 2026, RN 0.86)3.47.0 (12 Ağu 2026)
GitHub yıldızı52.063+178.800+ (Öne çıkan)
Resmi UI/tasarım kütüphanesiYok (3. taraf seçimi)Var (material_ui/cupertino_ui, ayrı paket) (Öne çıkan)
Yönetilen CI/CD-build platformuEAS Build/Workflows (resmi) (Öne çıkan)Resmi yok (3. taraf: Codemagic vb.)
OTA/JS güncellemeEAS Update (resmi) (Öne çıkan)Yok (release AOT ikili)
Başlangıç/performans izlemeEAS Observe (GA: 20 Ağu 2026; JS hata kaydı önizlemede) (Öne çıkan)Resmi yok (3. taraf: Firebase/Sentry)
Masaüstü hedefleme (Win/mac/Linux)Resmi kapsamda yokResmi 1. sınıf hedef (Öne çıkan)
Web hedeflemeVarVar
Ücretsiz katman/planEAS Free: 15+15 build/ay, 1.000 MAU OTAFramework tamamen ücretsiz
Ücretli üst katmanStarter $19/ay+kredi, Production $199/ayYok (3. taraf servis maliyeti ayrı)
Minimum kurulum gereksinimiNode.js LTS (Öne çıkan)Flutter SDK + Xcode/Android Studio
Native modül erişimiConfig plugin + expo-modules-corePlatform channels (doğrudan)
LisansMITBSD-3-Clause

Derinlemesine İnceleme

Expo (React Native)

Genel Bakış

Expo, 2015'te 650 Industries (Palo Alto) tarafından React Native üzerine inşa edilmiş bir framework + yönetilen platform olarak kuruldu. Tarihsel olarak "managed workflow" native koda erişimi kısıtlıyordu ve "eject" geri dönüşü zor bir işlemdi; expo prebuild ile bu model Continuous Native Generation'a (CNG) evrildi — native ios/android klasörleri artık kaynak değil, app config'ten üretilen tekrarlanabilir çıktı. 2026'da güncel sürüm SDK 57 (30 Haziran 2026, React Native 0.86 taşıyor); EAS Build, Update, Workflows ve 20 Ağustos 2026'da GA olan Observe ile Expo artık uçtan uca bir bulut platformu. Flutter'ın aksine Expo/React Native hiçbir zaman resmi bir dahili tasarım kütüphanesi sunmadı — Material Design ve iOS'a benzer bileşenler için ekip üçüncü taraf kütüphane seçer ya da kendi tasarım sistemini kurar. Bu, Flutter'ın "SDK içinde hazır widget seti" yaklaşımının tam tersi: Expo'nun bahsi UI katmanı değil, geliştirme-dağıtım-izleme zincirinin tamamını yönetilir hâle getirmek. Expo Go, native SDK kurmadan anında test için hâlâ en hızlı yol, ama 3 Eylül 2026'dan itibaren iOS'ta login zorunlu (development build'ler muaf).

Ekosistem

Paket yöneticisi
npm / Yarn / pnpm (Expo CLI ile)
Geliştirme ortamı
VS Code + Expo ToolsAndroid Studio (native build)Xcode (native build)
Popüler kütüphaneler
expo-routerexpo-updatesexpo-notificationsexpo-cameraexpo-modules-core
GitHub yıldızı
52,063

Flutter

Genel Bakış

Flutter, Google tarafından geliştirilen ve ilk alfa sürümü 2017'de yayınlanan, Dart dilinde yazılan açık kaynak bir UI framework'ü. Diğer cross-platform çözümlerin aksine native bileşenlere sarmalama yapmaz — kendi render motoruyla (önce Skia, artık masaüstünde varsayılan olarak Impeller) her pikseli kendisi çizer, bu da platformlar arası tutarlı görünüm sağlar ama platformun native widget'larını taklit etmeyi gerektirir. 12 Ağustos 2026'da yayınlanan Flutter 3.47, ekosistemde köklü bir değişiklik getirdi: SDK'nın çekirdeğinde gömülü gelen Material ve Cupertino tasarım kütüphaneleri artık bağımsız material_ui ve cupertino_ui paketleri olarak pub.dev'de 1.0 sürümüne ulaştı; amaç bu kütüphanelerin Flutter'ın üç aylık release döngüsünden bağımsız, kendi hızında bug-fix ve özellik yayınlayabilmesi. SDK içindeki eski sürümler Kasım 2026 stable'ında resmi olarak deprecate edilecek — dart fix --apply --code=migrate_design_widgets ile migrasyon aracı sunuluyor. Aynı sürümde minimum iOS hedefi 13'ten 15'e, macOS hedefi 10.15'ten 12'ye yükseltildi (Xcode 27 desteği için). Flutter, Expo'nun aksine resmi bir yönetilen build/update/monitoring platformu sunmuyor — CI/CD, dağıtım ve crash/performans izleme üçüncü taraf araçlarla (Fastlane, Codemagic, Sentry, Firebase) kurulur; buna karşılık framework'ün kendisi tamamen ücretsizdir ve hiçbir servise bağımlılık yaratmaz.

Ekosistem

Paket yöneticisi
pub.dev (pub / flutter pub)
Geliştirme ortamı
Android Studio + Flutter pluginVS Code + Dart/Flutter extensionIntelliJ IDEA
Popüler kütüphaneler
providerriverpodgo_routerdiomaterial_ui (yeni, bağımsız paket)
GitHub yıldızı
178,800

Teknik Analiz

Sıfırdan Çalışan Uygulamaya Geçen Süre ve Ekip Beceri Uyumu

Expo'da başlangıç npx create-expo-app komutuyla saniyeler içinde çalışan bir uygulama verir; Node.js LTS dışında bir kurulum gerekmez, telefonda Expo Go ile anında test edebilirsin. Flutter'da resmi patika önce Flutter SDK kurulumunu, ardından platform toolchain'lerini (Xcode + CocoaPods, Android Studio + Gradle) kurmayı gerektirir — "sıfırdan çalışan uygulamaya" giden yol yapısal olarak daha uzun bir ilk adım içerir. Bu farkın nicel, resmi bir ölçümü yok; ikisi de "birkaç dakika" diyebileceğin işler ama Expo'nun path'i daha az bağımlılık ister. Ekip beceri uyumu tarafında fark daha net: Expo React/TypeScript üzerine kurulu, bu yüzden bir web ekibinin JS/React bilgisi doğrudan taşınır. Flutter, Dart'ı öğrenmeni ister — sözdizimi C-ailesine yakın olsa da, widget-tree modeli ve state yönetim paternleri (Provider, Riverpod, BLoC) yeni bir öğrenme eğrisi getirir. Ekibinde zaten React bilgisi varsa Expo ile üretkenliğe geçiş süresi kısalır; sıfırdan bir mobile ekip kuruyorsan bu fark önemini kaybeder çünkü her iki dilde de öğrenme süreci gerekir.

UI Katmanı Sahipliği: Ayrılan Paketler vs Hiç Olmayan Kütüphane

Burada 12 Ağustos 2026 en büyük kırılma noktası. Flutter 3.47'ye kadar Material ve Cupertino widget'ları yalnız SDK'nın çekirdeğinde gelirdi; artık material_ui ve cupertino_ui adıyla pub.dev'de 1.0'a ulaşmış bağımsız paketler olarak da alınabiliyor. Dikkat et: bu sürümde geçiş opt-in — çekirdek SDK bu kütüphaneleri hâlâ içeriyor. Amaç, kütüphanelerin SDK'nın üç aylık döngüsünden bağımsız, haftalık planlanan kendi kadansında yayın yapabilmesi. Pratik sonucu şu: SDK-içi eski sürümler Kasım 2026 stable'ında deprecate edilecek, yani her Flutter projesi bir noktada dart fix --apply --code=migrate_design_widgets ile bu geçişi yapmak zorunda kalacak. Expo/React Native tarafında bu tartışma hiç var olmadı çünkü resmi bir dahili tasarım kütüphanesi asla sunulmadı. Ekip, Material Design'a benzer bileşenler için React Native Paper gibi üçüncü taraf kütüphaneler seçer ya da kendi tasarım sistemini kurar. Tutarlı, platformdan bağımsız pixel-perfect görünüm istiyorsan Flutter'ın widget seti (yeni paket hâliyle de) daha az karar yükü getiriyor; native platform hissini birebir istiyorsan Expo/RN tarafında bu işi üçüncü taraf kütüphanelerle sen kurarsın.

Yönetilen Servis Kapsamı: EAS'ın 6 Ürünü vs Kendin Kur

Bu, iki tarafı en çok ayıran eksen. Expo'nun EAS'ı altı ayrı ürün sunuyor: Build (native derleme), Submit (mağaza gönderimi), Workflows (CI/CD otomasyonu), Update (OTA), Hosting ve 20 Ağustos 2026'da GA'ya geçen Observe (başlangıç/performans izleme). Hepsi tek hesap, tek fiyatlandırma, tek dashboard altında. Free plan ayda 15 Android + 15 iOS build ve 1.000 MAU'ya kadar OTA update içeriyor — küçük bir proje için sıfır ek maliyetle başlanabiliyor; aşımda Starter ($19/ay + kredi) veya Production ($199/ay) katmanına geçmek gerekiyor. Flutter tarafında bu kapsam tek bir resmi ürüne değil, senin seçtiğin araçlara dayanır: CI/CD için Codemagic, GitHub Actions veya kendi pipeline'ın; crash/performans izleme için Firebase Crashlytics veya Sentry; dağıtım için Fastlane gibi araçları sen entegre edersin. Maliyeti iki yönlü: framework'ün kendisi ücretsiz, ama bu araçları seçmek, entegre etmek ve bakmak ekibin işi. Küçük bir ekipte Expo'nun "hepsi dahil" modeli DevOps yükünü belirgin azaltır; özel gereksinimleri olan kurumsal bir ekipte Flutter'ın "kendi araçlarını seç" esnekliği kısıtlama değil, tercihtir.

OTA Güncelleme Desteği: Resmi Ürün vs Ürün Yokluğu

EAS Update, Expo'nun en somut farklılaştırıcılarından biri: JS ve varlık (asset) düzeyindeki değişiklikleri mağaza incelemesi beklemeden kullanıcıya ulaştırabiliyorsun. Bunun sınırı da net — hem Apple'ın App Store Review Guideline 3.3.1'i hem Google Play politikası, OTA ile yalnız yorumlanan kod/varlık güncellemesine izin veriyor; native kod değişikliği veya uygulamanın temel amacını değiştirecek özellikler bu yolla gönderilemez. Yani EAS Update bir "her şeyi atlat" mekanizması değil, kritik JS-bug fix'leri için bir güvenlik supabı. Flutter'da bu kapsamda resmi, dokümante edilmiş bir OTA/code-push ürünü yok — release build'ler AOT (ahead-of-time) derlenmiş native ikili olduğu için JS tarzı bir "runtime güncelleme" mimarisi framework'ün doğasında bulunmuyor. Pratik sonuç şu: Flutter'da küçük bir bug-fix bile yeni bir build + mağaza incelemesi döngüsü gerektiriyor. Sık, küçük düzeltmeler göndermesi gereken bir ürün ekibiysen bu, Expo lehine somut bir operasyonel fark.

Paket Ekosistemi Büyüklüğü ve Bakım Durumu

GitHub yıldızı kaba ama karşılaştırılabilir bir sinyal: flutter/flutter 178.800 yıldızla expo/expo'nun 52.063 yıldızının önünde (2026-09-06, GitHub API canlı veri). Ama bu rakam tek başına ekosistem büyüklüğünü tam yansıtmıyor — Expo, React Native'in devasa npm ekosisteminin üzerine kurulu; yani Expo projesi aslında hem Expo SDK paketlerine hem de milyonlarca npm paketine erişebiliyor. Flutter'ın pub.dev'i daha genç ama Google'ın doğrudan katkısıyla daha merkezi kalite kontrolüne sahip; flutter/packages altındaki resmi paketler (ör. go_router) ile topluluk favorileri (provider, riverpod) düzenli güncelleniyor. Bakım açısından her iki ekosistemde de "terk edilmiş paket" riski var — bu, framework'e özgü değil, açık kaynak ekosisteminin genel bir gerçeği. Flutter'ın avantajı, material_ui/cupertino_ui örneğinde görüldüğü gibi Google'ın çekirdek widget'ları resmi olarak sürdürmesi; Expo'nun avantajı, expo-router/expo-updates/expo-camera gibi ilk-taraf modüllerin EAS ile aynı şirket tarafından, aynı release ritmiyle bakılması. İkisi de "resmi modüller güvenilir, üçüncü taraf modülde bakım durumunu kontrol et" kuralına tabi.

Web/Masaüstü Hedefleme ve Toplam Sahip Olma Maliyeti

Flutter resmi olarak dört hedef ailesini destekliyor: mobile, web, masaüstü (Windows/macOS/Linux) ve embedded; dokümantasyonda her platform için ayrı destek matrisi var. Expo'nun resmi kapsamı Android/iOS/web ile sınırlı; masaüstü ilk-taraf hedef listesinde yok, bunun için React Native ekosisteminde ayrı projeler (ör. React Native Windows/macOS) gerekiyor ve bunlar Expo'nun yönetilen akışının parçası değil. Masaüstünü de gerçekten ilk sınıf hedeflemek istiyorsan bu, Flutter lehine net bir fark. Toplam sahip olma maliyeti (TCO) tarafında iki farklı maliyet kalemi var. Expo'da maliyet EAS abonelik kademelerinde somutlaşıyor: Free → Starter ($19/ay + kredi) → Production ($199/ay) — büyüdükçe fatura büyüyor ama karşılığında CI/CD, OTA ve izleme dahil geliyor. Flutter'da framework ücretsiz ve resmi bir fiyat sayfası yok, ama maliyet yok olmuyor — CI/CD (Codemagic ya da kendi runner'ların), crash/performans izleme (Firebase/Sentry) ve dağıtım (Fastlane) için ayrı araç seçip entegre etmen, bu araçların faturasını ve bakım yükünü üstlenmen gerekiyor. Kısacası: Expo'da TCO tek faturada görünür, Flutter'da TCO dağınık ama framework'ün kendisi bedava.

Hangi Senaryoda Hangisi

React/TypeScript bilgisi olan küçük ekip, hızlı MVP çıkarmak istiyor

Öneri: Expo

Node.js LTS dışında kurulum yok, EAS Free katmanı (15+15 build/ay) maliyetsiz başlangıç sağlıyor, dil öğrenme yükü sıfır.

Kurumsal ekip, zaten kendi CI/CD ve monitoring altyapısına sahip

Öneri: Flutter

Mevcut altyapı (Fastlane/Codemagic/Sentry) zaten var; EAS'ın sunduğu 'hepsi dahil' değeri bu ekip için tekrar ödeme anlamına gelir.

Mobil + web + masaüstünü aynı codebase'den hedeflemek gerekiyor

Öneri: Flutter

Flutter'ın 4 hedef ailesi resmi olarak masaüstünü kapsıyor; Expo'nun resmi kapsamı Android/iOS/web ile sınırlı.

Sık, küçük JS bug-fix'lerini mağaza onayı beklemeden yayınlamak kritik

Öneri: Expo

EAS Update resmi ve entegre; Flutter'da dokümante edilmiş bir OTA ürünü yok, her fix yeni build + inceleme gerektiriyor.

Tutarlı, pixel-perfect çoklu-platform görsel kimlik birinci öncelik

Öneri: Flutter

Kendi render motoru (Skia/Impeller) platformdan bağımsız aynı pikseli çiziyor; RN/Expo native bileşenlere sarmalama yapar, tutarlılık üçüncü taraf kütüphaneye bağlı.

Ekip Dart öğrenmeye zaman ayıramıyor, ama native platform hissi de önemli değil

Öneri: Expo

TypeScript/React ile başlanır, native-hissi konusu zaten üçüncü taraf kütüphanelerle esnek şekilde çözülür.

EAS'ın ücretli katmanlarına (Starter/Production) bağımlı kalmak istemiyorum, bulut servisine kilitlenme riski almam

Öneri: Flutter

Framework tamamen ücretsiz ve vendor'a bağımlı değil; maliyet, seçtiğin 3. taraf araçlara dağılır ama tek bir sağlayıcıya kilitlenmezsin.

Yaygın Tuzaklar

  • Flutter 3.47'ye geçerken store analitiklerine bakmadan minimum iOS/macOS yükseltmesini kabul etmek

    Flutter

    Çözüm

    Yükseltmeden önce App Store Connect/Play Console'da eski iOS 13-14 / macOS <12 kullanıcı oranını kontrol et; kritik kütleyse geçişi ertele veya kademelendir.

  • material_ui/cupertino_ui geçişini Kasım 2026 deadline'ına kadar ertelemek

    Flutter

    Çözüm

    dart fix --apply --code=migrate_design_widgets ile erken taşın; deprecation sonrası sürpriz breaking change ile karşılaşma.

  • RN 0.87'nin Strict TypeScript API'sine geçerken deep import kullanan eski kütüphanelerin tip hatası vermesi

    Expo (React Native)

    Çözüm

    Bağımlılıkları güncelle veya opt-out mekanizmasını kullan (kalıcı değil); Expo SDK 57 hâlâ RN 0.86 taşıdığı için bu senin projene henüz dokunmuyorsa yükseltmeyi planla.

  • EAS Update ile Apple guideline 3.3.1'i ihlal edecek şekilde 'uygulamanın amacını değiştiren' özellik göndermeye çalışmak

    Expo (React Native)

    Çözüm

    OTA'yı yalnız JS bug-fix ve varlık güncellemesi için kullan; native davranış veya app'in temel amacını değiştiren değişiklikleri normal build+inceleme döngüsüne bırak.

  • 'Expo = sıfır native config' varsayımıyla Gradle/native modül/asset uyumsuzluklarını göz ardı etmek

    Expo (React Native)

    Çözüm

    Config plugin eklerken bağımlılık sürüm uyumluluğunu kontrol et; build hatalarının en yaygın nedeni hâlâ dependency conflict ve version mismatch.

Geçiş Kılavuzu

Expo (React Native) ↔ Flutter: Gerçekte Bir Port, Adım-Adım Migrasyon Değil

Tahmini süre: Küçük app (5-10 ekran): 1-3 ay. Orta (20-40 ekran): 3-8 ay. Büyük (80+ ekran): 8-18 ay. Bu bir port olduğu için süre framework değişiminden çok ekran/iş mantığı karmaşıklığına bağlıdır.
  1. 11. Dürüst tespit: Expo ve Flutter tamamen farklı dil (TypeScript/JS vs Dart) ve mimariye (native bridge/JSI vs kendi render motoru) sahip — resmi bir 'migrasyon aracı' yok, bu bir yeniden yazım projesidir.
  2. 22. Mevcut uygulamanın ekran envanterini çıkar: hangi native modüller, hangi state yönetimi, hangi navigasyon paterni kullanılıyor.
  3. 33. Hedef tarafta (Flutter'a geçiyorsan) eşdeğer paketleri belirle: navigasyon için go_router, state için riverpod/provider, ağ için dio.
  4. 44. İş mantığını (API çağrıları, validation, veri modelleri) hedef dile birebir mantıksal karşılığıyla yeniden yaz — otomatik çeviri aracı yok.
  5. 55. UI'ı ekran ekran yeniden inşa et; Flutter'a geçiyorsan material_ui/cupertino_ui (3.47+) ile başla, Expo'ya geçiyorsan üçüncü taraf bir tasarım kütüphanesi seç.
  6. 66. Native modül ihtiyaçlarını yeniden değerlendir: Expo tarafında config plugin/expo-modules-core, Flutter tarafında platform channels ile yaz.
  7. 77. Paralel çalıştırma dönemi planla: eski uygulamayı üretimde tutarken yeni uygulamayı kapalı beta'da test et, ekran ekran geçiş yap.
  8. 88. Mağaza yayınını kademelendir (staged rollout) — büyük bir 'big bang' geçiş yerine, kritik ekranları önce taşı.

Gelecek Öngörüsü

Expo (React Native)

Expo'nun yönü net: framework olmaktan bulut platformuna evrilmeye devam ediyor. EAS Observe'un 20 Ağustos 2026'da GA'ya geçmesi, EAS Workflows'un CI/CD tarafını genişletmesi ve SDK'nın React Native'in ardından düzenli takip etmesi (SDK 57 → RN 0.86) bu yönü doğruluyor. Beklenen sürtünme noktası: React Native 0.87'nin (11 Ağustos 2026, Strict TypeScript API) bir sonraki Expo SDK'sına ne zaman taşınacağı resmi olarak duyurulmadı. Ancak SDK 57 duyurusu tersi bir yön gösteriyor: Expo, React Native'in kırılmasız sürümlerini geliştiriciye neredeyse anında, npx expo install expo@latest --fix ile alınabilen opsiyonel yükseltmeler olarak sunmayı deniyor — SDK 57 kendisini bu yaklaşımın ilk denemesi ve "küçük, odaklı bir sürüm" olarak tanımlıyor. Expo Go'daki (iOS) login zorunluluğu da platformun 'sadece framework değil, hesap gerektiren bir servis' kimliğini pekiştiren bir sinyal.

Flutter

Flutter'ın yönü, 3.47 ile başlayan 'çekirdeği küçült, etrafını modülerleştir' stratejisinin devamı gibi görünüyor — material_ui/cupertino_ui ayrışması bunun ilk büyük adımı, Kasım 2026'daki deprecation bu stratejinin ilk zorunlu kilometre taşı. Google'ın kendi ürünlerinde (Google Pay, Google Earth, NotebookLM) Flutter kullanmaya devam etmesi uzun vadeli yatırımın sürdüğünü gösteriyor. Flutter'ın yıllardır koruduğu 'framework, servis değil' konumu, resmi bir yönetilen CI/CD/OTA platformunun kısa vadede gelmeyeceğini düşündürüyor; bu kehanet değil, mevcut trendin düz çizgi devamı.

Altın Bilgi

İki tarafın eksik olduğu yer hâlâ aynı: Expo hiçbir zaman resmi bir UI/tasarım kütüphanesi sunmadı, Flutter ise hiçbir zaman resmi bir yönetilen CI/CD-OTA-izleme platformu sunmadı. 2026 yazındaki hareketler bu boşlukları kapatmadı, derinleştirdi. Bu yüzden doğru soru "hangisi daha iyi" değil, "ekibinin hangi boşluğu doldurması daha ucuz". CI/CD ve izleme altyapısı zaten kurulu bir kurumsal ekipte Flutter'ın "kendin kur" modeli ek maliyet getirmez. Sıfırdan başlayan küçük-orta bir ekipte ise bu altyapının gerçek maliyeti (zaman, araç seçimi, bakım) çoğu zaman EAS aboneliğinden pahalıya gelir. Kararı "hangi işletim yükünü zaten taşıyorum, hangisini satın almak istiyorum" sorusuyla ver.

İlgili Blog Yazıları

Tüm Yazıları Gör

İlgili Projeler

Tüm Projeleri Gör
Tüm Karşılaştırmalar

İlgili İçerik