Langsung ke konten utama

Alternatif Cordova Hot Code Push di 2026

cordova-hot-code-push dan CodePush untuk Cordova sudah tidak aktif. Berikut alternatif Cordova hot code push yang masih dipelihara, lengkap dengan setup, langkah migrasi, dan rollback.

Ilustrasi logo Cordova untuk panduan alternatif hot code push Cordova

Jika Anda mencari alternatif hot code push Cordova, kemungkinan besar karena cordova-hot-code-push-plugin dan CodePush untuk Cordova dari Microsoft keduanya berhenti berfungsi atau tidak lagi dipelihara. Opsi yang dipelihara saat ini adalah @capgo/cordova-updater, sebuah plugin Cordova yang menghadirkan Capgo live updates untuk aplikasi Cordova Android 13+ dan Cordova iOS 7+, dengan channel, rollback, dan bundle terenkripsi, tanpa memaksa Anda bermigrasi ke Capacitor terlebih dahulu.

Kondisi live updates Cordova di tahun 2026

cordova-hot-code-push telah diarsipkan

Panduan nordnet/cordova-hot-code-push repository diarsipkan di GitHub. Perubahan code terakhir terjadi pada September 2018 dan rilis npm terakhir dari cordova-hot-code-push-plugin adalah 1.5.3. Plugin ini dirancang untuk platform Cordova dan pemuatan WebView berbasis file pada masa itu. Cordova Android modern menyajikan aplikasi dari https://localhost melalui path handler, dan Cordova iOS menggunakan WKWebView dengan app:// scheme. Plugin yang mengasumsikan file:// loading tidak sesuai dengan model tersebut, dan tidak ada yang memperbaruinya.

Instalasi yang sudah ada mungkin masih terlihat berfungsi jika Anda tidak pernah memperbarui platform Cordova. Itulah jebakannya: Anda tidak bisa beralih ke Cordova Android atau Xcode versi terbaru tanpa berisiko merusak mekanisme update.

CodePush untuk Cordova sudah tidak ada

Microsoft mengarsipkan cordova-plugin-code-push, mengakhiri dukungan Cordova di App Center pada 2022, dan menghentikan layanan inti App Center, termasuk build, distribusi, dan CodePush, pada 31 Maret 2025. Plugin tersebut terhubung ke layanan CodePush di App Center, jadi tidak ada backend lagi yang mengirim update. Jika Anda beralih ke self-hosting server CodePush, Anda tetap bergantung pada plugin client yang sudah diarsipkan.

Ionic Appflow

cordova-plugin-ionic menghubungkan aplikasi Cordova ke live updates Ionic Appflow. Ionic telah mengumumkan Appflow akan dihentikan, jadi tim yang memakainya juga mencari pengganti. Kami bahas jalur itu di panduan alternatif Appflow.

Yang dibutuhkan sebuah pengganti

Sebelum memilih tool apa pun, cek dulu persyaratan berikut:

Persyaratan Mengapa ini penting
Kompatibel dengan Cordova Android dan iOS terkini Persyaratan store memaksa upgrade platform: Xcode 26 untuk upload ke App Store sejak April 2026, dan kenaikan target API Android setiap tahun di Google Play
Tanpa ketergantungan pada cordova-plugin-ionic-webview Plugin itu sudah usang dan bertentangan dengan scheme handler modern
Rollback otomatis Bundle yang buruk tidak boleh merusak aplikasi
Channel Uji pada pengguna internal sebelum dirilis ke semua orang
Bundle yang ditandatangani atau dienkripsi Mencegah manipulasi code yang dikirimkan melalui jaringan
Targeting versi Jangan pernah kirim JavaScript yang membutuhkan native shell yang lebih baru
Ramah CI CLI Rilis harusnya satu perintah di pipeline Anda
Dipelihara Cek rilis terbaru, bukan cuma bintang

Capgo untuk Cordova

@capgo/cordova-updater menggunakan API JavaScript yang sama dengan @capgo/capacitor-updater dan backend Cloud Capgo yang sama. Bundles, channels, stats, dan signing bekerja dengan cara yang sama untuk klien Cordova, Capacitor, dan Electron.

Persyaratan

  • Cordova CLI 12+
  • Cordova Android 13+ (default https://localhost/ scheme)
  • Cordova iOS 7+ (default app://localhost/ scheme)
  • cordova-plugin-ionic-webview dihapus

Periksa platform Anda:

cordova platform ls

Upgrade jika diperlukan:

cordova platform rm android && cordova platform add android@latest
cordova platform rm ios && cordova platform add ios@latest

Instal

Buat aplikasi di Capgo (dashboard atau CLI), lalu tambahkan plugin dengan app ID Anda:

bunx @capgo/cli@latest login
bunx @capgo/cli@latest app add com.example.app --name "My Cordova App"

cordova plugin add @capgo/cordova-updater --variable APP_ID=com.example.app
cordova prepare android ios

Anda dapat mengatur lebih banyak opsi saat instalasi. Ini adalah variabel plugin, jadi jalankan cordova prepare setelah mengubahnya:

cordova plugin add @capgo/cordova-updater \
  --variable APP_ID=com.example.app \
  --variable DEFAULT_CHANNEL=production \
  --variable AUTO_UPDATE=atBackground \
  --variable APP_READY_TIMEOUT=10000

AUTO_UPDATE defaultnya adalah atBackground, yang mengunduh update di latar belakang dan menerapkannya saat aplikasi berikutnya dipindahkan ke latar belakang. Mode lainnya meliputi atInstall, onLaunch dan off untuk kontrol manual penuh.

Beri tahu plugin bahwa aplikasi telah dimulai dengan benar

Ini satu baris yang tidak boleh dilewati. Panggil notifyAppReady() setiap kali aplikasi diluncurkan setelah deviceready. Jika bundle baru tidak memanggilnya dalam APP_READY_TIMEOUT milidetik, plugin akan menandainya gagal dan melakukan rollback ke bundle terakhir yang berfungsi.

document.addEventListener('deviceready', async () => {
  const { Updater } = cordova.plugins;
  await Updater.notifyAppReady();
}, false);

Panggil setelah app benar-benar ter-render, bukan di bagian paling atas script, supaya bundle yang crash saat startup bisa terdeteksi.

Alur update manual

Jika Anda mengatur AUTO_UPDATE=off, Anda yang mengontrol kapan harus cek, download, dan apply:

document.addEventListener('deviceready', async () => {
  const { Updater } = cordova.plugins;
  await Updater.notifyAppReady();

  const latest = await Updater.getLatest();
  if (latest.url && !latest.error) {
    const bundle = await Updater.download({
      url: latest.url,
      version: latest.version,
      checksum: latest.checksum,
    });
    // Applied on next background/restart
    await Updater.next({ id: bundle.id });
  }
});

Tipe TypeScript sudah termasuk dalam package:

import type { UpdaterPlugin } from '@capgo/cordova-updater';

declare const cordova: { plugins: { Updater: UpdaterPlugin } };

Terbitkan update

Build www folder Anda lalu upload:

bun run build
bunx @capgo/cli@latest bundle upload com.example.app --path ./www --channel production

Letakkan itu di CI setelah test Anda. halaman live updates menampilkan rollout channel, statistik, dan rollback dari dashboard.

Migrasi dari cordova-hot-code-push

  1. Hapus plugin lama dan konfigurasinya. Hapus cordova-hot-code-push-plugin, chcp bagian di config.xml, dan cordova-hcp CLI dan chcp.json / chcp.manifest generasi dari build Anda.
  2. Hapus cordova-plugin-ionic-webview jika ada, dan uji bahwa aplikasi berjalan di WebView Cordova default.
  3. Upgrade platform Cordova ke Android 13+ dan iOS 7+.
  4. Instal @capgo/cordova-updater dan tambahkan notifyAppReady().
  5. Rilis build store baru. Instalasi lama tetap menggunakan plugin lama. Hanya binary baru yang berisi updater Capgo.
  6. Upload bundle pertama Anda ke channel test, periksa di perangkat, lalu promosikan ke produksi.

Pengguna yang tidak memperbarui dari store tetap menggunakan mekanisme lama sampai mereka melakukannya. Biarkan server update lama Anda tetap online selama transisi jika masih berfungsi, atau terima bahwa pengguna tersebut tidak akan mendapatkan update OTA sampai mereka menginstal binary baru.

Migrasi dari CodePush untuk Cordova

  • Ganti codePush.sync() panggilan dengan notifyAppReady() and either automatic mode or the getLatest / download / next aliran.
  • Ganti deployment keys dengan channel (DEFAULT_CHANNEL).
  • Ganti code-push release-cordova dengan bunx @capgo/cli@latest bundle upload.
  • Hapus CodePushDeploymentKey preferensi dari config.xml.

Untuk versi langkah demi langkah yang ditujukan untuk pengguna App Center, lihat panduan migrasi App Center.

Keamanan dan aturan store

  • Enkripsi dan penandatanganan. Atur PUBLIC_KEY saat instalasi dan gunakan kunci enkripsi CLI, sehingga perangkat hanya menerima bundle yang ditandatangani untuk aplikasi Anda.
  • Kebijakan Apple dan Google. Keduanya mengizinkan pembaruan code yang diinterpretasikan seperti JavaScript secara over-the-air, selama Anda tidak mengubah tujuan aplikasi atau menambahkan fitur yang perlu di-review. code native, plugin baru, dan perubahan izin memerlukan rilis store.
  • Targeting versi. Jika sebuah bundle membutuhkan plugin native yang hanya ada di binary versi terbaru, arahkan ke versi native tersebut. Dokumentasi Capgo di kompatibilitas live update menjelaskan caranya.

Pemecahan Masalah

Bundle terunduh tapi aplikasi masih menampilkan versi lama. Anda masih menggunakan cordova-plugin-ionic-webview, atau custom scheme. Hapus dan gunakan default.

Aplikasi rollback setelah setiap update. notifyAppReady() tidak dipanggil, atau dipanggil setelah error. Cek console di perangkat dan pastikan pemanggilan itu berjalan setiap kali start.

Build iOS gagal setelah upgrade platform. Cordova iOS 7+ membutuhkan Xcode terbaru. Upload ke App Store memerlukan Xcode 26. Anda dapat menghasilkan aset signing dengan iOS certificate generator kami. Setelah beralih ke Capacitor, Build Capgo dapat menghasilkan build iOS yang ditandatangani di cloud tanpa Mac lokal.

Update berfungsi di Android tetapi tidak di iOS. Periksa bahwa skema iOS di config.xml adalah default app scheme dengan localhost hostname.

Apakah sebaiknya Anda beralih ke Capacitor?

Anda tidak harus. Capgo untuk Cordova ada agar Anda tetap bisa rilis sambil memutuskan. Capacitor menyediakan lapisan native yang terawat, Swift Package Manager di iOS, dan ekosistem plugin yang lebih besar. Saat Anda siap, pertahankan ID aplikasi Capgo dan channel yang sama, lalu ganti plugin klien. Panduan migrasi Cordova ke Capacitor menjelaskan langkah-langkahnya.

Live updates untuk aplikasi Capacitor

Saat bug web-layer sudah live, kirim perbaikannya lewat Capgo alih-alih menunggu berhari-hari untuk persetujuan app store. Pengguna mendapat update di background, sementara perubahan native tetap mengikuti jalur review normal.

Terbaru dari Blog kami

Capgo memberikan insight terbaik yang Anda butuhkan untuk membuat aplikasi mobile yang benar-benar profesional.