Pengelolaan rollback sangat penting untuk memperbaiki perbarui aplikasi yang menyebabkan crash atau bug. Dengan Capgoanda dapat kembali ke versi stabil tanpa perlu persetujuan dari toko aplikasi. Berikut cara melakukannya Capgo mengurangi manajemen rollback:
- Recovery Cepat: Rollback rata-rata hanya 114 milidetik.
- Pembaruan Otomatis: Tidak perlu intervensi manual - Capgo menghandle pembaruan dan rollback dengan lancar.
- Proses Aman: Enkripsi ujung-ke-ujung memastikan pembaruan aman.
- Pengaturan Mudah: Instal paket dan konfigurasi aplikasi Anda dalam beberapa menit.
@capgo/capacitor-updaterPaket Update - : Kontrol update dengan lingkungan pengembangan, beta, dan produksi.Pengembalian Manual & Otomatis
- : Pilih antara pemulihan manual atau otomatis berdasarkan kebutuhan Anda.Langkah-Langkah Pengaturan Cepat
Instal:
- dan sinkronkan proyek Anda.
@capgo/capacitor-updaterKonfigurasi - untuk update.
capacitor.config.jsonKonfigurasi saluran update (pengembangan, beta, produksi). - Manual & Automated Rollbacks
- Tes fungsi rollback sebelum pengiriman produksi.
Capgo memastikan aplikasi Anda tetap stabil dan ramah pengguna dengan menangani masalah secara instan. Apakah Anda lebih suka kontrol manual atau trigger otomatis, Capgo menawarkan jaringan keamanan yang dapat diandalkan untuk aplikasi Anda. Capacitor Pengaturan
__CAPGO_KEEP_0__ Capgo __CAPGO_KEEP_0__ Manajemen Rollback Dashboard

Penginstalan dan Pengaturan Capgo
Installing and Configuring Capgo
paket ke @capgo/capacitor-updater proyek Anda Capacitor projectPackage ini mengelola pembaruan dan pengembalian ke versi sebelumnya untuk aplikasi Anda. Jalankan perintah-perintah berikut di direktori proyek Anda:
npm install @capgo/capacitor-updater
npx cap sync
Setelah diinstal, update file capacitor.config.json ke aplikasi Anda untuk mengaktifkan fungsi pembaruan. Berikut adalah contoh konfigurasi:
{
"plugins": {
"CapacitorUpdater": {
"autoUpdate": true,
"updateUrl": "https://api.capgo.app/updates",
"privateKey": "your-private-key-here",
"version": "1.0.0",
"directUpdate": false
}
}
}
- Set
autoUpdateketruecontext: Page/area: Live updates product page. Role: Short UI label or navigation item. Message key `live_update_dynamic_label_to` (Live Update Dynamic Label To) - ke untuk memungkinkan pembaruan otomatis.
directUpdateTetapkanfalsesebagai
Next, link your app to Capgo’s update system. Sign up at Selanjutnya, hubungkan aplikasi Anda ke sistem pembaruan capgo . Daftar di capgo.appSetelah itu, daftarkan aplikasi Anda menggunakan CLI:
npx @capgo/cli app add your-app-id
Langkah ini menghubungkan proyek Anda ke Capgo, memungkinkan pengaturan versi dan segmentasi pengguna untuk manajemen rollback yang tepat.
Dengan setup awal ini selesai, Anda dapat mengonfigurasi saluran pembaruan untuk mengontrol dan memantau pengiriman.
Mengatur Saluran Pembaruan
Saluran pembaruan membantu mengelola distribusi pembaruan, memungkinkan tes yang teliti dan rollback cepat jika diperlukan.
Untuk membuat saluran, gunakan alat Capgo’s CLI.
npx @capgo/cli channel add staging
npx @capgo/cli channel add beta
npx @capgo/cli channel add production
Mulai dengan mengatur tiga saluran utama untuk manajemen rollback yang efisien:
| Setiap saluran memiliki tujuan tertentu: | Mengatur | Tujuan |
|---|---|---|
| context | Halaman/area: Situs web pemasaran Capgo. Peran: Label UI singkat atau item navigasi. Kunci pesan `subprocessors_table_purpose` (Tujuan Tabel Subproses). | prod, beta, staging |
| Gaya Versi | Mengatur format versi yang diizinkan | 1.0.* |
| Akses Pengguna | Mengatur pengguna mana yang menerima pembaruan | specific-group-id |
| Frekuensi Pembaruan | Mengatur kapan pembaruan didistribusikan | langsung, yang dijadwalkan |
Untuk produksi, gunakan pola versi stabil seperti 1.0.*, sementara pengembangan dapat menggunakan format yang lebih fleksibel untuk tes.
To further refine rollback management, set up user segmentation. This allows you to target specific groups during rollbacks, minimizing disruption while addressing issues effectively.
Automatisasi pengembalian ke versi sebelumnya dapat dilakukan dengan menentukan trigger berdasarkan kondisi seperti tingkat kesalahan, metrik kinerja, atau umpan balik pengguna. Trigger ini memastikan masalah dapat diatasi dengan cepat tanpa intervensi manual.
Sebelum mengirimkan ke produksi, lakukan pengujian fungsi pengembalian ke versi sebelumnya di saluran pengujian. Langkah ini memastikan sistem pengembalian ke versi sebelumnya berfungsi seperti yang diharapkan dalam kondisi nyata.
Terakhir, integrasikan saluran update dengan pipeline CI/CD Anda. Langkah ini mempercepat proses pengembangan dan pengembalian ke versi sebelumnya, sehingga alur kerja Anda tetap efisien sambil menjaga jaringan keamanan untuk masalah yang tidak terduga. Bagaimana Menggunakan Pengembalian ke Versi Sebelumnya dengan __CAPGO_KEEP_0__Sistem validasi update __CAPGO_KEEP_0__ memastikan aplikasi Anda tetap stabil, dan fitur pengembalian ke versi sebelumnya membangun pada fitur ini dengan menawarkan opsi pemulihan manual dan otomatis. Mengetahui cara menggunakan metode ini secara efektif dapat membantu Anda memulihkan fungsi aplikasi dengan cepat ketika masalah muncul.
How to Execute Rollbacks with Capgo
Capgo’s update validation system ensures your app remains stable, and its rollback feature builds on this by offering both manual and automated recovery options. Knowing how to use these methods effectively can help you restore functionality quickly when issues arise.
Untuk memulai, nonaktifkan update otomatis di file Anda dengan mengatur
ke
context capacitor.config.json Page/area: Live updates product page. Role: Short UI label or navigation item. Message key `live_update_dynamic_label_to` (Live Update Dynamic Label To). autoUpdate Indonesian falseProses Capgo untuk mengatur pembaruan secara otomatis akan dihentikan, memberi Anda kendali penuh atas proses tersebut.
Menggunakan metode ini untuk mengambil versi yang diinginkan dan kemudian mengaplikasikannya. Contoh berikut: CapacitorUpdater.download() Setelah mengunduh versi yang diinginkan menggunakan CapacitorUpdater.set() aplikasi akan secara otomatis di-reload dengan bundle yang telah dipulihkan. Untuk menyelesaikan proses rollback, selalu panggil
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const version = await CapacitorUpdater.download({
url: 'https://github.com/Cap-go/demo-app/releases/download/0.0.4/dist.zip',
})
await CapacitorUpdater.set(version); // Sets the new version and reloads the app
untuk memastikan pembaruan tersebut stabil. CapacitorUpdater.set()“Jika Anda tidak memanggil metode ini, aplikasi Anda akan kembali ke versi yang berhasil sebelumnya (atau bundle bawaan)” CapacitorUpdater.notifyAppReady() Jika langkah konfirmasi ini dilewati, __CAPGO_KEEP_0__ akan menganggap rollback gagal dan mungkin melakukan rollback ke versi yang terakhir diketahui berhasil.
Untuk situasi yang memerlukan aksi lebih cepat, rollback otomatis dapat menangani pemulihan tanpa campur tangan manual. [2]
If this confirmation step is skipped, Capgo assumes the rollback was unsuccessful and could initiate another rollback to the last known working version.
Rollback otomatis sangat ideal untuk lingkungan di mana pemantauan yang konstan sangat penting. Mereka dapat mengurangi waktu down dengan mendeteksi masalah dan kembali ke versi stabil secara otomatis. Triggers ini didasarkan pada periksa kesehatan dan ambang batas kesalahan yang telah ditentukan.
Untuk lingkungan yang memerlukan aksi lebih cepat, rollback otomatis dapat menangani pemulihan tanpa campur tangan manual.
Rollback otomatis sangat ideal untuk lingkungan di mana pemantauan yang konstan sangat penting.
Konfigurasi periksa kesehatan untuk memantau fungsi aplikasi penting, seperti autentikasi pengguna atau pengambilan data. Ketika periksa ini mendeteksi masalah, trigger otomatis dapat langsung kembali ke versi stabil.
Tentukan ambang batas kesalahan menggunakan metrik kinerja untuk menentukan kapan rollback diperlukan. Tabel di bawah ini menyoroti komponen utama yang perlu dipertimbangkan:
| Komponen | Tujuan | context |
|---|---|---|
| Halaman/area: Situs web pemasaran Capgo. Peran: Label UI pendek atau item navigasi. Kunci pesan `subprocessors_table_purpose` (Tujuan Tabel Subproses). | Saran Implementasi | Pengendalian Versi |
| context | Halaman/area: Situs web pemasaran Capgo. Peran: Label UI pendek atau item navigasi. Kunci pesan `version_control` (Pengendalian Versi). | Rekam Sejarah Pengembangan |
| Pantau Progress dan Hasil secara Konsisten | Langkah-langkah pemulihan | Konfigurasi alur kerja untuk menangani masalah segera |
Pilihan antara pemulihan manual dan otomatis bergantung pada lingkungan aplikasi dan toleransi Anda terhadap risiko.
“Pemulihan adalah proses mengunduh versi sebelumnya dari code. Ini adalah pilihan terbaik dalam sebagian besar kasus Karena dalam waktu kurang dari 5 menit, itu mengakhiri dampak negatif bagi pengguna, dan tidak menghalangi Anda untuk melakukan salah satu opsi lainnya” [3]
Pada lingkungan produksi, di mana kestabilan dan keamanan sangat kritis, pemulihan manual memungkinkan evaluasi dan kontrol yang hati-hati. Di sisi lain, lingkungan pengujian dan pengembangan mungkin lebih menguntungkan dari kecepatan dan efisiensi pemulihan otomatis. Menggabungkan kedua pendekatan ini memastikan strategi yang seimbang - trigger otomatis menangani kegagalan segera, sementara pemulihan manual disimpan untuk masalah kompleks yang memerlukan pengawasan manusia.
Praktik Terbaik untuk Pengelolaan Pemulihan
Strategi pemulihan yang efektif melindungi pengguna dari update yang tidak stabil dengan menggabungkan pengembangan perangkat lunak yang bertahap dengan analisis pasca-pemulihan yang rinci.
Pengeluaran Langkah demi Langkah dan Pengurangan Risiko
Pengeluaran langkah demi langkah berfungsi sebagai jaminan terhadap masalah yang luas dalam update aplikasi. Sebaliknya dari memasukkan perubahan ke semua pengguna sekaligus, update dirilis secara bertahap ke kelompok pengguna yang lebih kecil. Mulai dengan kelompok uji yang mewakili 1–5% dari pengguna Anda. Pastikan kelompok ini mencakup campuran yang beragam dari jenis perangkat, sistem operasi, dan perilaku pengguna. Pantau kinerja mereka selama 24–48 jam untuk menangkap tanda-tanda awal masalah.
Flag-fitur dapat menjadi penyelamat di sini. Mereka memungkinkan Anda untuk menonaktifkan fitur tertentu secara instan tanpa perlu melakukan rollback penuh [4].
Setel kriteria yang jelas untuk bergerak melalui tahap rollout. Misalnya, Anda mungkin berdasarkan keputusan pada metrik seperti jam perangkat yang stabil atau ambang batas crash. Aturan yang baik adalah untuk mencapai setidaknya 1.000 jam perangkat yang stabil sebelum memperluas rollout. Alat seperti Capgo’s saluran pembaruan membuat proses ini lebih mudah dengan memungkinkan Anda untuk menetapkan pembaruan ke kelompok pengguna tertentu, seperti tester beta atau pelopor, sehingga Anda memiliki kontrol yang tepat atas siapa yang menerima pembaruan dan kapan.
Contoh berikut menunjukkan bagaimana rollout yang berstadium mungkin terlihat:
| Tahap Rollout | Persentase Pengguna | Durasi Pemantauan | Kriteria Kesuksesan |
|---|---|---|---|
| Pengujian Awal | 1–5% | 24–48 jam | Kadar crash kurang dari 0,1% dan kinerja normal |
| Pelopor | 10–20% | 48–72 jam | Kinerja stabil dan umpan balik positif dari pengguna |
| Rilis Umum | 100% | Berlanjut | Tidak ada masalah kritis dan kinerja yang terus-menerus |
Setelah proses rollout stabil, perhatian Anda harus dipindahkan ke pengawasan setelah rollback untuk memastikan semuanya berjalan lancar.
Pengawasan dan Diagnostik Setelah Rollback
Setelah melakukan rollback, pengawasan yang teliti sangat penting untuk memastikan kesuksesan dan mencegah masalah di masa depan.
Konfigurasi peringatan waktu nyata dan pantau kinerja utama seperti tingkat kecelakaan, waktu peluncuran aplikasi, penggunaan memori, dan kinerja jaringan. Indikator-indikator ini sangat penting untuk menilai stabilitas dan pengalaman pengguna. Untuk lingkungan produksi, targetkan stabilitas dasar sebesar 99,9%, dan pastikan Anda diberitahu segera jika kinerja turun di bawah tingkat ini.
Teruslah mengawasi selama minimal 72 jam setelah rollback untuk memastikan bahwa aplikasi telah kembali ke keadaan stabil. Perhatikan secara ketat metrik yang langsung mempengaruhi pengguna, seperti seberapa cepat aplikasi membuka atau seberapa responsif fitur-fiturnya.
Pakai alat pengawasan kesalahan dengan prosedur eskalasi yang jelas. Laporan otomatis yang menyajikan informasi tentang kejadian rollback - meliputi penyebab, pengguna yang terkena, dan waktu penyelesaian - dapat membantu tim Anda belajar dari setiap insiden. Dokumentasikan kejadian-kejadian tersebut secara menyeluruh, termasuk pemicu, langkah-langkah penyelesaian, dan pelajaran yang dipelajari, sangat berharga untuk meningkatkan proses dan melatih tim Anda.
Pendekatan pemantauan progresif juga dapat efektif. Mulai dengan pengamatan intensif segera setelah rollback, kemudian secara bertahap kembali ke skala yang lebih kecil ketika stabilitas telah dikonfirmasi. Metode ini memastikan keseimbangan antara pengawasan yang teliti dan penggunaan sumber daya yang efisien.
Memecahkan Masalah Rollback
Rollback dapat terjadi masalah yang mengganggu pengalaman pengguna. Mengetahui cara cepat mengidentifikasi dan memperbaiki masalah-masalah ini adalah kunci untuk menjaga semuanya berjalan lancar.
Memperbaiki Validasi Cek Palsu
Validasi cek palsu adalah salah satu masalah yang lebih serius yang mungkin Anda hadapi selama rollback. Kejadian ini menunjukkan bahwa file update telah rusak atau diubah selama transmisi atau penyimpanan. Untuk menangani hal ini:
- Periksa kembali integritas file sumber dan bundle rollback.
- Jika perlu, unduh atau regenerasi bundle dari sistem kontrol versi Anda.
Capgo’s enkripsi akhir-ke-akhir membantu menjaga keamanan file selama transmisi, tetapi masalah dapat masih terjadi dengan penyimpanan lokal. Jika banyak pengguna terpengaruh, hapus cache lokal mereka untuk menghapus file sementara yang rusak. Anda dapat mengotomatisasi hal ini melalui Capgo’s saluran update dengan mendorong update konfigurasi kecil yang memaksa download segar.
Juga, pertimbangkan masalah jaringan ketika memvalidasi download. Setelah masalah cek palsu diselesaikan, lanjutkan ke potensi konflik versi dan tantangan jaringan.
Pengelolaan Konflik Versi dan Masalah Jaringan
Konflik versi terjadi ketika bagian-bagian aplikasi Anda tidak sinkron dengan baik. Jika hal ini terjadi, lakukan rollback ke versi stabil terakhir untuk mengurangi gangguan. Dengan menggunakan saluran pembaruan Capgo, Anda dapat membatasi rollback hanya pada kelompok pengguna tertentu untuk tes sebelum meluncurkannya lebih luas.
Log yang rinci sangat penting untuk mendiagnosis konflik ini. Cari kesalahan seperti kesalahan versi API atau masalah skema basis data untuk menentukan apakah masalah terletak pada perubahan backend, pembaruan sisi klien, atau keduanya.
Masalah jaringan, di sisi lain, dapat menghalangi upaya rollback sepenuhnya. Masalah seperti waktu tunggu koneksi, kesalahan sertifikat SSL, atau konfigurasi proxy yang salah adalah penyebab umum. Untuk menyelesaikannya:
- Pastikan semua endpoint pembaruan, sertifikat, dan identifikasi versi sudah terkini.
- Uji koneksi jaringan Anda di lingkungan yang sama di mana pengguna mengalami masalah.
Dalam lingkungan korporat, aturan proxy dan firewall mungkin mengganggu pembaruan. Kerja sama dengan pelanggan korporat untuk mengaktifkan saluran pembaruan Capgo dan memastikan bahwa kebijakan keamanan tidak menghalangi proses rollback.
| Skenario Uji | Cara Implementasi | Kriteria Kesuksesan |
|---|---|---|
| Kesalahan Versi | Deploy versi bundle yang tidak kompatibel | Rollback diaktifkan secara otomatis |
| Bundle yang Rusak | Upload update yang rusak | Deteksi kesalahan dan memulihkan sistem |
| Gagal Jaringan | Simulasikan gagal jaringan | Mengembalikan dari versi stabil terakhir |
| API Waktu Tunggu | Memperkenalkan keterlambatan dalam respons API | Menangani keterlambatan dengan mekanisme fallback |
Melakukan tes reguler skenario seperti kesalahan versi, bundle rusak, gagal jaringan, dan API waktu tunggu memastikan mekanisme rollback Anda siap menghadapi tantangan nyata di produksi. Pendekatan proaktif ini membangun kepercayaan ketika masalah muncul di produksi.
Kesimpulan
Mempunyai strategi rollback yang dapat diandalkan sangat penting untuk menjaga kestabilan aplikasi Anda Aplikasi Capacitor, dan Capgo menyediakan alat untuk membuat proses ini lancar. Ini menggabungkan manajemen update yang efisien Manajemen Update dengan tindakan keamanan yang kuat untuk memastikan aplikasi Anda tetap dapat diandalkan dan dilindungi.
Fitur utama Capgo adalah kemampuan rollback satu-kliknya Kemampuan Rollback Satu-Klik, yang memungkinkan Anda untuk kembali ke versi sebelumnya jika ada kesalahan. Ini mengurangi waktu down dan menjaga gangguan pada pengguna Anda menjadi minimal. Selain itu, platform ini memastikan kinerja yang sesuai dengan persyaratan Apple dan Google sambil menggunakan Enkripsi Ulang untuk melindungi aplikasi Anda di lingkungan produksi.
“Capgo adalah alat wajib bagi para pengembang yang ingin lebih produktif. Menghindari tinjauan untuk memperbaiki bug adalah emas.” - Bessie Cooper [1]
Fitur-fitur ini memudahkan alur kerja dan menyediakan solusi langsung ketika tantangan muncul. Dengan otomatisasi CI/CD dan semantic-release, Capgo mempercepat proses rollback. Apakah Anda menghadapi kesalahan validasi checksum, kesesuaian versi, atau gangguan jaringan, infrastruktur dan alat monitoring Capgo membantu Anda menangani masalah sebelum masalah tersebut menyebar ke pengguna.
Untuk tim yang mengelola aplikasi Capacitor di produksi, Capgo menyediakan keamanan, keandalan, dan kemudahan yang diperlukan untuk strategi rollback yang efektif. Dengan lebih dari 2.000 aplikasi yang sudah percaya platform ini, Anda memilih solusi yang meningkatkan efisiensi pengembang dan kepuasan pengguna. [1].
Ketika masalah terjadi, Capgo memastikan Anda siap menyelesaikannya secara instan.
Pertanyaan Umum
::: faq
Bagaimana Capgo menjaga keamanan update aplikasi selama rollback?
Capgo menggunakan enkripsi ujung ke ujung untuk melindungi update aplikasi di setiap tahap, dari pembuatan hingga pengiriman. Ini memastikan bahwa update tetap aman, dengan akses yang ketat hanya untuk pengguna yang berwenang melalui pengawasan akses yang ketat.
Untuk memastikan integritas update, Capgo menggunakan pemeriksaan kriptografi seperti hash dan tanda tangan digital. Alat-alat ini memastikan bahwa update tetap tidak dimanipulasi. Jika masalah terjadi, fitur rollback otomatis platform memungkinkan Anda untuk kembali ke versi sebelumnya dengan cepat dan aman. Bersamaan, fitur-fitur ini memastikan bahwa update aplikasi Anda aman dan dapat diandalkan.
::: faq
Apa saja kelebihan menggunakan pengembalian otomatis dengan Capgo daripada pengembalian manual?
Pengembalian otomatis dengan __CAPGO_KEEP_0__ Capgo Apa yang membedakan otomatisasi adalah kemampuan untuk menghilangkan kesalahan manusia dari persamaan. Dengan mengeklik pada praktik terbaik yang telah ditentukan, itu memastikan konsistensi setiap kali. Ini tidak hanya menyelamatkan waktu berharga tetapi juga memfasilitasi cara yang lebih stabil dan efisien untuk mengelola aplikasi. Bagi pengembang yang bekerja dengan aplikasi __CAPGO_KEEP_0__, pengembalian otomatis menyediakan cara yang tanpa tekanan, dapat diandalkan untuk mengelola update.
What sets automation apart is its ability to remove human error from the equation. By sticking to predefined best practices, it ensures consistency every time. This not only saves valuable time but also fosters a more stable and efficient way to manage your app. For developers working with Capacitor apps, automated rollbacks provide a stress-free, dependable way to handle updates. :::
Bagaimana saya dapat menguji fungsi pengembalian dengan __CAPGO_KEEP_0__ sebelum mengeluarkan update ke produksi?
Untuk menguji fungsi pengembalian dengan efektif dengan Capgo, mulailah dengan mengatur lingkungan pengujian
To effectively test rollback functionality with Capgo, begin by setting up a . Ini memungkinkan Anda untuk menguji update dalam lingkungan yang terkendali sebelum mereka hidup. Libatkanpengujian beta staging environment untuk mendeteksi masalah potensial sejak awal, dan memastikan Anda memiliki pengawasan waktu nyata untuk mengikuti kinerja dan mendeteksi kesalahan dengan cepat. Penting juga untuk menentukan trigger rollback yang jelas seperti mencapai tingkat kesalahan tertentu atau menerima umpan balik pengguna tertentu, sehingga Anda tahu tepat kapan harus mengembalikan update.Sebelum mengeluarkan update apa pun, lakukan tes yang teliti terhadap proses rollback. Pastikan prosesnya dapat kembali ke versi stabil sebelumnya tanpa menyebabkan masalah tambahan. Simulasi skenario gagal juga merupakan cara yang baik untuk memastikan bahwa mekanisme rollback berfungsi sebagaimana yang diharapkan. Terakhir, manfaatkan alat analitik __CAPGO_KEEP_0__
Before rolling out any updates, thoroughly test the rollback process. Make sure it can seamlessly return to the previous stable version without causing additional problems. Simulating failure scenarios is another good way to verify that the rollback mechanism works as intended. Lastly, take advantage of Capgo’s Teruskan dari Manajemen Rollback dengan __CAPGO_KEEP_0__: Panduan Jika Anda menggunakan
Manajemen Rollback dengan Capgo: Panduan
untuk merencanakan rollback dan pengendalian versi, hubungkannya dengan Capgo __CAPGO_KEEP_0__ Rollback untuk detail implementasi di Rollback Target Versi context:Halaman/area: Halaman pemasaran solusi Capgo. Peran: Judul bagian atau halaman. Dilihat di: halaman solusi/target-versi.astro. Kunci pesan `solutions_version_targeting_title` (Judul Solusi Target Versi). | Halaman/area: Halaman pemasaran solusi Capgo. Peran: Label UI singkat atau item navigasi. Dilihat di: halaman solusi/target-versi.astro. Kunci pesan `solutions_version_targeting` (Solusi Target Versi). untuk detail implementasi di Target Versi Perilaku Update untuk detail implementasi di Perilaku Update bundle Capgo Live Updates Capgo Live Updates