Langsung ke konten

Perubahan Penting

Dokumentasi ini menjelaskan cara menangani breaking changes pada aplikasi Anda menggunakan versioned channels. Pendekatan ini memungkinkan Anda mengelola berbagai versi aplikasi sambil memastikan pengguna menerima update yang kompatibel.

Misalnya Anda memiliki:

  • Versi aplikasi 1.2.3 (versi lama) - menggunakan production channel
  • Versi aplikasi 2.0.0 (versi baru dengan breaking changes) - menggunakan v2 channel
  • 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

Bagian berjudul “Strategi: Selalu Gunakan defaultChannel untuk Versi Major”

Pendekatan yang direkomendasikan: Atur defaultChannel untuk setiap versi major. Ini memastikan Anda selalu bisa push update ke grup user tertentu tanpa bergantung pada penentuan channel dinamis.

// Version 1.x releases
defaultChannel: 'v1'
// Version 2.x releases
defaultChannel: 'v2'
// Version 3.x releases (future)
defaultChannel: 'v3'
Jendela terminal
# Create channel for version 2.x
npx @capgo/cli channel add v2

Perbarui konfigurasi Capacitor Anda sebelum melakukan 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: {
// ... other options
defaultChannel: 'v2' // All 2.0.0 users will use v2 channel
}
}
};
export default config;

Buat branch Git terpisah untuk menjaga kompatibilitas antar versi aplikasi:

Jendela terminal
# Create and maintain a branch for version 1.x updates
git checkout -b v1-maintenance
git push origin v1-maintenance
# Your main branch continues with version 2.x development
git checkout main

Penting: Jangan pernah push bundle JavaScript ke aplikasi lama yang mengharapkan code/API native yang tidak dimilikinya. Selalu build update dari branch yang sesuai:

  • branch v1-maintenance: Untuk update aplikasi 1.x (production channel)
  • branch main: Untuk update aplikasi 2.x (v2 channel)
Jendela terminal
# For 1.x updates: Build from v1-maintenance branch
git checkout v1-maintenance
# Make your 1.x compatible changes here
npx @capgo/cli bundle upload --channel production
# For 2.x updates: Build from main branch
git checkout main
# Make your 2.x changes here
npx @capgo/cli bundle upload --channel v2
Jendela terminal
# Allow apps to self-assign to v2 channel
npx @capgo/cli channel set v2 --self-assign

Build dan deploy versi 2.0.0 ke app store. Semua user yang download versi ini (baik user baru maupun user lama yang upgrade) akan otomatis menggunakan channel v2 karena sudah dikonfigurasi di dalam app bundle.

Saat Anda merilis versi 3.0.0 dengan lebih banyak breaking changes:

Jendela terminal
# Create channel for version 3.x
npx @capgo/cli channel add v3
// capacitor.config.ts for version 3.0.0
const config: CapacitorConfig = {
// ...
plugins: {
CapacitorUpdater: {
defaultChannel: 'v3' // Version 3.x users
}
}
};

Sekarang Anda bisa push update ke versi mana pun:

  • production channel → Pengguna Versi 1.x
  • v2 channel → Pengguna Versi 2.x
  • v3 channel → Pengguna Versi 3.x

Setelah semua user bermigrasi ke versi 2.x (sekitar 3-4 bulan):

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

Selalu uji update secara menyeluruh di setiap channel sebelum deployment

Untuk mengirim update yang kompatibel dengan versi 1.x:

  1. Pindah ke branch v1-maintenance:
Jendela terminal
git checkout v1-maintenance
  1. Lakukan perubahan dan commit:
Jendela terminal
# Make 1.x compatible changes
git add .
git commit -m "Fix for v1.x"
git push origin v1-maintenance
  1. Build dan upload ke production channel:
Jendela terminal
npx @capgo/cli bundle upload --channel production

Jika Anda menggunakan Perubahan Penting untuk merencanakan routing channel dan staged rollout, hubungkan dengan Channel untuk detail implementasi di Channels, Channel untuk detail implementasi di Channels, Channel untuk detail implementasi di Channels, Solusi Beta Testing untuk workflow produk di Solusi Beta Testing, dan Solusi Version Targeting untuk workflow produk di Version Targeting Solution.