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
The first two can work, but they create long-term friction. In real teams, the Capgo channel model is usually the cleanest.
Mengapa ID Aplikasi Diperbanyak menjadi Berisik
Menggunakan com.myapp dan com.myapp.beta terlihat sederhana, tetapi Anda cepat mendapatkan duplikasi:
- Dua Pipa Rilis
- Dua Set ID Push, Tautan Mendalam, dan Peta Makanan Hak
- Dua Identitas Analitik dan Kecelakaan
- Konfigurasi yang Berbeda dan Sifat yang Tidak Konsisten antara Lingkungan
Akhirnya Anda harus mengelola dua produk di konsol toko, tim, dan instruksi QA internal.
Mengapa Konfigurasi Runtime-Switching sering Kacau
Polanya “ID Aplikasi + Switch Runtime” biasanya berarti aplikasi Anda membaca variabel lingkungan atau flag pada startup dan mengarahkan API, kunci, dan perilaku pembaruan secara dinamis.
This works hingga:
- QA mulai menghindari alur yang dimaksud karena kondisi konfigurasi sudah ketinggalan zaman,
- seseorang menggunakan endpoint yang salah di produksi,
- perubahan lingkungan menyebabkan bug yang sulit direproduksi,
- anda perlu meng-debug “apa versi konfigurasi ini menggunakan?” di perangkat pengguna.
Kompleksitas ini semakin meningkat dengan setiap rilis dan di mana tim kehilangan kecepatan.
The Capgo way: one app ID, many channels
Capgo makes environment control explicit through channels:
- 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 dengan identitas aplikasi yang diulang.
Dalam prakteknya, ini berarti:
production: semua penggunastaging: kandidat rilis internal dan QAbeta: tester yang diundanghotfix: jalur patch darurat
Aplikasi pengujian internal Anda / Play TestFlight dapat tetap berada di staging selamanya.
Anda dapat melakukan pembaruan JS/CSS/asset secara berulang di sana melalui Capgo tanpa mempublikasikan aplikasi native baru.
Struktur yang disarankan dalam praktek
1) Basis rilis native
Binary native Anda yang terakhir tetap sama untuk banyak iterasi JS:
bun run build
bunx cap sync
# generate Xcode/Android Studio archives as usual
Anda hanya membangun kembali binary native ketika Anda benar-benar mengubah area permukaan native.
2) Gunakan saluran dedikasi untuk lingkungan
Publikasikan pembaruan dengan saluran:
bun run build
bunx @capgo/cli deploy --channel staging
Test di QA, perbaiki masalah, kemudian promosikan:
bunx @capgo/cli promote vX.Y.Z --channel production
Jika Anda lebih suka versi eksplisit:
bunx @capgo/cli deploy vX.Y.Z --channel staging
bunx @capgo/cli promote vX.Y.Z --channel production
3) Tetapkan TestFlight “selalu pre-prod”
Dalam alur kerja iOS, ini berarti build TestFlight Anda dapat tetap terkait dengan pembaruan pre-produksi:
- Tidak ada pengiriman native yang sering untuk setiap perubahan JS.
- QA selalu memvalidasi code yang dekat dengan produksi melalui saluran staging.
- Pengguna produksi hanya menerima paket saluran produksi yang dipromosikan.
4) Gunakan switching saluran hanya untuk alur kerja yang dikendalikan
Untuk tim yang lebih maju, tunjukkan switch saluran yang dikendalikan untuk pengguna QA/admin:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({
channel: 'staging',
triggerAutoUpdate: true
});
Ini adalah opsional. Banyak tim menggunakan pengaturan saluran dari dashboard dan hanya mengganti saluran untuk pengguna internal, bukan semua pelanggan.
Daftar checklist operasional
- Satu ID aplikasi saja (tidak ada ID produksi/staging yang duplikat)
- One baseline native build pipeline
- Peta dasar pembangunan pipeline native asli
staging,beta,production,hotfix) - Channel mapping documented (
- Dokumentasi peta mappinng saluran (
- Promotion path enforced in CI/CD
Jalan promosi diatur dalam CI/CD
Native rebuild only on true native changes
- Pembangunan native hanya pada perubahan asli native
- Rollback tested regularly
- Rollback dites secara teratur
- you can push many JS-only fixes through Capgo quickly.
Manfaat praktisnya adalah: "This approach removes environment drift, reduces build churn, and speeds fixes: "Menghilangkan pergeseran lingkungan, mengurangi perubahan pembangunan, dan mempercepat perbaikan: "QA gets realistic binaries (no fake “staging app” identity), "Tim QA mendapatkan file biner nyata (tidak ada identitas aplikasi “staging” palsu), "your TestFlight path stays stable, "Jalur TestFlight Anda tetap stabil, "your team avoids “two app ID debt,” "Tim Anda menghindari utang “dua ID aplikasi,” "you can push many JS-only fixes through __CAPGO_KEEP_0__ quickly. "Anda dapat menerapkan banyak perbaikan JS hanya melalui __CAPGO_KEEP_0__ dengan cepat. "The end result is simpler governance: fewer artifacts, cleaner telemetry, and fewer surprises in release operations.
Teruslah melanjutkan dari Capgo Praktik Terbaik Lingkungan: Staging dengan Satu ID Aplikasi Mobile
Jika Anda menggunakan Capgo Praktik Terbaik Lingkungan: Staging dengan Satu ID Aplikasi Mobile untuk merencanakan routing saluran dan peluncuran tahap, 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.