Hot Restart adalah mekanisme pemuatan ulang cepat aplikasi mobile dalam proses pengembangan, di mana aplikasi sepenuhnya dimulai ulang dengan kode sumber yang diperbarui. Berbeda dengan kompilasi ulang penuh, Hot Restart menggunakan kode biner yang sudah dikompilasi dan hanya memuat ulang Dart VM, memperpendek siklus pengembangan. Menurut Flutter documentation (2025), Hot Restart tipikal memakan waktu 1 hingga 3 detik. Hot Restart sangat berguna saat mengubah status global aplikasi dan kode inisialisasi.
Poin utama
Hot Restart adalah mekanisme pengembangan di mana aplikasi dimuat ulang sepenuhnya dengan kode sumber yang diperbarui tanpa perlu kompilasi ulang penuh proyek. Pengembang membuat perubahan pada kode, menyimpan file, dan melalui IDE mengirim perintah mulai ulang. Aplikasi mengkompilasi ulang file yang diubah, memulai ulang Dart VM, dan melewati seluruh siklus hidup dari main hingga rendering akhir antarmuka pengguna.
Hot Restart berbeda dari pembangunan ulang penuh karena menggunakan pustaka biner yang sudah dikompilasi dan framework Flutter tanpa kompilasi ulang wrapper native. Ini memperpendek siklus pengembangan dari beberapa menit menjadi beberapa detik. Menurut survei pengembang Flutter (2024), rata-rata waktu Hot Restart adalah 2,1 detik, yang sekitar 97% lebih cepat daripada pembangunan ulang penuh proyek melalui perintah flutter build.
Mekanisme ini sangat diminati dalam pengembangan antarmuka pengguna, di mana diperlukan pemeriksaan sering terhadap perubahan visual. Pengembang dapat mengubah warna, ukuran, atau posisi elemen dan segera melihat hasilnya di simulator atau perangkat fisik, tanpa kehilangan konteks pengembangan karena kompilasi yang lama. Ini secara radikal mempercepat pembuatan prototipe iteratif.
Saat menjalankan perintah Hot Restart, terjadi serangkaian operasi: menyimpan file yang diubah, kompilasi inkremental file Dart yang diubah menjadi kode mesin, memulai ulang Dart VM, dan mengeksekusi ulang titik masuk aplikasi. Dart VM adalah mesin virtual yang menjalankan kode Dart dalam mode JIT (Just-In-Time) selama pengembangan dan AOT (Ahead-Of-Time) dalam build produksi.
Saat Hot Restart, aplikasi melewati siklus hidup penuh: pemanggilan fungsi main, inisialisasi WidgetsFlutterBinding, menjalankan runApp, dan membangun seluruh pohon widget dari awal. Semua status widget sebelumnya, variabel, dan cache dibersihkan. Ini menjamin bahwa aplikasi berada dalam status bersih, sepenuhnya identik dengan status setelah instalasi baru di perangkat.
Proses dapat direpresentasikan sebagai serangkaian langkah: pengembang menekan tombol Hot Restart di IDE, alat Flutter mengirim perintah ke perangkat, perangkat menyimpan kerangka aplikasi saat ini, memulai ulang Dart VM dengan kode baru, dan menjalankan main lagi. Semua dependensi yang terdaftar di container injeksi dependensi dibuat ulang dari awal.
Fitur utama — kode biner wrapper native (plugin, kode Kotlin, kode Swift) tidak dikompilasi ulang. Hot Restart hanya memengaruhi lapisan Dart aplikasi, yang memastikan kecepatan mulai ulang yang tinggi. Jika perubahan memengaruhi kode native, diperlukan eksekusi flutter build penuh.
Flutter menggunakan arsitektur di mana kode Dart dijalankan di Dart VM, dan UI dirender melalui mesin Skia atau Impeller. Saat Hot Restart, alat Flutter memulai ulang instance terisolasi dari Dart VM (isolate), memuat file .dill yang diperbarui (Dart Intermediate Language), dan menjalankan ulang fungsi main. Seluruh UI dibangun kembali melalui pemanggilan runApp, yang menjamin keaktualan semua widget.
import 'package:flutter/material.dart';
void main() {
// Setelah Hot Restart fungsi ini dijalankan kembali
var prefs = await SharedPreferences.getInstance();
var themeMode = prefs.getString('theme') ?? 'light';
runApp(MyApp(themeMode: themeMode));
}
Hot Restart dan Hot Reload adalah dua mekanisme pengembangan dipercepat yang sering membingungkan. Hot Reload memuat perubahan ke aplikasi yang berjalan tanpa kehilangan status saat ini, sedangkan Hot Restart memulai ulang aplikasi sepenuhnya. Hot Reload bekerja lebih cepat (0,1–1 detik), tetapi tidak menerapkan perubahan yang memengaruhi inisialisasi atau bidang statis kelas.
Perbedaan utama — status aplikasi. Hot Reload mempertahankan status widget saat ini: posisi scroll, data yang dimasukkan, jendela modal yang terbuka. Hot Restart mereset seluruh status ke awal. Jika perubahan hanya menyangkut kode dalam metode build, Hot Reload sudah cukup. Jika perubahan memengaruhi main, variabel global, atau dependensi — diperlukan Hot Restart.
Hot Reload menerapkan perubahan dengan menyuntikkan kode yang diperbarui ke Dart VM tanpa memulai ulang isolate. Ini hanya mungkin untuk perubahan yang tidak melanggar struktur tipe dan tidak memerlukan inisialisasi ulang widget. Saat Hot Restart, isolate dimulai ulang sepenuhnya, yang memungkinkan penerapan perubahan apa pun, termasuk penghapusan atau penggantian nama kelas dan metode.
Menurut tim Flutter, Hot Reload memakan waktu kurang dari 1 detik untuk sebagian besar perubahan, sedangkan Hot Restart memakan waktu 1 hingga 3 detik. Untuk sekitar 80% perubahan antarmuka pengguna, Hot Reload sudah cukup. Hot Restart diperlukan saat mengubah konfigurasi aplikasi, variabel global, plugin native di wrapper Dart, dan keputusan arsitektur.
Strategi berikut direkomendasikan: gunakan Hot Reload untuk perbaikan visual UI dan perubahan logika kecil; beralih ke Hot Restart saat mengubah struktur data, menambahkan dependensi, atau memperbaiki kode inisialisasi. Ini meminimalkan waktu tunggu dan mempertahankan produktivitas pengembangan pada tingkat tinggi.
Mekanisme mulai ulang panas diimplementasikan berbeda tergantung pada framework dan bahasa pemrograman. Flutter menyediakan implementasi Hot Restart paling matang melalui kompilasi JIT Dart VM, dan React Native menggunakan mekanisme serupa melalui Metro Bundler dan JavaScript Core atau Hermes.
Di Flutter, Hot Restart diaktifkan dengan perintah r di terminal setelah menjalankan aplikasi melalui flutter run. Alternatif — tombol Hot Restart di Android Studio, VS Code, atau IntelliJ IDEA. Hot Restart hanya berfungsi dalam mode debug dan tidak tersedia di build profile dan release. Saat dijalankan, alat Flutter mengkompilasi ulang file yang diubah ke format kernel dan mengirimkannya ke perangkat.
// Sebelum Hot Restart: versi lama
class Counter extends StatefulWidget {
final int initialValue = 0;
// Setelah Hot Restart: nilai baru akan berlaku
// final int initialValue = 10;
}
class CounterState extends State<Counter> {
int _count = 0;
// Hot Reload akan mempertahankan _count, Hot Restart akan mereset ke 0
}
Keterbatasan Hot Restart di Flutter — ketidakmampuan untuk mempertahankan status debug. Setelah mulai ulang, semua titik henti dipertahankan, tetapi nilai variabel di debugger direset. Untuk mempertahankan status antar mulai ulang, digunakan mekanisme penyimpanan status aplikasi State Restoration.
Di React Native, mulai ulang panas diimplementasikan melalui Metro Bundler — penggabung modul JavaScript. Saat kode diubah, Metro membangun ulang modul yang diubah dan mengirimkan bundel yang diperbarui ke perangkat. React Native mendukung Fast Refresh — analog Hot Reload yang mempertahankan status komponen fungsional menggunakan hooks React.
Mulai ulang penuh (Reload) di React Native memuat ulang mesin JavaScript dan seluruh aplikasi secara keseluruhan. Ini sepenuhnya analog dengan Hot Restart di Flutter. Untuk menjalankannya digunakan kombinasi Cmd+R di simulator iOS atau tekan dua kali R di Android. Waktu mulai ulang penuh di React Native bervariasi dari 2 hingga 8 detik tergantung pada ukuran bundel.
Hot Restart adalah alat yang sangat diperlukan dalam sejumlah skenario pengembangan. Pertama dan paling jelas — mengubah konfigurasi global aplikasi: tema desain, lokalisasi, penyedia status. Jika Anda mengubah penyedia di akar pohon widget atau menambahkan modul baru ke container DI, Hot Restart menjamin inisialisasi yang benar dari semua komponen.
Skenario kedua — mengubah variabel statis dan konstanta. Di Dart, bidang statis diinisialisasi sekali saat kelas dimuat. Hot Reload tidak menerapkan perubahan bidang statis, oleh karena itu untuk memperbaruinya, Hot Restart wajib dilakukan. Ini sangat relevan saat bekerja dengan konstanta konfigurasi, URL API, dan flag fitur.
Skenario ketiga — debug inisialisasi: memeriksa fungsi main, layar splash, pemuatan dependensi. Pada setiap Hot Restart, aplikasi melewati siklus inisialisasi penuh, yang memungkinkan mendeteksi kesalahan yang hanya terjadi saat startup — masalah dengan SharedPreferences, kesalahan koneksi database, time-out inisialisasi.
Skenario keempat — pengujian status kosong. Hot Restart mereset seluruh status aplikasi, yang memungkinkan memeriksa perilaku saat pertama kali dijalankan: menampilkan onboarding, permintaan izin, daftar kosong, dan placeholder. Untuk pengujian berulang, ini jauh lebih cepat daripada menginstal ulang aplikasi.
Pertanyaan yang sering diajukan
Hot Restart memulai ulang aplikasi dan Dart VM sepenuhnya, mereset status ke awal. Hot Reload menyuntikkan perubahan ke aplikasi yang berjalan, mempertahankan status UI saat ini. Hot Reload lebih cepat, tetapi tidak berlaku untuk perubahan inisialisasi dan variabel global.
Di terminal setelah menjalankan flutter run tekan tombol R (Shift+R) untuk Hot Restart. Di Android Studio atau VS Code gunakan tombol Hot Restart di panel debug. Perintah hanya tersedia dalam mode debug.
Waktu Hot Restart tipikal adalah 1 hingga 3 detik untuk proyek berukuran sedang. Waktu tergantung pada jumlah file Dart, kompleksitas pohon widget, dan kinerja perangkat. Untuk proyek besar, waktu dapat mencapai 5–8 detik.
Tidak, Hot Restart hanya tersedia dalam mode debug. Di build release dan profile digunakan kompilasi AOT yang tidak mendukung muat ulang panas. Untuk memperbarui kode di release diperlukan pembangunan ulang penuh.
Hot Restart tidak memengaruhi kode native — plugin Kotlin, Swift, atau Java. Jika perubahan dilakukan pada kode native plugin, diperlukan pembangunan ulang penuh proyek. Hot Restart hanya efektif untuk lapisan Dart aplikasi.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga