PWA Fitness Uygulaması: App Store Olmadan | 2025 Rehberi
App Store komisyonu olan %30'dan kaçınan bir fitness PWA'sı nasıl oluşturulur? iOS zorlukları, video çözümleri ve WorkoutGen'de test edilmiş benimseme stratejileri.
- PWA
- Progressive Web Uygulaması
- mobil geliştirme
- fitness teknolojisi
- vücut geliştirme
- Lemon Squeezy
Uygulama Mağazalarını Atlayarak Uygulama Oluşturmanın Gerçekleri
Profesyonel bir mobil uygulama başlatmak için Apple veya Google'ın iznine ihtiyacın yok. Spor eğitmeni arkadaşımla birlikte, App Store veya Google Play'e dokunmadan tüm cihazlarda mükemmel çalışan bir Progressive Web Uygulaması (PWA) olarak WorkoutGen - kişiselleştirilmiş spor salonu vücut geliştirme programları oluşturan bir antrenman jeneratörü - oluşturduk.
Bu makale, PWA'yı üretimde geliştirme ve dağıtıma ilişkin somut deneyimimi paylaşıyor; ekonomik avantajlar (müşteri başına %30 daha fazla gelir), teknik zorluklar (özellikle Safari'nin video hataları) ve uyguladığım kullanıcı benimseme stratejileri dahil. Gerçekler pazarlama söyleminden daha nüanslı, ancak fırsatlar gerçek.
İyi Bir Fitness PWA'sını Ne Yapar?
Profesyonel bir vücut geliştirme PWA'sı şunları sunmalıdır (ve WorkoutGen tüm bunları uygular):
- Önce çevrimdışı mimari - İnternet olmadan erişilebilir antrenmanlar
- Ana uygulama performansı - Akıcı animasyonlar, anında yanıtlar
- Medya yönetimi - Tüm platformlarda çalışan egzersiz videoları veya GIF'leri
- Yükleme istemleri - PWA'lara aşina olmayan kullanıcılar için net bir başlangıç
- Ödeme entegrasyonu - Lemon Squeezy aracılığıyla doğrudan faturalandırma (platform komisyonu %0'a karşı mağazaların %30'u)
- Çapraz platform tutarlılığı - iOS, Android, masaüstü üzerinde aynı deneyim
Neden Ana Uygulamalar Yerine PWA'yı Seçtim?
Ekonomik Argümanlar İkna Edici
Geleneksel Uygulama Mağazaları:
- Tüm işlemlerden %30 komisyon (Apple, Google)
- Yıllık geliştirici ücretleri (99-299$)
- Zorunlu uygulama içi satın alma sistemi
- Aboneliklerden gelir paylaşımı (1. yıl: %30, 2.+ yıl: %19)
PWA + Lemon Squeezy (Kayıtlı Tüccar):
- %0 platform komisyonu
- Lemon Squeezy ücreti %5 + 0.50$ (ödeme işleme + vergi uygunluğu dahil)
- Lemon Squeezy tüm ülkelerdeki KDV/vergileri yönetir - her ülkede kaydolmaya gerek yok
- Faturalandırma mantığı üzerinde tam kontrol
- Anında ödeme güncellemeleri (App Store gibi 24-48 saat gecikme yok)
Ayda 10€ olan bir abonelik için, uygulama mağazalarıyla 7€, Lemon Squeezy ile ise ~9€ kazanırsın. Bu, müşteri başına ~%29 daha fazla gelir anlamına gelir. Lemon Squeezy, tüm ülkelerdeki vergi uygunluğunu ve yasal yükümlülükleri %100 yönetir - herhangi bir şey beyan etmene gerek yoktur.
Geliştirmenin Gerçekliği
| Özellik | Ana Uygulamalar | PWA |
|---|---|---|
| Kod Tabanı | 2-3 ayrı (iOS/Android/Web) | Tek kod tabanı |
| Güncellemeler | Mağaza onayı (3-7 gün) | Anında dağıtım |
| Dağıtım | Mağaza onayı gerekli | Doğrudan URL paylaşımı |
| Yükleme | 50MB+ indirmeler | 2-5MB önbelleğe alınmış varlıklar |
| Çevrimdışı Destek | Manuel uygulama | Standart Service Worker |
Peki ya Çapraz Platform Çözümleri?
PWA'ya tam olarak başlamadan önce, ana çapraz platform alternatiflerini değerlendirdim:
React Native / Flutter: "Bir kez yaz, her yere dağıt" vaat etse de hala şunları gerektirir:
- Ayrı iOS ve Android derleme ardışık düzenleri
- Yerel işlevsellikler için platforma özel kod
- Uygulama mağazalarına gönderimler ve onaylar
- 40-60MB+ uygulama indirmeleri
- Dart öğrenmek (Flutter için) - JavaScript'ten daha küçük bir ekosisteme sahip yeni bir dil
Capacitor (Hibrit Sarıcı): Yerel API'lere erişmek için kullanışlıdır, ancak karmaşıklık ekler:
- Sadece sarıcı için 15MB ekstra yük
- Dağıtım için hala uygulama mağazası onayı gerekir
- Saf web uygulamalarının anında güncelleme avantajını kaybeder
- İsteğe bağlı bir iyileştirme olarak daha iyi kullanılır, ön koşul olarak değil
PWA + Capacitor (benim seçimim): WorkoutGen'i önce saf bir PWA olarak, daha sonra isteğe bağlı bir Capacitor sarıcısıyla yerel işlevsellikler için oluşturdum. Bu şunları sağlar:
- Ana deneyim web aracılığıyla her yerde çalışır (mağazaya gerek yok)
- App Store'da keşif için yerel uygulama sarıcıları mevcuttur
- Koşullu yerel iyileştirmelerle tek kod tabanı
- Web güncellemelerinin anında dağıtımı, yerel güncellemeler gerektiğinde
Teknik Zorluklar (ve Çözümleri)
iOS'ta Video Oynatma: Safari'nin Tarihi Bug'ları
Asla bitmeyen sorun:
iOS'taki Safari, PWA geliştiricilerini yıllardır rahatsız eden kalıcı ve düzeltilmemiş video oynatma hatalarına sahip. Bu spekülasyon değil - WebKit'in hata izleyicisinin kendisinde belgelenmiş durumda:
Son sorunlar:
- iOS 26 (2025): PWA'yı kapatıp yeniden açtıktan sonra videolar ilk karede donuyor (WebKit Bug #300990)
- iOS 15-18 (devam ediyor): getUserMedia() video akışları bazen PWA'larda siyah ekran gösteriyor (WebKit Bug #252465, Şubat 2023'te bildirildi, "düzeltildi" olarak işaretlendi ama hala mevcut)
Tarihsel durumlar:
- Bug #232076 (2021): Blob URL'lerinden gelen videolar, 2MB'lık videolar için 200-300MB bellek tüketiyor ve başlaması 10 saniyeden fazla sürüyordu. Aylarca süren araştırmalardan sonra iOS 15'te düzeltildi.
- Bug #198277 (2019-2022): PWA'lar arka plana geçtiğinde ses duruyordu. Düzeltilmesi 3 yıl sürdü (sonunda iOS 15.4'te, Şubat 2022'de çözüldü).
- Stack Overflow raporları:
/public/dizininden sunulan videolar sayfa yenilendikten veya PWA Safari'ye (iOS ve macOS) yüklendikten sonra yüklenmiyor. Çözüm: videoları harici bir CDN'de barındırmak.
Desen açık: Safari PWA'lardaki video/medya hataları bildirilir, bazen "düzeltildi" olarak işaretlenir, ardından yeni iOS sürümlerinde yeniden ortaya çıkar.
Benim atlatma stratejim:
WorkoutGen için birkaç yedek yaklaşım uyguladım:
- Tüm video öğelerinde
crossorigin="anonymous"niteliğini kullanmak - iOS uyumluluğu için
playsInline,mutedveautoPlayeklemek - Yükleme sorunlarını azaltmak için video meta verilerini önceden yüklemek
- Belirli iOS sürümü hatalarını izlemek ve uyarlamak (iOS 26 için ayrı videolar)
- Videoların başarısız olabileceği varsayımıyla kullanıcı deneyimini tasarlamak - yedek olarak metin talimatları sağlamak
Hayal kırıklığı yaratan gerçek: #198277 gibi hataların düzeltilmesi 3 yıl sürdü ve getUserMedia() video oynatma (#252465) gibi güya "çözülmüş" sorunlar yeni iOS sürümlerinde yeniden ortaya çıkmaya devam ediyor. Apple'ın PWA desteği, yerel uygulama API'lerine göre açıkça daha az önceliğe sahip; düzeltmeler, hızlı WebKit yamalarından ziyade "temel platform düzeyinde değişiklikler" gerektiriyor.
iOS'ta Yerel Yükleme Olayları Yok
Sorun: Safari, beforeinstallprompt olaylarını tetiklemiyor, bu da şunların imkansız olduğu anlamına geliyor:
- Yerel yükleme istemlerini programlı olarak göstermek
- Kullanıcıların PWA'nı sayfa yüklenmeden önce zaten yükleyip yüklemediğini tespit etmek
- Kullanıcının manuel eylemi olmadan yükleme başarısını izlemek
Benim çözümüm: Video eğitim kaplamaları
iOS kullanıcıları otomatik yükleme istemleri alamadığı için, kişiselleştirilmiş bir başlangıç akışı oluşturdum:
// WorkoutGen algılama mantığı
const isPWAInstalled = () => {
// iOS algılama
if (window.navigator.standalone) return true
// Android/Masaüstü
if (window.matchMedia("(display-mode: standalone)").matches) return true
return false
}
// beforeinstallprompt olmayan tarayıcılar için eğitim göster
const browserInfo = detectBrowser()
if (!browserInfo.canInstallPWA && !isPWAInstalled()) {
showVideoTutorial() // Yükleme talimatları içeren kişiselleştirilmiş eğitim
}
WorkoutGen, kullanıcılara iOS'ta "Paylaş → Ana Ekrana Ekle"ye tam olarak nasıl dokunulacağını gösteren kısa eğitim videoları gösterir. Videolar bağlamsaldır - iOS 26'ya kıyasla eski sürümler, iOS'ta Safari'ye karşı Chrome için farklı talimatlar.
Bu kullanıcı deneyimi yatırımı kritikti: yerel yükleme istemleri olmadan, iOS'ta PWA'ların benimsenmesi tamamen kullanıcı eğitimine bağlıdır.
Service Worker Önbellek Stratejisi
Çevrimdışı antrenmanlar agresif önbelleğe alma gerektirir. WorkoutGen, Workbox ile Vite PWA Plugin'i kullanır:
// apps/frontend/vite.config.ts gerçek yapılandırması
VitePWA({
registerType: "prompt",
workbox: {
globPatterns: ["**/*.{js,css,html,ico,png,svg,woff,woff2}"],
globIgnores: ["**/*.mp4", "**/*.webm", "**/*.gif", "**/*.jpg", "**/*.jpeg", "**/*.webp"],
maximumFileSizeToCacheInBytes: 40 * 1024 * 1024,
cleanupOutdatedCaches: true,
navigateFallback: null,
},
})
Önemli kararlar:
- Statik varlıkları (JS, CSS, yazı tipleri) anında yükleme için önbelleğe almak
- Büyük medya dosyalarını önbellekten hariç tutmak - CDN aracılığıyla talep üzerine almak
- iOS'taki depolama kotası sorunlarını önlemek için 40MB önbellek limiti (Safari 50MB'de sınırlandırır)
registerType: 'prompt'kullanıcıların ne zaman güncelleyeceğini kontrol etmesine izin verir- Egzersiz medyası için CacheFirst stratejisi ile çalışma zamanı önbelleği
Bu, WorkoutGen'e iOS depolama sınırları içinde kalırken tam çevrimdışı işlevsellik sağlar.
PWA'larla İlgili Hayal Kırıklıkları (ve Neden Hala İyimserim)
Yükleme İşlevleri İçin Sınırlı Tarayıcı Desteği
Safari (iOS): beforeinstallprompt olayı yok, otomatik yükleme kullanıcı arayüzü yok, yükleme banner'ı yok. Kullanıcılar, Paylaş → "Ana Ekrana Ekle" menüsü aracılığıyla manuel olarak gitmeli - çoğu kişinin bilmediği 4 dokunuşlu bir işlem.
Firefox (Masaüstü): PWA yükleme desteği tutarsız. Bazı sürümler destekler, bazıları desteklemez. Yükleme düğmesi tahmin edilemez bir şekilde görünür.
Chrome/Edge (Android): Otomatik yükleme istemleri ile mükemmel çalışır, ancak iOS pazar payı göz önüne alındığında dünya genelinde azınlıktadır.
Çözüm mü? Her tarayıcı için özel bir yükleme kullanıcı deneyimi oluşturmak. WorkoutGen için şunları uyguladım:
- iOS yükleme adımlarını gösteren video eğitimleri
- İlgili talimatları görüntülemek için tarayıcı tespiti
- Bağlamsal kılavuzları tetikleyen özel "Ana Ekrana Ekle" düğmeleri
- iOS 26'ya karşı eski sürümler için farklı akışlar
Bu, geliştirme yükü ekler, ancak ayrı yerel kod tabanlarını sürdürmeye kıyasla yönetilebilir.
Çoğu Kullanıcı PWA'ların Var Olduğunu Bilmiyor
Bu en büyük zorluk. Birine "bu uygulamayı yükle" dediğinde, bir uygulama mağazasına gitmeyi bekler. "Aslında, tarayıcındaki bu düğmeye dokun" diye açıklamak sürtünme yaratır.
İki stratejinin işe yaradığını buldum:
- PWA deme - sadece "Tam deneyim için Ana Ekranına Ekle" de
- Göstermek, söylemek değil - yükleme sürecini gösteren video eğitimlerini kullan
Kullanıcı eğitimi gerçek bir iştir, ancak %30 platform ücretlerinden kaçınmak ve anında dağıtım elde etmek için buna değer.
Bu Sınırlamalara Rağmen Neden Hala İyimserim?
Şu var ki: PWA'lar, belirli bir uygulama sınıfı için aşırı derecede hafife alınıyor.
SaaS ürünleri, içerik platformları ve WorkoutGen gibi araçlar için:
- ✅ İlk günden itibaren tüm platformlara dağıtım (iOS, Android, masaüstü, web)
- ✅ Uygulama mağazaları olmadan çevrimdışı çalışabilen tam ekran deneyimi
- ✅ Onay gecikmeleri olmadan anında güncellemeler
- ✅ Gelirlerin ~%90'ını koru, %70 yerine (Lemon Squeezy ücretleri %5+%50'ye karşı uygulama mağazası komisyonları %30)
- ✅ Kullanıcılarla doğrudan ilişki (platform aracısı yok)
Evet, Safari desteği sinir bozucu. Evet, kullanıcı farkındalığı düşük. Ancak bunlar, temel teknik sınırlamalar değil, çözülebilir kullanıcı deneyimi sorunlarıdır. Temel teknoloji harika çalışıyor - sadece çoğu geliştirici, PWA'ları ciddi olarak değerlendirmeden varsayılan olarak yerel uygulamaları seçtiği için yeterince kullanılmıyor.
Peki ya Antrenman Planlama için AI/ChatGPT?
ChatGPT antrenman programları oluşturabilir, ancak ciddi antrenman için başarısız olur:
- Egzersiz video kütüphanesi yok - ChatGPT egzersizleri açıklayabilir, ancak sana doğru formu gösteremez. WorkoutGen, tüm ana vücut geliştirme egzersizlerini profesyonel gösterimlerle kapsayan özel olarak oluşturulmuş bir video veritabanı içerir.
- Yapılandırılmış ilerleme - Haftalık progresif aşırı yükleme, periyodizasyon veya de-load haftalarının takibi yok
- Çevrimdışı erişim - Her sorgu için İnternet gerektirir (kötü sinyalli spor salonlarında kullanılamaz)
- Kişiselleştirme belleği - Konuşma geçmişini manuel olarak sürdürmediğin sürece oturumlar arasında bağlamı kaybeder
- Yürütme arayüzü yok - Bir metin planı alırsın, ancak setler, dinlenme süreleri ve egzersiz sırası boyunca sana rehberlik edecek bir antrenman oynatıcısı yok
WorkoutGen'in egzersiz video veritabanını oluşturmak aylar süren bir işti - çekim, düzenleme, sıkıştırma ve mobil oynatma için optimizasyon. Bu, AI'nin sağlayamayacağı bir şeydir, çünkü tamamen metin tabanlı çalışır. Yapılandırılmış algoritmalar + görsel gösterimler + çevrimdışı erişimin kombinasyonu, PWA'ların konuşmalı AI'ya karşı öne çıktığı yerdir.
Peki ya Antrenman Eğitimleri için YouTube?
YouTube egzersizleri öğrenmek için harika, ancak gerçek antrenman için korkunç:
- Antrenman yapısı yok - 6 farklı videoyu bir araya getirirsin
- Reklamlar setleri keser - Antrenman sırasında ivmeyi öldürür
- İlerleme takibi yok - Tekrarları, ağırlığı veya gelişimleri kaydetmek imkansız
- İnternet gerekli - Kötü sinyalli spor salonlarında kullanılamaz
Bir PWA sana her iki dünyanın en iyisini sunar: yapılandırılmış bir antrenman sisteminde düzenlenmiş video içeriği.
Dürüst Tavsiyelerim
Fitness/üretkenlik/SaaS uygulamaları geliştirenler için:
- Kesinlikle yerel API'lere (HealthKit, ARKit, Arka Plan Uygulama Yenileme) ihtiyacın olmadıkça PWA ile başla
- Optimal bir geliştirici deneyimi için React 19 + Vite 7 + Vite PWA Plugin + Workbox kullan
- Sadece uygulama mağazasında varlık sağlamak için isteğe bağlı yerel sarıcılara ihtiyacın olursa daha sonra Capacitor ekle
- Geliştirme boyunca gerçek iOS cihazlarda test et - Safari'nin PWA hataları seni şaşırtacak
- Özel bir yükleme kullanıcı deneyimi için zaman ayır (video eğitimleri, tarayıcı tespiti, bağlamsal istemler)
Girişimciler ve kendi kendine finanse eden kurucular için:
- MVP'ler için önce PWA - Tek kod tabanı ile aylarca değil, haftalar içinde tüm platformlara dağıtım yap
- Ekonomi PWA'ları destekliyor - Gelirlerin ~%90'ını koru (Lemon Squeezy %5+%50'ye karşı uygulama mağazaları %30)
- Anında yineleme - Onay gecikmeleri olmadan güncellemeleri saniyeler içinde dağıt
- Uygulama mağazaları isteğe bağlı - Gerekirse keşif için yerel sarıcıları daha sonra ekle, ancak ana ürün web aracılığıyla her yerde çalışır
- Ayda 10K$+ MRR'dan sonra yerel uygulamaları düşün, bu yükü haklı çıkarmak için
Kullanıcılar için:
- WorkoutGen PWA'yı dene: my.workoutgen.app
- Tarayıcı menüsü aracılığıyla yükle: Paylaş → "Ana Ekrana Ekle"ye dokun (iOS) veya tarayıcının yükleme düğmesi (Android)
- Çevrimdışı çalışır, tam ekran, yerel bir uygulama gibi hissettirir - 50MB+ indirme olmadan
Sonuç
WorkoutGen'i bir üretim PWA'sı olarak geliştirdikten sonra öğrendiklerim şunlar:
Avantajlar:
- ✅ Müşteri başına ~%25 daha fazla gelir elde et - Lemon Squeezy %5+%50'ye karşı App Store %30 (Lemon Squeezy tüm vergi uygunluğunu yönetir)
- ✅ Tek kod tabanından tüm platformlara dağıtım yap - iOS, Android, masaüstü, web aynı anda
- ✅ Güncellemeleri anında dağıt - Onay gecikmeleri yok (saatler yerine günler)
- ✅ Tam çevrimdışı işlevsellik - Service Worker'lar kullanıcıların ihtiyaç duyduğu her şeyi önbelleğe alır
- ✅ Daha hızlı geliştirme hızı - Yerel derleme araçları veya platforma özel API'ler yok
Zorluklar:
- ⚠️ Safari PWA desteği sinir bozucu - Yıllardır düzeltilmeyen video oynatma hataları, sınırlı API'ler
- ⚠️ iOS'ta otomatik yükleme istemleri yok - Özelleştirilmiş bir kullanıcı deneyimi ve kullanıcı eğitimi gerektirir
- ⚠️ Tarayıcı uyumluluğu değişir - Chrome'da çalışan şey Safari'de bozulabilir
- ⚠️ Kullanıcı farkındalığı düşük - Çoğu insan PWA'ların var olduğunu bilmiyor
- ⚠️ Uygulama mağazası aracılığıyla keşif yok - Organik veya ücretli edinilmiş trafiğe ihtiyacın var
Karar:
PWA'lar, belirli kullanım durumları için aşırı derecede hafife alınıyor: SaaS araçları, üretkenlik uygulamaları, içerik platformları ve yapılandırılmış çevrimdışı erişimin uygulama mağazası yerleşiminden daha önemli olduğu WorkoutGen gibi uygulamalar.
Teknoloji olgun ve üretim için hazır. Zorluklar主要是 kullanıcı deneyimi ve kullanıcı eğitimi - temel sınırlamalar değil, çözülebilir sorunlar. Kendi trafiğini oluşturabileceğin ve platform ücretlerinden kaçınmak istediğin bir uygulama oluşturuyorsan, PWA'lar yerel geliştirmeye cazip bir alternatif sunar.
WorkoutGen bunun ölçekte işe yaradığını kanıtlıyor. 2-3 sorun (Safari hataları, kullanıcı eğitimi), avantajlar tarafından büyük ölçüde telafi ediliyor: anında dağıtım, sıfır platform ücreti ve gerçek çapraz platform erişimi.
Ücretsiz gerçek bir güç programı başlat
Videolar ve takip ile aşamalı bir plan oluştur. Ücretsiz uygulama. WorkoutGen Max; AI yük önerileri, tam özelleştirme ve gelişmiş analizler ekler.
Ücretsiz başla →