Kolom Tekno

Repo-rter V0.4.1 Ganti LocalStorage dengan Penyimpanan Asli Tauri untuk Kinerja Lebih Baik

Ringkasan

  • Aplikasi desktop Repo-rter versi 0.4.1 meninggalkan localStorage WebView demi penyimpanan berkas asli berbasis Rust di Tauri, mengatasi batas 5 MB, pembersihan cache OS, dan meningkatkan sinkronisasi API GitHub secara rotatif.
  • Perubahan ini menjanjikan cadangan data lebih andal dan cepat untuk pengguna Indonesia yang melacak puluhan repositori.

Repo-rter, aplikasi desktop lokal pertama yang dibangun dengan Next.js dan Tauri v2, awalnya menggunakan localStorage WebView untuk menyimpan log lalu lintas GitHub. Desain ini berhasil melewati batas 14 hari yang menjengkelkan dari GitHub, tetapi segera menimbulkan hambatan arsitektur kritis di produksi. Pada rilis v0.4.1, tim melakukan refactor total lapisan data, meninggalkan JavaScript localStorage demi penyimpanan berkas asli berbasis Rust yang dijalankan Tauri.

Masalah utama localStorage adalah tiga hal: pertama, penyimpanan WebView terikat pada cache OS. Di macOS dan Windows, daemon penghapus cache sistem dapat menghapus folder WebView secara otomatis saat disk hampir penuh, atau utilitas pembersih seperti CCleaner dan CleanMyMac menghapusnya tanpa peringatan. Kedua, batas keras 5 MB pada localStorage. Pengguna yang melacak 20+ repositori selama setahun dengan cepat mencapai batas kuota, memicu QuotaExceededError. Ketiga, cadangan JSON yang mudah menguap. Tanpa pembaca/penulis berkas asli, memulihkan data di perangkat berbeda menjadi merepotkan.

Solusi yang dipilih adalah perintah asli Rust di Tauri yang menulis statistik langsung ke direktori data aplikasi sistem—area yang aman dari penghapusan cache OS. Dua perintah, save_traffic_data dan load_traffic_data, membuat dan membaca berkas JSON dengan nama aman (misalnya, traffic_views_owner__repo.json). Rust juga membuat direktori jika belum ada, sehingga setiap operasi I/O bersifat idempotent dan dapat diandalkan.

Lapisan caching asinkron di frontend menggunakan isTauri() untuk mendeteksi lingkungan. Di Tauri, mergeTrafficData memanggil perintah Rust secara langsung; di browser, ia jatuh kembali ke localStorage. Pola ini mempertahankan kompatibilitas dengan alur kerja pengembangan web sambil memberikan performa dan keandalan di desktop. Logika penggabungan tetap O(1) menggunakan Map, sehingga tidak ada regresi kecepatan meskipun data bertambah.

Untuk mengatasi batas 5.000 permintaan per jam pada Personal Access Token (PAT) GitHub, tim mengadopsi antrian rotatif berbasis jendela geser. Dengan BATCH_SIZE 10, sinkronisasi hanya memproses sebagian repositori sekaligus, menyimpan indeks offset di localStorage. Daftar repositori diurutkan berdasarkan stargazers_count, sehingga distribusi beban tetap stabil. Pengguna dengan 50+ repositori akhirnya mendapatkan cadangan lengkap tanpa pernah memicu batas permintaan, dan proses ini berjalan di latar belakang secara transparan.

Pembersihan data juga dibuat tanpa dependensi. Alih-alih mengimpor chrono, tim memanfaatkan fakta bahwa string ISO-8601 (YYYY-MM-DDTHH:MM:SSZ) dapat dibandingkan secara leksikografis. Rust mempertahankan berkas hanya dengan membandingkan timestamp dengan ambang batas yang diberikan dari JavaScript, sehingga biner tetap kecil dan kompilasi cepat.

Terakhir, versioning dinamis menghilangkan angka versi yang ditulis tangan di UI. Dengan mengaktifkan resolveJsonModule di tsconfig.json, paket mengambil versi langsung dari package.json, sehingga metadata aplikasi selalu sinkron dengan rilis.

Bagi pengembang Indonesia, perubahan ini sangat relevan. Banyak profesional lokal yang melacak beberapa repositori GitHub untuk proyek akademik atau komersial, dan sering kali terhambat oleh batas lalu lintas 14 hari GitHub. Penyimpanan asli Tauri menjanjikan cadangan yang tidak akan hilang karena pembersihan cache sistem atau utilitas pembersih yang umum digunakan di Windows dan macOS. Selain itu, pola sinkronisasi rotatif dapat diskalakan ke puluhan repositori tanpa henti, sebuah skenario umum di startup teknologi dan komunitas open-source di negara ini.

"Kami ingin pengguna merasa aman bahwa data mereka tidak hilang saat sistem membersihkan cache,” kata seorang pengembang Repo-rter. “Dengan menyimpan berkas di direktori data aplikasi, kami menghilangkan ketidakpastian ini dan memberikan kepastian kepada pengguna kami.”

Ke depan, pola ini dapat menginspirasi aplikasi desktop lokal lainnya di ekosistem Indonesia untuk mengadopsi Rust-backed storage. Seiring dengan semakin banyaknya pengembang yang mengutamakan privasi dan kemampuan offline, solusi seperti Repo-rter v0.4.1 dapat menjadi standar baru untuk alat pengembangan yang dapat diandalkan di pasar yang semakin sadar akan keamanan.

Bagi pembaca Indonesia yang ingin menjelajahi Tauri atau membangun aplikasi desktop lokal, v0.4.1 ini merupakan titik awal yang kuat. Kode sumbernya tersedia di dev.to, dan komunitas lokal di Discord atau GitHub dapat berkolaborasi untuk mengadaptasi logika penyimpanan untuk basis kode mereka sendiri. Ini adalah langkah menuju masa depan di mana data tetap milik Anda, di mana pun Anda berada.

Mengapa Ini Penting

Bagi ekosistem pengembangan perangkat lunak Indonesia, migrasi ini menunjukkan bahwa aplikasi lokal dapat mencapai keandalan kelas produksi tanpa bergantung pada penyimpanan yang tidak stabil di peramban. Ini membuka jalan bagi alat-alat lokal yang lebih kuat yang dapat menangani basis kode besar, sebuah kebutuhan yang meningkat seiring dengan pertumbuhan startup teknologi dan proyek-proyek open-source di negara ini. Selain itu, strategi sinkronisasi rotatif yang menghindari batas API memberikan model yang dapat diadopsi oleh pengembang lokal yang bekerja dengan token GitHub terbatas, sehingga mengurangi gesekan dalam alur kerja pengembangan harian.

Sumber Asli
Dev.to
Tanggal
15 Juli 2026
Waktu Baca
5 menit