Breaking Changes
Dokumentasi ini menjelaskan cara menangani breaking changes di aplikasi Anda menggunakan versioned channels. Pendekatan ini memungkinkan Anda maintain berbagai versi aplikasi sambil memastikan pengguna menerima update yang kompatibel.
Contoh Skenario
Section titled “Contoh Skenario”Katakanlah Anda memiliki:
- Versi aplikasi 1.2.3 (versi lama) - menggunakan channel production
- Versi aplikasi 2.0.0 (versi baru dengan breaking changes) - menggunakan channel v2
- Live update 1.2.4 (kompatibel dengan 1.2.3)
- Live update 2.0.1 (kompatibel dengan 2.0.0)
Strategi: Selalu Gunakan defaultChannel untuk Versi Major
Section titled “Strategi: Selalu Gunakan defaultChannel untuk Versi Major”Pendekatan yang direkomendasikan: Set defaultChannel untuk setiap versi major. Ini memastikan Anda selalu dapat push update ke grup pengguna spesifik tanpa mengandalkan penugasan channel dinamis.
// Rilis versi 1.xdefaultChannel: 'v1'
// Rilis versi 2.xdefaultChannel: 'v2'
// Rilis versi 3.x (masa depan)defaultChannel: 'v3'1. Buat Channel untuk Versi Baru
Section titled “1. Buat Channel untuk Versi Baru”# Buat channel untuk versi 2.xnpx @capgo/cli channel create v22. Update Capacitor Config untuk Versi 2.0.0
Section titled “2. Update Capacitor Config untuk Versi 2.0.0”Update config Capacitor Anda sebelum build versi 2.0.0 untuk app store:
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { // ... opsi lainnya defaultChannel: 'v2' // Semua pengguna 2.0.0 akan menggunakan channel v2 } }};
export default config;3. Kelola Branch Kode Terpisah
Section titled “3. Kelola Branch Kode Terpisah”Buat branch git terpisah untuk maintain kompatibilitas antara versi aplikasi:
# Buat dan maintain branch untuk update versi 1.xgit checkout -b v1-maintenancegit push origin v1-maintenance
# Branch main Anda lanjutkan dengan development versi 2.xgit checkout mainKritis: Jangan pernah push bundle JavaScript ke aplikasi lama yang mengharapkan kode native/API yang tidak mereka miliki. Selalu build update dari branch yang sesuai:
- Branch v1-maintenance: Untuk update ke aplikasi 1.x (channel production)
- Branch main: Untuk update ke aplikasi 2.x (channel v2)
4. Upload Bundle ke Channel Masing-masing
Section titled “4. Upload Bundle ke Channel Masing-masing”# Untuk update 1.x: Build dari branch v1-maintenancegit checkout v1-maintenance# Buat perubahan kompatibel 1.x Anda di sininpx @capgo/cli bundle upload --channel production
# Untuk update 2.x: Build dari branch maingit checkout main# Buat perubahan 2.x Anda di sininpx @capgo/cli bundle upload --channel v25. Aktifkan Self-Assignment
Section titled “5. Aktifkan Self-Assignment”# Izinkan aplikasi untuk self-assign ke channel v2npx @capgo/cli channel set v2 --self-assign6. Deploy ke App Store
Section titled “6. Deploy ke App Store”Build dan deploy versi 2.0.0 ke app store. Semua pengguna yang download versi ini (baik pengguna baru atau pengguna existing yang upgrade) akan otomatis menggunakan channel v2 karena dikonfigurasi di bundle aplikasi.
Scaling ke Versi Masa Depan
Section titled “Scaling ke Versi Masa Depan”Saat Anda merilis versi 3.0.0 dengan lebih banyak breaking changes:
# Buat channel untuk versi 3.xnpx @capgo/cli channel create v3// capacitor.config.ts untuk versi 3.0.0const config: CapacitorConfig = { // ... plugins: { CapacitorUpdater: { defaultChannel: 'v3' // Pengguna versi 3.x } }};Sekarang Anda dapat push update ke versi mana pun:
- Channel
production→ Pengguna versi 1.x - Channel
v2→ Pengguna versi 2.x - Channel
v3→ Pengguna versi 3.x
7. Cleanup (Setelah Migrasi)
Section titled “7. Cleanup (Setelah Migrasi)”Setelah semua pengguna bermigrasi ke versi 2.x (hitung 3-4 bulan):
- Hapus
defaultChanneldari config Capacitor Anda - Hapus channel v2:
npx @capgo/cli channel delete v2- Hapus branch v1-maintenance:
git branch -d v1-maintenancegit push origin --delete v1-maintenanceSelalu test update secara menyeluruh di setiap channel sebelum deployment
Maintain Update Versi 1.x
Section titled “Maintain Update Versi 1.x”Untuk mengirim update yang kompatibel dengan versi 1.x:
- Switch ke branch v1-maintenance:
git checkout v1-maintenance- Buat perubahan dan commit:
# Buat perubahan kompatibel 1.xgit add .git commit -m "Fix untuk v1.x"git push origin v1-maintenance- Build dan upload ke channel production:
npx @capgo/cli bundle upload --channel production