Capgo Semver Tester
Cek kompatibilitas kebijakan channel terhadap baseline native yang dikirim sebagai version_build
Versi bundle yang ditetapkan ke channel yang dipilih.
Arti dari "Native Baseline Version"
Native Baseline Version adalah versi native app yang dikirim ke Capgo sebagai
version_build saat perangkat meminta bundle ke update server. Pada aplikasi Capacitor, nilai tersebut bisa berasal dari
CapacitorUpdater.version di capacitor.config.*. Jika pengaturan tersebut tidak ada,
plugin akan menggunakan versi native app dari iOS atau Android. Jangan berasumsi itu adalah versi package.json
kecuali build Anda menyalin nilai tersebut ke dalam config atau metadata native.
Capgo tetap menggunakan version_name untuk mengetahui bundle mana yang terinstal saat ini. Kebijakan semver Channel seperti major, minor, dan
patch membandingkan bundle remote dengan version_build.
konfigurasi Capacitor
Atur CapacitorUpdater.version saat Anda ingin aplikasi mengirimkan satu versi eksplisit.
Pro: mudah disamakan di build iOS dan Android.
Kontra: konfigurasi usang bisa melaporkan versi yang salah jika Anda lupa memperbaruinya sebelum rilis native.
Versi aplikasi native
Gunakan versi platform, misalnya iOS CFBundleShortVersionString atau Android
versionName.
Pro: sesuai dengan binary yang dipasang pengguna dari TestFlight, App Store, Play Store, atau internal testing.
Kontra: mengubahnya memerlukan Native Build dan bisa berbeda tiap platform jika pengaturan rilis berubah.
Targeting Bundle
Bandingkan dengan versi bundle remote, aturan semver channel, atau batasan upload metadata seperti --min-update-version. Channel harus menggunakan --disable-auto-update metadata.
Pro: mencegah pengiriman JavaScript yang butuh code native lebih baru ke binary app lama.
Kontra: aturan yang terlalu ketat dapat memblokir update valid sampai metadata channel atau bundle disesuaikan.
Untuk tester ini, masukkan baseline native yang dikirim perangkat sebagai version_build, lalu bandingkan dengan versi bundle remote
yang ingin dikirim oleh Capgo.
Mengapa Capgo menggunakan Semantic Versioning
Semantic Versioning adalah standar versioning yang paling banyak digunakan dalam pengembangan software. Dengan semver, Capgo memastikan kompatibilitas dan keamanan saat mengirimkan live updates ke aplikasi Capacitor Anda.
Standar semver memungkinkan Capgo memahami dengan tepat perubahan apa saja yang ada di setiap update:
- Update patch (1.0.0 → 1.0.1): Perbaikan bug, aman untuk diterapkan secara otomatis
- Pembaruan minor (1.0.0 → 1.1.0): Fitur baru, tetap backward compatible
- Pembaruan major (1.0.0 → 2.0.0): Breaking changes, butuh rilis native app store
Ini mencegah Capgo mengirimkan update yang tidak kompatibel ke code native Anda, melindungi user dari crash dan menjaga aplikasi tetap stabil.
Strategi Semver yang fleksibel: lebih dari sekadar versioning dasar
Meskipun semver sangat ketat pada format intinya, Anda bisa mengembangkannya sesuai kebutuhan tim menggunakan identifikasi pre-release dan metadata build:
🏷️ Build Metadata (+) - Lapisan "Kosmetik"
Penting: Build metadata diabaikan dalam prioritas versi -
1.2.0+anything sama dengan 1.2.0 untuk logika update Capgo.
🔧 Identifier Pre-release (-) - Channel Pengembangan
Catatan: Versi pre-release memiliki prioritas lebih rendah -
1.3.0-beta.1 < 1.3.0
🎯 Hybrid Approach - Solusi Terbaik
Kasus Penggunaan Semver & Strategi Tim di Dunia Nyata
🚀 Startup / Pengembangan Cepat
0.1.0 - Rilis MVP pertama0.2.0-beta.1 - Testing fitur baru0.2.0+ui.v2 - Metadata desain ulang UI1.0.0 - Siap untuk ProductionGunakan 0.x.x untuk pengembangan pre-1.0, gunakan metadata untuk tracking desain
🏢 Enterprise / Terregulasi
2.1.0 → Rilis kuartalan2.1.1+sec.patch.cve2024 → Security patch dengan tracking2.2.0-rc.1+audit.ready → Release candidate pra-auditSemver ketat dengan metadata kepatuhan
🎮 Aplikasi Gaming / Kreatif
1.0.0+season.winter.2024 → Konten musiman1.1.0+event.halloween → Fitur berbasis event1.2.0+assets.hd.remaster → Update asetMetadata kreatif untuk tracking konten
⚡ Strategi Hotfix
1.2.0 → Produksi saat ini1.2.1-hotfix.payment → Perbaikan bug kritis1.2.1+urgent.20240315.1430 → Rilis dengan timestampPre-release untuk testing, metadata untuk tracking deployment
🌍 Strategi Multi-Platform
1.3.0+ios.optimized → Optimasi khusus iOS1.3.0+android.material3 → Update desain Android1.3.0+web.pwa.ready → Kapabilitas PWAVersi sama, metadata spesifik platform
🔄 Integrasi CI/CD
1.4.0-alpha.1+build.123 → Pre-release otomatis1.4.0+deploy.staging.456 → Deployment staging1.4.0+prod.final.789 → Deployment productionVersioning otomatis dengan metadata deployment
- Gunakan build metadata (+) untuk tracking, timestamp, atau info kosmetik yang tidak memengaruhi kompatibilitas
- Gunakan identifier pre-release (-) untuk channel development yang butuh prioritas update berbeda
- Gabungkan keduanya untuk fleksibilitas maksimal:
1.2.0-beta.1+ui.dark.theme.20240315 - Ingat: Capgo mengikuti aturan prioritas semver, jadi rencanakan strategi channel Anda sesuai itu
Penting: Capgo menggunakan semantic versioning yang ketat
Berbeda dengan implementasi semver npm, Capgo mengikuti spesifikasi resmi SemVer secara ketat. node-semver milik npm memiliki penyimpangan dari spesifikasi yang dapat menyebabkan perilaku tidak terduga.
Sebagai contoh, npm memperlakukan versi seperti 1.0.0-alpha.1
berbeda dari ketentuan spesifikasi. Lihat
issue yang dilaporkan dan
upaya perbaikan yang tidak pernah di-merge.
Semantic Version yang Valid
1.0.0
✓ Rilis standar
2.1.3-alpha
✓ Pre-release
1.0.0-beta.1
✓ Pre-release dengan angka
1.0.0+build.1
✓ Metadata build
1.0.0-rc.1+build.1
✓ Versi lengkap
Semantic Version Tidak Valid
v1.0.0
✗ Karakter 'v' di depan tidak diizinkan
1.0
✗ Patch version hilang
1.0.0.0
✗ Bagian versi terlalu banyak
1.0.0-
✗ Pre-release kosong
1.0.0+
✗ Build metadata kosong
Perilaku Capgo Update
Tool ini mengikuti spesifikasi resmi Spesifikasi Semantic Versioning tidak seperti implementasi npm.