Biasanya, tim memilih salah satu dari tiga pendekatan untuk lingkungan mobile:
- Dua ID aplikasi (produksi + pra-produksi)
- Satu ID aplikasi + switching lingkungan runtime dinamis
- Satu ID aplikasi + Capgo saluran
Dua pendekatan pertama dapat berfungsi, tetapi mereka menciptakan gesekan jangka panjang. Di tim nyata, model saluran Capgo biasanya adalah yang paling bersih.
Mengapa ID aplikasi duplikat menjadi berisik
Menggunakan com.myapp dan com.myapp.beta Terlihat sederhana, tapi Anda cepat mendapatkan duplikat:
- Dua jalur pipa rilis
- Dua set ID push, tautan dalam, dan pemetaan hak istimewa
- Dua identitas analitis dan crash
- Divergen konfigurasi dan perilaku tidak konsisten antara lingkungan
Kemudian Anda mengelola dua produk di konsol toko, tim, dan instruksi QA internal.
Mengapa konfigurasi switch waktu eksekusi sering kali berantakan
Gaya pola “satu ID aplikasi + switch waktu eksekusi” biasanya berarti aplikasi Anda membaca variabel lingkungan atau flag pada startup dan mengarahkan API, kunci, dan perilaku pembaruan secara dinamis.
Berfungsi hingga:
- QA mulai menghindari alur yang dimaksud karena kondisi konfigurasi sudah ketinggalan zaman,
- Seseorang menggunakan endpoint yang salah di produksi,
- Drift lingkungan menyebabkan bug sulit untuk direproduksi,
- anda perlu memeriksa kesalahan “versi konfigurasi apa yang digunakan oleh biner ini?” di perangkat pengguna.
Kompleksitas ini semakin meningkat dengan setiap rilis dan di mana tim kehilangan kecepatan.
Jalan Capgo : satu ID aplikasi, banyak saluran
Capgo membuat kendali lingkungan eksplisit melalui saluran:
- Tetapkan satu ID aplikasi produksi di App Store / Play.
- Kirim satu biner asli untuk “shell” (sampai perubahan asli memerlukan pembangunan yang benar-benar baru).
- Rute perilaku melalui saluran, bukan melalui identitas aplikasi yang diulang.
Dalam prakteknya, ini berarti:
production: semua penggunastaging: QA internal dan kandidat rilisbeta: tester yang diundanghotfix: jalur pembaruan darurat
Aplikasi pengujian internal Anda di TestFlight/Play dapat tetap ada selamanya.
Anda dapat melakukan pembaruan JS/CSS/asset secara berulang melalui __CAPGO_KEEP_0__ tanpa mempublikasikan aplikasi native baru.
Struktur yang disarankan dalam prakteknya
1) Basis rilis native
Sisa binary native Anda tetap sama untuk banyak iterasi JS:
Anda hanya membangun kembali binary native ketika Anda benar-benar mengubah area permukaan native.
2) Gunakan saluran dedikasi untuk lingkungan
Publikasikan pembaruan dengan saluran:
Uji di QA, perbaiki masalah, lalu promosikan:
Jika Anda lebih suka versi eksplisit:
3) Jaga TestFlight “selalu pre-prod”
Dalam alur kerja iOS, hal ini berarti build TestFlight Anda dapat tetap terkait dengan pembaruan pre-produksi:
staging forever.
You do JS/CSS/asset updates there repeatedly through Capgo without publishing a new native app.
1) Native release baseline
Your last native binary stays the same for many JS iterations:
You only rebuild the native binary when you actually changed native surface area.
bun run build
bunx cap sync
# generate Xcode/Android Studio archives as usual
2) Use dedicated channels for environments
Publish updates with channels:
Test on QA, fix issues, then promote:
bun run build
bunx @capgo/cli deploy --channel staging
If you prefer explicit versioning:
bunx @capgo/cli promote vX.Y.Z --channel production
3) Keep TestFlight “always pre-prod”
bunx @capgo/cli deploy vX.Y.Z --channel staging
bunx @capgo/cli promote vX.Y.Z --channel production
In iOS workflows, this means your TestFlight build can stay associated with pre-production updates:
__CAPGO_KEEP_0__
- Tidak ada pengiriman native yang sering untuk setiap perubahan JS.
- QA selalu memvalidasi code produksi yang dekat melalui saluran staging.
- Pengguna produksi hanya menerima paket saluran produksi yang dipromosikan.
4) Gunakan penggantian saluran hanya untuk alur kerja yang dikendalikan
Untuk tim lanjutan, tunjukkan penggantian saluran yang dikendalikan untuk pengguna QA/admin:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({
channel: 'staging',
triggerAutoUpdate: true
});
Ini optional. Banyak tim menggunakan pengasosiasi saluran dari dashboard dan hanya mengganti saluran untuk pengguna internal, bukan semua pelanggan.
Daftar tugas operasional
- Hanya satu ID aplikasi (tidak ada ID produksi/staging yang duplikat)
- Hanya satu pipeline bangunan native dasar
- Peta saluran yang dokumentasi (
staging,beta,production,hotfix) - Jalur promosi diizinkan dalam CI/CD
- Rebuild native hanya pada perubahan native yang benar
- Rollback ditesek secara teratur
Manfaat nyata
Metode ini menghilangkan pergeseran lingkungan, mengurangi perubahan build, dan mempercepat penyelesaian masalah:
- Tim QA mendapatkan aplikasi nyata (tidak palsu “staging app” identitas),
- Jalur TestFlight Anda tetap stabil,
- Tim Anda menghindari “utang dua ID aplikasi,”
- Anda dapat menerapkan banyak perbaikan JavaScript melalui Capgo dengan cepat.
Hasil akhirnya adalah penggajalan yang lebih sederhana: lebih sedikit artefak, telemetri yang lebih bersih, dan lebih sedikit kejutan dalam operasi rilis.
Teruskan dari Capgo Environment Best Practices: Staging dengan Satu ID Aplikasi Mobile
Jika Anda menggunakan Capgo Environment Best Practices: Staging dengan Satu ID Aplikasi Mobile untuk merencanakan routing saluran dan peluncuran yang dipersiapkan, hubungkannya dengan Saluran untuk detail implementasi di Saluran, Saluran untuk detail implementasi di Saluran, Saluran untuk detail implementasi di Saluran, Solusi Pengujian Beta untuk alur kerja produk di Solusi Pengujian Beta, dan Solusi Target Versi untuk alur kerja produk di Solusi Target Versi.