Langsung ke konten

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.

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.x
defaultChannel: 'v1'
// Rilis versi 2.x
defaultChannel: 'v2'
// Rilis versi 3.x (masa depan)
defaultChannel: 'v3'
Terminal window
# Buat channel untuk versi 2.x
npx @capgo/cli channel create v2

2. 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:

capacitor.config.ts
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;

Buat branch git terpisah untuk maintain kompatibilitas antara versi aplikasi:

Terminal window
# Buat dan maintain branch untuk update versi 1.x
git checkout -b v1-maintenance
git push origin v1-maintenance
# Branch main Anda lanjutkan dengan development versi 2.x
git checkout main

Kritis: 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)
Terminal window
# Untuk update 1.x: Build dari branch v1-maintenance
git checkout v1-maintenance
# Buat perubahan kompatibel 1.x Anda di sini
npx @capgo/cli bundle upload --channel production
# Untuk update 2.x: Build dari branch main
git checkout main
# Buat perubahan 2.x Anda di sini
npx @capgo/cli bundle upload --channel v2
Terminal window
# Izinkan aplikasi untuk self-assign ke channel v2
npx @capgo/cli channel set v2 --self-assign

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.

Saat Anda merilis versi 3.0.0 dengan lebih banyak breaking changes:

Terminal window
# Buat channel untuk versi 3.x
npx @capgo/cli channel create v3
// capacitor.config.ts untuk versi 3.0.0
const 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

Setelah semua pengguna bermigrasi ke versi 2.x (hitung 3-4 bulan):

  1. Hapus defaultChannel dari config Capacitor Anda
  2. Hapus channel v2:
Terminal window
npx @capgo/cli channel delete v2
  1. Hapus branch v1-maintenance:
Terminal window
git branch -d v1-maintenance
git push origin --delete v1-maintenance

Selalu test update secara menyeluruh di setiap channel sebelum deployment

Untuk mengirim update yang kompatibel dengan versi 1.x:

  1. Switch ke branch v1-maintenance:
Terminal window
git checkout v1-maintenance
  1. Buat perubahan dan commit:
Terminal window
# Buat perubahan kompatibel 1.x
git add .
git commit -m "Fix untuk v1.x"
git push origin v1-maintenance
  1. Build dan upload ke channel production:
Terminal window
npx @capgo/cli bundle upload --channel production