Claude Code ile uygulama yapmak: adım adım iPhone rehberi
Yazan: Mehdi Azizi
tarihinde güncellendi, 15 dk.
Claude Code'u kur, Expo projesini oluştur, CLAUDE.md'yi yaz, her ekranı ayrı prompt'la yaptır, sonra EAS ile TestFlight'a gönder. Rehberin tamamı burada.
Claude Code ile uygulama yapmak: kısa cevap
Claude Code ile uygulama yapmak için Claude Code'a ücretli erişimin (uyumlu bir abonelik ya da kullandıkça öde Console hesabı), Node.js, Expo Go yüklü bir iPhone ve bir Expo projesi lazım. Stack'ini ve kurallarını anlatan bir CLAUDE.md dosyası yazarsın, her seferinde tek bir ekran istersin, her ekranı iPhone'unda test edersin, sonra uygulamayı EAS ile TestFlight'a gönderirsin.
Bu rehber, yapay zekânın neyi iyi yaptığını ve neyi kaçırdığını anlattığım yapay zekâ ile iOS uygulaması yapmak rehberimin devamı. Burada işin pratiğine geçiyoruz: komutlar, dosyalar, prompt'lar.
iOS uygulamalarımı her gün Claude Code ve Cursor ile yazıyorum. Stack'im: React Native, Expo, EAS, RevenueCat ve Supabase. Mini oyunlu bir alarm uygulaması olan Solys ve bir trading antrenman uygulaması olan TradaZen App Store'da yayında. Nolera ve Clic, Apple tarafından reddedildi, sonra düzeltildi. Aşağıda yazan her şey bu çalışmadan geliyor.
Bu yöntemin yayındaki bir uygulamaya nasıl uygulandığını görmek istersen, TradaZen'in ilk commit'ten Apple retlerine ve pivotlara kadar uzanan yolculuğunu belgeledim. Bu deneyim, rehberdeki adımları tamamlıyor.
Adım 1: gereksinimleri topla
İlk komuttan önce bunların hepsine sahip olduğundan emin ol.
Ücretli bir Claude hesabı
Claude Code, claude.ai'nin ücretsiz planına dahil değil. Anthropic'in dokümantasyonuna göre Pro, Max, Team, Enterprise ya da Console hesabı gerekiyor. Pro planı, kullanım limitleri dahilinde başlamana yeter.
Node.js ve bir terminal
Expo, macOS, Windows ya da Linux üzerinde Node.js'in LTS sürümünü istiyor. Claude Code, macOS 13 ve üstünde, Windows 10 ve üstünde ve başlıca Linux dağıtımlarında çalışıyor.
Bir iPhone ve Expo Go
Kendi uygulamanı derlemeden ilk ekranlarını denemek için iPhone'una App Store'dan Expo Go'yu kur. Projeyi oluşturmadan önce kurulumunla uyumlu SDK sürümünü Expo Go sayfasından kontrol et. En son SDK ile App Store'da dağıtılan sürüm her zaman aynı anda çıkmıyor: Expo bu gecikmeyi özellikle Mayıs 2026'da belgeledi. Yani eski bir rehberde bulduğun bir sürüm numarasından yola çıkma. Kendi native modüllerini kullanacaksan bir development build planla.
Mac şart mı? Hayır
iOS build'leri, Expo SDK'nın seçtiği Xcode sürümüyle (ITMS-90725) EAS Build kullanılarak Expo'nun sunucularında derleniyor ve EAS Submit macOS, Linux ve Windows'ta çalışıyor. Yani bir PC'den TestFlight'a kadar gidebilirsin. Mac olmadan iOS uygulaması yayınlamak rehberi bu süreci ayrıntılı anlatıyor.
Apple Developer hesabı, sonra
App Store'daki Expo Go ile kod yazıp test etmek için buna ihtiyacın yok. Uygulamanı TestFlight'a göndereceğin anda zorunlu hale geliyor. Buna 7. adımda döneceğiz.
Adım 2: Claude Code'u kur
macOS, Linux ya da WSL'de Anthropic'in önerdiği yöntem native yükleyici:
curl -fsSL https://claude.ai/install.sh | bash
Windows'ta, PowerShell içinde:
irm https://claude.ai/install.ps1 | iex
Sonra kurulumun çalıştığını kontrol et:
claude --version
npm'i tercih ediyorsan komut şu: npm install -g @anthropic-ai/claude-code. Önüne sudo koyma, dokümantasyon bunu açıkça önermiyor.
claude komutunu ilk çalıştırdığında hesabına bağlanman için bir tarayıcı açılır. Sonrasında Türkçe yazarsın: Claude dosyalarını okur, değişiklik önerir ve senin onayınla komut çalıştırır.
Adım 3: Expo projesini oluştur
Projelerini tuttuğun klasöre geç ve şunu çalıştır:
npx create-expo-app@latest my-app
cd my-app
npx expo start
Araç sana App Store'daki Expo Go ile uyumluluk ve en son SDK arasında seçim sunarsa, bu alıştırma için uyumluluğu seç. Her durumda, devam etmeden önce oluşturulan sürümün iPhone'undaki Expo Go tarafından desteklendiğini kontrol et. Projen ihtiyaç duyduğunda bir development build hazırlayabilirsin.
Terminalde bir QR kod çıkar. iPhone'unun kamerasıyla tara: uygulama Expo Go'da açılır. İlk seferde sık takılan bir detay var: Expo Go projeni ancak Expo CLI ve Expo Go aynı Expo hesabına bağlıysa açar. Bilgisayarında npx expo login çalıştır ve uygulamada da aynı hesapla giriş yap.
Neden Swift değil de Expo? Claude, React Native'i çok iyi biliyor ve Mac olmadan test edebiliyorsun. Bu tercihi mobil uygulama için React Native ve Expo sayfasında anlatıyorum.
Expo Go'nun bir sınırını aklında tut: sadece içinde zaten gelen native modülleri barındırıyor. Tanımadığı bir native kütüphane eklediğin anda, örneğin uygulama içi satın almalar, bir development build gerekecek. İlk ekranlar için bu sorun değil.
Doğru test ortamını seç
Expo Go, development build ve TestFlight aynı şeyi kanıtlamaz. Expo, development build'i projenin ihtiyaç duyduğu native modülleri içeren kendi test uygulaman olarak tanımlıyor.
| Neyi kontrol etmek istiyorsun | Nerede test edilir | Testin sınırları |
|---|---|---|
| İlk ekranı göstermek ve navigasyonunu denemek | Uyumlu bir SDK ile Expo Go | Expo Go'da olmayan native modüllerin davranışı |
| Projeye eklenen bir native kütüphaneyi kullanmak | Bu kütüphaneyi içeren bir development build | Ne dağıtılan sürümü ne de Apple'ın onu kabul edip etmeyeceğini |
| Test kullanıcılarına giden uygulamayı gezmek, sonra satın almaları test etmek | TestFlight'a gönderilmiş bir build ve doğru yapılandırılmış ürünler | Gerçek bir müşteri ödemesini ya da satışa çıkış onayını |
Bir bağımlılık eklemeden önce Claude'a sor: “Mevcut SDK'm ve test ortamımla uyumlu mu? Uygulamayı yeniden derlemek gerekiyor mu? Cevabını dokümantasyona dayandır.” Böylece Expo Go'nun hiç yükleyemeyeceği bir modülü ya da gönderimde herkese açık olmayan API yüzünden reddedilen bir SDK'yı düzeltmeye bir akşam harcamazsın.
Adım 4: projenin CLAUDE.md dosyasını yaz
En çok karşılığını aldığın adım bu. Claude Code bir proje hafızası tutabilir ama kurallarını açıkça yazman gerekir. Projenin kök dizinine konan CLAUDE.md dosyası, tüm oturumlar için ortak talimatlar getirir. Claude'un tahmin edemeyeceği şeyleri buraya yazarsın.
Proje klasöründe claude çalıştır, sonra /init yaz. Dokümantasyona göre Claude projeyi analiz eder ve bulduğu komutlar ve kurallarla ilk CLAUDE.md dosyasını oluşturur. Sonra kendi kurallarınla tamamlarsın. Anthropic 200 satırın altında kalmayı öneriyor: dosya uzadıkça talimatlara daha az uyuluyor.
İşte kullandığıma yakın kısa bir örnek:
# Uygulamam
## Stack
- Expo (create-expo-app SDK'sı), React Native, strict TypeScript
- Navigasyon: Expo Router, app/ içinde her ekran için bir dosya
- Veri: Supabase (sonra), uygulamada asla gizli anahtar yok
## Kurallar
- Her seferinde tek ekran. İstek dışındaki dosyalara dokunma.
- Nokta cinsinden sabit yükseklik yok: ekrana göre göreli boyutlar,
içerik taşabiliyorsa ScrollView.
- Her ekran 3 durumu yönetir: yükleniyor, boş, hata.
- Arayüz metinleri Türkçe, Türkçe karakterlerle.
- 2'den fazla dosyada kod yazmadan önce: plan öner ve onayımı bekle.
## Komutlar
- Çalıştır: npx expo start
- Testler: package.json'da gerçekten bulunan script'i kullan.
Henüz yoksa bunu belirt; başarılı test olduğunu söyleme.
- Tipler: npx tsc --noEmit
- Her değişiklikten sonra: testleri ve tipleri çalıştır, sonra bana
neyin değiştiğini ve iPhone'da nasıl kontrol edeceğimi söyle.
Sabit yükseklik kuralı tesadüf değil. Buna 6. adımda döneceğiz.
Adım 5: her seferinde tek ekran için prompt yaz
“Bana abonelikli bir alışkanlık takip uygulaması yap” dev, kırılgan, okunması imkânsız bir proje üretir. İşe yarayan yöntem tam tersi: bir istek, bir ekran, beş dakikada test edebileceğin bir sonuç.
Bir planla başla
Birden fazla dosyaya dokunan her şey için plan moduna geç. Durum çubuğunda plan mode on görene kadar Shift+Tab tuşuna bas. Bu modda Claude dosyaları okur ve bir plan önerir ama senin onayın olmadan hiçbir şeyi değiştirmez. Okursun, düzeltirsin, sonra onaylarsın.
Çerçeveyi çizen ilk prompt şöyle görünür:
Bir alışkanlık takip uygulaması istiyorum. Sürüm 1: tek bir özellik,
günün alışkanlıklarını işaretlemek. Ekran listesini ve klasör
yapısını öner. Şimdilik hiç kod yazma.
Ekranı, durumlarını ve sınırlarını anlat
Sonra her ekran için bir prompt. Uç durumları ne kadar çok adlandırırsan Claude o kadar az unutur:
Günün alışkanlıklarını listeleyen app/index.tsx ekranını oluştur.
- Her satır: alışkanlığın adı, onay kutusu, devam eden seri.
- Boş durum: bir metin ve “Alışkanlık ekle” butonu.
- Yükleniyor durumu ve “Tekrar dene” butonlu hata durumu.
- Veriler şimdilik yerel bir diziden geliyor.
- iPhone SE'ye de en büyük iPhone'a da sığmalı:
sabit yükseklik yok, liste kayıyor.
Sonunda testleri ve tipleri çalıştır.
Her şeyi yeniden yazdırmadan düzelt
Bir detay yanlışsa net ol ve kapsamı sınırla:
iPhone'umda, liste uzun olduğunda “Alışkanlık ekle” butonu alt çubuğun
altına giriyor. Sadece bu sorunu app/index.tsx içinde düzelt, diğer
dosyalara dokunma. Nedenini açıkla.
Terminale bir ekran görüntüsü de yapıştırabilirsin: Claude onu okur.
Alıştırma: yeniden açıldıktan sonra işaretli kalan bir alışkanlık
Bu, kendi projende yapacağın eğitim amaçlı bir alıştırma, zaten teslim edilmiş bir özelliğin görüntüsü değil. Amaç, üretilmiş bir ekrandan doğrulanabilir bir davranışa geçmek. Ne kullanıcı hesabı ne de uygulama içi satın alma gerektiriyor.
- “10 dakika oku” adında tek bir yerel alışkanlık tut.
- Bir onay kutusu ve Expo projenle uyumlu yerel bir kayıt iste.
- Ajandan değiştirilen dosyaları, varsa eklenen bağımlılığı ve gerçekten çalıştırılan komutları belirtmesini iste.
- Uygulamanı iPhone'a kur ya da aç, sonra aşağıdaki kontrolleri yap.
Mevcut ekrandan yola çıkarak “10 dakika oku” alışkanlığını
işaretlenebilir yap ve uygulama kapatılıp yeniden açıldıktan sonra durumunu koru.
Projenin bağımlılıklarıyla uyumlu yerel depolamayı kullan.
Hesap, sunucu, abonelik ya da ek istatistik oluşturma.
Kod yazmadan önce yüklemeyi ve okuma ya da kaydetme hatasını
nasıl yöneteceğini açıkla. Sonra sınırlı bir değişiklik yap.
Sonunda: değişen dosyalar, çalıştırılan komutlar, test edilmeyen sınırlar
ve sonucu iPhone'da kontrol etmek için tam adımlar.
| iPhone'unda yapılacak işlem | Beklenen sonuç | Başarısız olursa |
|---|---|---|
| Uygulamayı ilk kez aç | Alışkanlık ve kutusu hatasız görünüyor | Başlangıç durumunu ve depolamanın yüklenmesini kontrol et |
| İşaretle, sonra uygulamayı kapatıp yeniden aç | Alışkanlık işaretli kalıyor | Aynı anahtarın yazılmasını ve okunmasını kontrol et |
| İşareti kaldır, sonra yeniden başlat | Alışkanlık işaretsiz kalıyor | false değerinin de kaydedildiğini kontrol et |
| Aynı akışı uçak modunda tekrarla | Yerel özellik kullanılabilir kalıyor | Sebepsiz eklenmiş bir ağ bağımlılığını bul |
| Yazı boyutunu büyüt | Ad ve kontrol erişilebilir kalıyor | İşlemi kesen ya da gizleyen kısıtlamaları kaldır |
Bir satır başarısız olursa “her şeyi yeniden yaz” deme. İşlemi, beklenen sonucu ve gözlemlenen sonucu anlat. Örneğin: “Yeniden açtıktan sonra, işaretlemiş olmama rağmen kutu boşalıyor. Nedenini açıkla ve tasarımı değiştirmeden kalıcılığı düzelt.”
CLAUDE.md şablonunu ve kontrol listesini indir (.md). Editöründe ya da bir not uygulamasında aç. Ajana vermeden önce komutları projene göre uyarla.
Adım 6: inceletip test et
Claude Code doğru görünen kod yazar. Doğru olup olmadığını sana sadece testlerin ve iPhone'un söyler.
Çalışanı bozmamak için testler
Uygulaman büyüdükçe her istek, zaten onaylanmış bir ekranı bozma riski taşır. Expo'nun oluşturduğu projede test yok: önce Claude'dan, Expo dokümantasyonunun önerdiği gibi Jest'i jest-expo ile kurmasını iste. Sonra önemli mantık için test iste (bir serinin hesaplanması, bir formun doğrulanması) ve her değişiklikten sonra bunları çalıştırt. Test komutlarının CLAUDE.md içinde yazılı olmasının sebebi bu: Claude onları sen hatırlatmadan çalıştırır. Bir kural dosyası ve testlerle yapay zekâ, zaten çalışanı çok daha az bozar.
Her değişikliği oku
Her satırı anlaman gerekmiyor. Hangi dosyaların değiştiğini ve neden değiştiğini bilmen gerekiyor. Claude konuyla ilgisiz bir dosyaya dokunduysa, kabul etmeden önce sebebini sor. Sonra şu soruyu sor: “burada ne bozulabilir?”.
Küçük ve büyük bir iPhone'da kontrol et
Bana en pahalıya patlayan ders bu. Solys, Apple tarafından 2.1 kuralı gerekçesiyle reddedildi: onboarding demosu, uygulamanın iPhone uyumluluk modunda çalıştığı bir iPad Air'de kazanılamıyordu. Sebep: ekran boyutuna göre göreli değil, sabit noktalarla kodlanmış yükseklikler. Benim iPhone'umda her şey yolundaydı. Kod incelenmişti, testler yeşildi. Hiçbir araç ekrana başka bir boyutta bakmamıştı.
O zamandan beri her ekranı en az en küçük ve en büyük iPhone'da kontrol ediyorum. Tek telefonun varsa Mac'teki Xcode simülatörü ya da başka bir modeli olan bir arkadaşın işini görür. Özellikle uzun metinlere, formlarda açık klavyeye ve alta sabitlenmiş butonlara bak.
Claude Code'un kötü yaptığı şeyler
Claude Code ekranlarda ve mantıkta çok iyi. Klasörünün dışında ise çok daha az güvenilir.
İmzalama ve sertifikalar
Apple hesabına yetkili bir bağlantı olmadan Claude onun durumunu bilemez. Xcode ile Expo'yu karıştıran bir sertifika prosedürü uydurabilir. İmzalamayı EAS'e bırak: Expo'nun dokümantasyonu, Apple Developer hesabına bağlandıktan sonra EAS CLI'ın bu dosyaları senin için oluşturup saklayabileceğini anlatıyor.
App Store Connect
Ürün sayfası, gizlilik beyanları, ekran görüntüleri ve yasal bağlantılar, App Store Connect'te kontrol edilmesi gereken veriler. Claude Code artık gerekli erişimlerle Chrome entegrasyonu üzerinden oturum açılmış bir tarayıcıda işlem yapabiliyor. Bu, alanların doğru olduğunu garanti etmez: bilgileri tekrar oku, kullanılan hesapları kontrol et ve taahhütleri ve incelemeye gönderimi kendin onayla.
Abonelikler
Bir paywall yazmak on dakika sürer. App Store Connect'teki ürünleri, RevenueCat'teki yapılandırmalarını ve kodu birbiriyle eşleştirmek ise bambaşka bir hikâye. Tek karakteri farklı bir kimlik yeter, reviewer'da paywall boş kalır. En sık tuzaklar yeni başlayanların iOS paywall hataları yazısında listeleniyor.
Uç durumlar
Talimat olmadan Claude sadece normal senaryoyu ele alır. Ağ yok, boş liste, yarıda kesilen satın alma: bunları adlandırmak sana düşüyor.
Supabase güvenliği
Claude Supabase'de tablo oluşturduğunda, satır düzeyinde güvenliğin (RLS) her kullanıcıyı kendi verileriyle sınırlayan politikalarla etkin olduğunu kontrol et. Uygulama kodunda hiçbir gizli anahtarın bulunmadığını da kontrol et. Bir veritabanı bağladığın anda bu iki yasağı CLAUDE.md dosyana yaz.
Adım 7: EAS ile TestFlight'a geç
Ekranların, kullanılan modüllere göre Expo Go'da ya da bir development build'de kontrol edildi. Şimdi test kullanıcılarına dağıtılacak build'e geç.
EAS'i hazırla
Artık ücretli bir Apple Developer hesabı gerekiyor: Expo'nun da hatırlattığı gibi, App Store'a uygulama göndermek için zorunlu. Sonra Expo'nun aracını kur ve projeyi yapılandır:
npm install --global eas-cli
eas login
eas build:configure
app.json içinde, ios.bundleIdentifier altına benzersiz bir bundle kimliği ekle, örneğin com.yourname.myapp.
Derle ve gönder
eas build --platform ios --profile production
eas submit --platform ios
İlk komut uygulamayı Expo'nun sunucularında derler. İlk çalıştırmada EAS, sertifikaları oluşturmak için Apple hesabına bağlanmayı önerir. İkincisi build'i App Store Connect'e gönderir. Her şeyi tek seferde eas build --platform ios --auto-submit ile de yapabilirsin.
Build, TestFlight'ta görünmeden önce Apple tarafından işlenmeli ve bu işlem onu reddedebilir, örneğin şeffaf bir ikon için ITMS-90717. Yani başarılı bir gönderim, build'in hemen kurulabilir olduğu anlamına gelmez: durumunu App Store Connect'te kontrol et. Dahili ve harici test kullanıcıları ve beta incelemesi, iPhone uygulamanı test etmek için TestFlight rehberimde anlatılıyor.
- adımdaki kontrolleri bu build'de tekrarla. Expo Go'da çalışan bir uygulama, örneğin bir native modül eksik olduğunda, production'da hâlâ çökebilir.
Gerçekte ne kadara mal oluyor
Aşağıdakiler, servislerin gösterdiği ve 27 Eylül 2026'da kontrol edilen dolar fiyatları. Faturalanan tutar bölgene, vergilere ve kullanımına da bağlı: abone olmadan önce planı kontrol et.
- Claude aboneliği: Pro planı aylık 20 $, yıllık ödemede aylık 17 $. Daha fazla kullanım için Max planları aylık 100 $'dan başlıyor.
- Apple Developer hesabı: yıllık 99 $, TestFlight ve App Store için zorunlu.
- EAS: Expo'nun ücretsiz planı, düşük öncelikli bir kuyrukta ayda 15 iOS build'i içeriyor. Starter planı aylık 19 $, artı ek kullanım.
Küçük bir prototip için, kotaların içinde kalırsan Pro ve EAS'in ücretsiz planı bir temel oluşturabilir. TestFlight'tan önce Apple hesabını ekle, sonra gerçekten gereken servisleri ayrı ayrı hesapla: veritabanı, depolama ya da ücretli API. İlk uygulama bütçe şablonu bu kalemleri ortaya koymana yardım eder. Yapılandırma ve kontrol için harcayacağın zamanı da hesaba katmalısın.
Dürüst sınırlar ve nerede takılınıyor
Claude Code, kimin iPhone uygulaması yapabileceğini değiştirdi. Apple'ın yayınlamak için istediklerini değiştirmedi. Ret hızlı gelir: Solys ret yedi, Nolera ve Clic de. En sık gerekçeler Apple neden bir uygulamayı reddeder yazısında anlatılıyor.
Bu rehberle TestFlight'a kadar tek başına gidebilirsin. En sık takılınan yer sonrası: abonelikleri bağlamak, reviewer için dosyayı hazırlamak, bir reddi anlamak. Sürecin genel görünümü için iPhone uygulaması yapmak sayfasını oku.
Bu kısım için iOS Kit, uygulamalarımın abonelikler dahil başlangıç kodunu, her adım için Claude Code skill'lerini ve Apple Review Kit'i bir araya getiriyor. Sürecin tamamı iOS uygulaması yapmak için Claude Code eğitimi sayfasında.
Şimdiden takıldın ve neye takıldığını bilmiyor musun? Ücretsiz teşhis seni gerçekte neyin yavaşlattığını söylüyor ve Apple retlerine karşı kontrol listemi gönderiyor.
Sık sorulan sorular
Kod bilmeden Claude Code ile iPhone uygulaması yapılabilir mi?
Ekranlar ve basit mantık için evet, her adımı okuyup test edersen. Hiçbir şey anlamamayı umuyorsan hayır. Bir hata mesajını okumayı, bir komut çalıştırmayı ve Claude'un neyi değiştirdiğini kontrol etmeyi bilmen gerekiyor. Bunlar yaparken hızla öğreniliyor.
Claude Code ücretsiz mi?
Hayır. Claude Code, Pro, Max, Team, Enterprise ya da Console hesabı istiyor. claude.ai'nin ücretsiz planı onu içermiyor. Pro planı başlamana yeter, takip etmen gereken kullanım limitleriyle.
Claude Code ile iOS uygulaması yapmak için Mac gerekir mi?
Hayır. Herhangi bir bilgisayarda kod yazarsın, iPhone'undaki Expo Go'da test edersin, EAS de uygulamayı Expo'nun sunucularında derleyip gönderir. Simülatör için Mac pratik ama zorunlu değil.
React Native uygulaması için Claude Code mu Cursor mu?
İkisini de her gün kullanıyorum. Claude Code terminalde çalışıyor ve değişikliği ve testleri kendi başına art arda yapıyor. Cursor bir editör. Yöntem araçtan daha önemli: kurallar, her seferinde tek ekran, testler.
Claude Code ile ilk uygulamayı yayınlamak ne kadar sürer?
Uygulamanın büyüklüğüne ve zamanına bağlı. Tek özellikli bir uygulama çok daha hızlı ilerler. En öngörülemeyen kısım yine Apple incelemesi.
Claude Code uygulama içi abonelikleri yapılandırabilir mi?
Paywall'un ve RevenueCat'in kodunu yazabilir. Bağlı araçlar ve gerekli izinlerle konsollarda da işlem yapabilir. Kodun var olmasından ürünlerin yapılandırıldığı sonucunu asla çıkarma: kimlikleri, fiyatları ve satın alma sonrası yetkileri kontrol et, sonra satın almayı ve geri yüklemeyi TestFlight'ta test et. iOS paywall'larındaki sık hatalar sana kontrol edilecek noktaları veriyor.