Hijrah Frontend (2): Port Tipis dan Warisan yang Ikut Naik



Pindahan di episode pertama akhirnya selesai. Di hari serah terima, manifestnya cuma punya satu angka penting: tujuh puluh enam kotak masuk, tujuh puluh enam kotak keluar. Tidak ada halaman yang tertinggal.

Tidak ada yang tertinggal karena memang begitu keputusan kami. Ada yang sengaja dibawa, ada yang ikut tanpa diundang, dan ada satu rencana besar yang akhirnya batal. Saya ceritakan satu-satu ya.

Kenapa Nol Halaman Ditinggalkan #

Kalau pernah pindah rumah, pasti tahu rasa lega waktu bilang, “yang ini buang aja”. Migrasi frontend punya godaan yang sama. Menghapus halaman rasanya seperti sekalian merapikan produk.

Masalahnya, menentukan hidup-mati halaman saat pindahan itu artinya mengambil dua keputusan sekaligus: memindahkan aplikasi dan mengubah cakupan produk. Seri sebelah sudah mengajari saya mahalnya kombinasi itu. Jadi aturannya jelas: tujuh puluh enam masuk, tujuh puluh enam keluar, diperiksa halaman demi halaman, tanpa skrip untuk membuang.

Hasilnya memang tidak dramatis, tapi angkanya cocok: repo baru berisi 76 halaman, sama dengan repo lama, dan daftar foldernya cocok satu per satu. Halaman dengan nama yang bikin bertanya-tanya, seperti demo, docs, dan jalur khusus, ikut pindah juga. Bukan karena semuanya penting, tapi memutuskan untuk menghapusnya memang bukan bagian dari fase ini.

Isi Kotak yang Saya Buka Duluan #

Kotak pertama yang saya buka isinya dua library UI yang sudah lama hidup berdampingan. Di rumah baru, hitungannya kelihatan jelas: satu library dipakai di 101 file, sedangkan yang satunya tinggal bertahan di 13 file.1

Angka itu menunjukkan dua era: satu library dominan, satu lagi muncul belakangan, dan keduanya hidup di aplikasi yang sama tanpa perang terbuka. Dua-duanya kami bawa. Menghapus satu library berarti mengubah semua file yang memakainya, dan mengubah semua file saat pindahan itu melanggar aturan episode empat.

Ada juga sambungan state management warisan. Di app router yang baru, tinggal satu titik sambungan, tapi titik itu masih jadi jantung bagi halaman-halaman yang memakainya. Memotongnya sekarang berarti mengubah hal lain lagi, dan itu bukan kerjaan pindahan ini.

Yang Sadar Dibawa, yang Dicatat #

Beberapa warisan kecil juga saya catat waktu ikut naik:

Beda lho antara membawa sesuatu dengan sadar dan baru menemukannya setelah pindahan. Yang pertama punya catatan, alasan, dan giliran dibersihkan nanti. Yang kedua gampang luput, lalu ikut beranak-pinak.

Rencana Besar yang Tidak Jadi #

Seperti di seri sebelah, ada satu rencana yang perlu dicatat walau tidak jadi dijalankan: mengganti state management warisan dengan yang baru.

Batalnya bukan karena gagal. Prioritasnya bergeser ke kerjaan yang dampaknya lebih terasa buat user. Membatalkan sesuatu sebelum menghabiskan tenaga juga semacam quality control untuk rencana sendiri. Ya… anggap saja begitu hehe.

Catatan Akhir #

  1. Pindahkan dulu 1:1, putuskan cakupan belakangan. Menghapus halaman saat pindahan berarti dua keputusan sekaligus.
  2. Hitung isi kotaknya. Angka 76 ke 76 dan 101 ke 13 bikin obrolan soal warisan lebih konkret, tidak cuma soal selera.
  3. Dua library yang hidup berdampingan menandai dua era. Masing-masing punya alasan kenapa masih ada di aplikasi.
  4. Rencana yang dibatalkan sebelum menghabiskan biaya itu juga keputusan yang bagus. Catat alasannya supaya jelas kapan perlu dibuka lagi.

Kotak berikutnya isinya bukan library, tapi tipe data yang tidak seragam. Satu field yang sama bisa dikirim sebagai angka, string kosong, atau string biasa, tergantung halaman yang mengirimnya. Di situlah type chaos mulai kelihatan.


  1. Angka halaman, file, dan pemakaian library dihitung langsung dari repo saat episode ini ditulis, dengan pemisahan detail internal untuk bercerita. ↩︎

  2. Nama library, framework, dan struktur folder dipertahankan secukupnya; yang tidak perlu untuk cerita tidak disebut. ↩︎