Programmer

Tauri vs Electron: Bikin Aplikasi Desktop Irit RAM!

–

tauri-electron

Membuat aplikasi desktop dengan teknologi web kini bukan lagi hal aneh. Developer dapat memakai HTML, CSS, JavaScript, React, Vue, Svelte, atau framework web lain untuk membangun aplikasi Windows, macOS, dan Linux tanpa membuat antarmuka secara terpisah untuk setiap sistem operasi.

Dua framework yang sering dibandingkan untuk kebutuhan tersebut adalah Electron dan Tauri. Electron sudah matang dan digunakan oleh aplikasi populer seperti Visual Studio Code, Discord, Slack, Notion, Postman, dan GitHub Desktop. Sementara itu, Tauri hadir dengan pendekatan berbeda: memanfaatkan WebView milik sistem operasi dan menggunakan Rust untuk menangani fungsi native.

Perbedaan arsitektur tersebut membuat Tauri kerap disebut lebih hemat RAM dan menghasilkan aplikasi berukuran lebih kecil. Namun, apakah itu berarti Electron sudah tidak layak digunakan? Tidak sesederhana itu. Efisiensi sumber daya hanyalah salah satu bagian dari keputusan teknis.

Mengenal Electron dan Tauri

Apa Itu Electron?

Electron adalah framework open-source untuk membuat aplikasi desktop menggunakan JavaScript, HTML, dan CSS. Framework ini menggabungkan Chromium sebagai mesin penampil antarmuka dan Node.js untuk menjalankan logika aplikasi serta mengakses kemampuan sistem operasi.

Dengan membawa Chromium sendiri, Electron memberikan lingkungan rendering yang relatif konsisten pada Windows, macOS, dan Linux. Developer tidak terlalu bergantung pada versi browser atau WebView yang tersedia di komputer pengguna.

Menurut dokumentasi resmi Electron, Chromium dan Node.js ditanamkan ke dalam binary aplikasi. Pendekatan ini memungkinkan satu basis kode JavaScript digunakan untuk membangun aplikasi lintas platform, tetapi juga menambah ukuran paket dan kebutuhan sumber daya.

Electron menggunakan arsitektur multiproses yang diwarisi dari Chromium. Secara umum, aplikasi memiliki:

  • Main process, yaitu proses utama berbasis Node.js yang mengatur siklus hidup aplikasi, jendela, menu, notifikasi, dan integrasi sistem operasi.
  • Renderer process, yaitu proses yang menampilkan antarmuka web untuk setiap jendela.
  • Utility process, yang dapat dipakai untuk pekerjaan berat, layanan tertentu, atau tugas yang perlu dipisahkan dari proses utama.

Pemisahan tersebut membantu stabilitas dan keamanan. Apabila satu renderer mengalami masalah, seluruh aplikasi tidak selalu ikut berhenti. Konsekuensinya, setiap proses juga menimbulkan overhead memori. Penjelasan lengkap mengenai mekanisme ini tersedia dalam dokumentasi model proses Electron.

Apa Itu Tauri?

Tauri adalah toolkit open-source untuk membangun aplikasi desktop dan mobile menggunakan frontend berbasis web. Developer tetap dapat menggunakan HTML, CSS, JavaScript, TypeScript, React, Vue, Svelte, atau teknologi web lainnya, sedangkan bagian inti aplikasinya dibangun menggunakan Rust.

Perbedaan terbesarnya terletak pada mesin rendering. Tauri tidak menyertakan Chromium lengkap ke dalam setiap aplikasi. Framework ini menggunakan WebView yang tersedia pada sistem operasi:

  • WebView2 berbasis Chromium pada Windows.
  • WKWebView berbasis WebKit pada macOS dan iOS.
  • WebKitGTK pada Linux.
  • System WebView pada Android.

Karena tidak membawa runtime browser lengkap, ukuran binary Tauri dapat dibuat jauh lebih kecil. Dokumentasi arsitektur Tauri juga menjelaskan bahwa frontend berkomunikasi dengan backend Rust melalui mekanisme message passing.

Walaupun Rust menjadi bagian penting dari Tauri, developer tidak harus menulis seluruh aplikasi menggunakan Rust. Tampilan dan sebagian besar logika antarmuka tetap dapat dibuat memakai JavaScript atau TypeScript. Rust baru benar-benar diperlukan ketika aplikasi membutuhkan command khusus, pengolahan data di backend, plugin, atau akses native yang belum tersedia melalui API bawaan Tauri.

Mengapa Electron Cenderung Lebih Boros RAM?

Electron Membawa Chromium dan Node.js

Setiap aplikasi Electron menyertakan runtime Chromium dan Node.js miliknya sendiri. Artinya, ketika beberapa aplikasi Electron dijalankan bersamaan, masing-masing aplikasi membawa serta komponen runtime yang dibutuhkannya.

Selain itu, arsitektur multiproses Chromium dapat menghasilkan proses utama, renderer, GPU, network service, dan utility process. Model ini memberikan isolasi serta kestabilan yang baik, tetapi membutuhkan lebih banyak memori dibandingkan aplikasi dengan arsitektur yang lebih sederhana.

Inilah sebabnya aplikasi Electron yang terlihat hanya memiliki satu atau dua jendela dapat menampilkan beberapa proses di Task Manager. Kondisi tersebut bukan selalu tanda adanya kebocoran memori, melainkan bagian dari rancangan Chromium.

Tauri Menggunakan WebView Sistem Operasi

Tauri tidak mengemas satu salinan Chromium utuh ke dalam aplikasinya. Ia menggunakan mesin WebView yang sudah tersedia atau dikelola oleh sistem operasi. Hasilnya, paket aplikasi tidak perlu memuat sebagian besar komponen browser dari awal.

Backend Tauri juga dikompilasi menjadi native binary menggunakan Rust. Tidak ada runtime Node.js yang wajib berjalan hanya untuk mengoperasikan bagian belakang aplikasi. Kombinasi tersebut biasanya membuat kebutuhan penyimpanan, waktu startup, dan konsumsi memori dasar menjadi lebih rendah.

Namun, Tauri bukan berarti “tidak memakai browser”. Antarmukanya tetap dirender oleh WebView. Jika frontend memuat tabel raksasa, animasi berat, banyak gambar, library yang berlebihan, atau mengalami memory leak, aplikasi Tauri tetap dapat menghabiskan RAM dalam jumlah besar.

Benarkah Tauri Hanya Menggunakan RAM 15–30 MB?

Angka seperti 15–30 MB untuk Tauri dan 80–120 MB atau lebih untuk Electron sering muncul dalam benchmark komunitas. Angka tersebut dapat digunakan sebagai gambaran kecenderungan, tetapi tidak boleh dianggap sebagai spesifikasi resmi atau jaminan untuk semua aplikasi.

Pemakaian RAM dipengaruhi oleh banyak faktor, antara lain:

  • Sistem operasi dan versi WebView.
  • Versi Tauri, Electron, Chromium, dan Node.js.
  • Jumlah jendela serta proses renderer.
  • Framework frontend yang digunakan.
  • Ukuran DOM dan jumlah data yang ditampilkan.
  • Gambar, font, animasi, dan media.
  • Plugin serta fitur native.
  • Mode development atau production.
  • Cara sistem operasi menghitung shared memory.

Aplikasi “Hello World” Tauri memang umumnya lebih ringan daripada aplikasi Electron yang setara. Akan tetapi, perbandingan yang adil harus menggunakan fungsi, data, aset, konfigurasi produksi, dan perangkat pengujian yang sama.

Karena itu, klaim yang lebih tepat adalah: Tauri secara arsitektural memiliki overhead dasar yang lebih kecil, tetapi konsumsi RAM akhir tetap ditentukan oleh implementasi aplikasinya.

Perbedaan Ukuran Aplikasi

Mengapa Paket Electron Lebih Besar?

Paket Electron harus menyertakan komponen seperti Chromium, Node.js, pustaka pendukung, dan kode aplikasi. Bahkan aplikasi sederhana dapat menghasilkan paket distribusi berukuran puluhan hingga lebih dari seratus megabita, tergantung sistem operasi, format installer, arsitektur prosesor, dan aset yang digunakan.

Ukuran tersebut bukan semata-mata pemborosan. Dengan membawa Chromium sendiri, developer memperoleh versi mesin rendering yang terkontrol. Fitur web, perilaku CSS, dan API browser menjadi lebih konsisten pada setiap komputer.

Mengapa Paket Tauri Bisa Jauh Lebih Kecil?

Tauri memanfaatkan WebView sistem operasi sehingga tidak perlu menyertakan keseluruhan mesin browser. Untuk aplikasi sederhana, binary atau installer dapat berada pada kisaran beberapa megabita hingga belasan megabita.

Ukuran akhirnya tetap dapat membesar apabila aplikasi menyertakan banyak aset, model AI, database, video, sidecar binary, atau plugin native. Jadi, klaim bahwa setiap aplikasi Tauri pasti berukuran di bawah 10 MB juga kurang tepat.

Tauri memberikan titik awal yang lebih kecil, bukan jaminan bahwa semua produk akhirnya akan selalu berukuran kecil.

Konsistensi Tampilan dan Kompatibilitas

Electron Memiliki Target Rendering yang Seragam

Karena menggunakan Chromium yang dibundel, Electron memberi developer satu target rendering yang relatif konsisten. Antarmuka yang sudah diuji pada versi Electron tertentu cenderung memberikan hasil serupa di seluruh sistem operasi yang didukung.

Hal ini sangat berguna untuk aplikasi dengan UI kompleks, editor visual, layout interaktif, atau fitur web terbaru. Developer juga dapat menentukan kapan aplikasi akan berpindah ke versi Electron dan Chromium yang lebih baru.

Komprominya adalah developer harus rutin memperbarui Electron agar perbaikan keamanan Chromium dan Node.js ikut diterima oleh pengguna.

Tauri Memerlukan Pengujian Lintas WebView

Tampilan Tauri dapat dirender oleh mesin berbeda: Chromium melalui WebView2 pada Windows dan WebKit pada macOS serta Linux. Perbedaan mesin tersebut berpotensi menghasilkan variasi pada CSS, dukungan API web, format media, dan perilaku komponen tertentu.

Menurut referensi versi WebView Tauri, Tauri tidak membundel WebView sehingga versi runtime bergantung pada provider WebView di perangkat. WebView2 pada Windows dapat memperbarui dirinya, sedangkan WebKit pada macOS umumnya mengikuti pembaruan sistem operasi.

Tauri tetap dapat menghasilkan UI lintas platform yang baik, tetapi developer perlu melakukan pengujian pada mesin rendering yang benar-benar dipakai pengguna—bukan hanya menguji aplikasi di satu browser selama development.

Keamanan: Tauri Menang Otomatis?

Sistem Permission dan Capability Tauri

Tauri menerapkan sistem capability untuk menentukan API dan command yang boleh digunakan oleh window atau WebView tertentu. Akses dapat dibatasi berdasarkan jendela, platform, URL, command, dan scope tertentu.

Melalui pendekatan ini, frontend tidak otomatis mendapatkan akses bebas ke filesystem atau fungsi sistem operasi. Developer harus mendefinisikan kemampuan yang memang diperlukan aplikasi. Konsep tersebut mendukung prinsip least privilege, yaitu memberikan hak akses seminimal mungkin.

Mekanismenya dijelaskan dalam dokumentasi capability Tauri. Walaupun fondasinya kuat, konfigurasi yang terlalu luas, plugin bermasalah, command Rust yang tidak memvalidasi input, dan kerentanan frontend tetap dapat menimbulkan risiko keamanan.

Electron Juga Bisa Dibangun dengan Aman

Electron terkadang dianggap tidak aman karena mampu memberikan akses Node.js kepada antarmuka web. Penilaian tersebut perlu diberi konteks: konfigurasi Electron modern sudah jauh lebih aman daripada konfigurasi lama.

Dokumentasi keamanan Electron menyarankan developer untuk:

  • Tidak mengaktifkan nodeIntegration pada konten remote.
  • Menggunakan contextIsolation.
  • Mengaktifkan sandbox pada renderer.
  • Membatasi navigasi dan pembuatan jendela baru.
  • Menerapkan Content Security Policy.
  • Memvalidasi pengirim setiap pesan IPC.
  • Tidak mengekspos API Electron secara luas ke frontend.
  • Selalu memakai versi Electron yang masih menerima pembaruan.

Sejak Electron 20, sandbox telah diaktifkan secara default untuk renderer dalam konfigurasi normal. contextIsolation juga menjadi default sejak Electron 12, sedangkan nodeIntegration untuk renderer telah dinonaktifkan secara default sejak Electron 5. Rekomendasi lengkapnya dapat diperiksa dalam panduan keamanan Electron.

Jadi, Tauri menyediakan model izin yang ketat dan menarik, tetapi keamanan aplikasi tetap bergantung pada desain, konfigurasi, dependensi, dan kedisiplinan developer.

Pengalaman Pengembangan

Electron Unggul dalam Kematangan Ekosistem

Electron sudah berkembang cukup lama dan memiliki dokumentasi, tutorial, alat packaging, layanan debugging, serta komunitas yang besar. Developer JavaScript atau TypeScript dapat mengakses ekosistem npm dan API Node.js melalui arsitektur main process, preload, serta IPC.

Electron sangat cocok bagi tim yang:

  • Sudah menguasai JavaScript dan Node.js.
  • Mengejar waktu pengembangan yang cepat.
  • Memerlukan pustaka npm atau native Node add-on tertentu.
  • Membutuhkan perilaku rendering yang konsisten.
  • Mengembangkan UI web yang sangat kompleks.
  • Mengutamakan kematangan tooling dan dukungan komunitas.

Namun, akses native sebaiknya tidak diberikan langsung kepada renderer. Pola yang lebih aman adalah menggunakan preload script dan contextBridge untuk mengekspos API terbatas.

Tauri Membutuhkan Pemahaman Rust untuk Fitur Lanjutan

Project Tauri tetap dapat memakai frontend JavaScript atau TypeScript. Untuk kebutuhan dasar, banyak fungsi tersedia melalui API dan plugin sehingga developer tidak perlu menulis banyak kode Rust.

Rust mulai dibutuhkan ketika aplikasi memiliki logika native khusus, pengolahan performa tinggi, command buatan sendiri, atau integrasi sistem operasi yang belum tersedia melalui plugin.

Kurva belajar Rust relatif lebih curam karena developer perlu memahami ownership, borrowing, tipe data yang ketat, error handling, dan concurrency. Namun, sistem tersebut juga membantu mencegah sejumlah kesalahan pengelolaan memori sejak proses kompilasi.

Tauri cocok bagi tim yang:

  • Memprioritaskan penggunaan RAM dan ukuran aplikasi.
  • Membuat utility, aplikasi tray, atau program yang terus berjalan di background.
  • Menargetkan perangkat dengan spesifikasi terbatas.
  • Bersedia mempelajari Rust.
  • Menginginkan kontrol akses frontend yang lebih terperinci.
  • Berencana berbagi sebagian arsitektur ke Android atau iOS.

Dukungan Platform dan Aplikasi Mobile

Electron secara resmi berfokus pada aplikasi desktop untuk Windows, macOS, dan Linux. Framework ini tidak menyediakan target resmi untuk menghasilkan aplikasi Android atau iOS.

Tauri 2 mendukung Windows, macOS, Linux, Android, dan iOS. Dukungan mobile tersebut membuka peluang untuk menggunakan kembali frontend dan sebagian logika aplikasi. Meski demikian, dukungan lintas platform bukan berarti seluruh kode otomatis berjalan identik. Plugin, permission, API native, layout, proses distribusi, dan batasan tiap platform tetap harus ditangani secara khusus.

Apabila produk benar-benar memiliki target desktop dan mobile, kemampuan Tauri ini dapat menjadi keuntungan strategis. Jika produk hanya membutuhkan desktop, keuntungan tersebut mungkin tidak terlalu menentukan.

Biaya Penggunaan dan Distribusi

Electron dan Tauri sama-sama dapat digunakan tanpa biaya lisensi framework untuk proyek personal maupun komersial. Electron menggunakan lisensi MIT, sedangkan komponen utama Tauri tersedia dengan skema lisensi MIT atau Apache 2.0.

Meski framework-nya gratis, pengembangan aplikasi desktop tetap dapat menimbulkan biaya untuk:

  • Tenaga pengembang dan pelatihan tim.
  • Infrastruktur build serta pengujian lintas platform.
  • Code signing dan notarization.
  • Akun pengembang atau biaya toko aplikasi.
  • Server backend dan layanan pembaruan.
  • Crash reporting, analytics, serta pemantauan.
  • Audit keamanan dan pemeliharaan dependensi.

Dengan demikian, framework gratis tidak selalu berarti total biaya produk menjadi nol. Electron dapat menghemat waktu tim JavaScript, sedangkan Tauri dapat menurunkan kebutuhan sumber daya pengguna tetapi mungkin membutuhkan investasi pembelajaran Rust dan pengujian WebView.

Jangan Memilih Framework Hanya dari Angka RAM

Tauri memang memiliki keunggulan arsitektural untuk menghasilkan aplikasi yang lebih kecil dan ringan. Jika target produk adalah utility sederhana, aplikasi tray, password manager, launcher, pencatat, atau aplikasi yang selalu aktif di background, efisiensi tersebut bisa sangat berarti.

Electron masih merupakan pilihan rasional ketika produk membutuhkan ekosistem matang, integrasi Node.js, UI web kompleks, konsistensi rendering, dan kecepatan pengembangan. Banyak aplikasi besar memilih Electron bukan karena timnya mengabaikan RAM, melainkan karena manfaat produktivitas, kompatibilitas, dan kematangan platformnya sesuai dengan kebutuhan produk.

Berikut ringkasan perbandingannya:

AspekTauriElectron
Mesin antarmukaWebView milik sistem operasiChromium yang dibundel
Backend utamaRustJavaScript/TypeScript melalui Node.js
Konsumsi RAM dasarUmumnya lebih rendahUmumnya lebih tinggi
Ukuran distribusiBiasanya beberapa hingga belasan MB untuk aplikasi sederhanaBiasanya puluhan hingga lebih dari 100 MB, tergantung paket
Konsistensi renderingDapat berbeda antara WebView2 dan WebKitLebih konsisten karena memakai Chromium yang sama
StartupUmumnya lebih cepat untuk aplikasi sederhanaDapat lebih lambat karena runtime dan multiproses
EkosistemBerkembang, tetapi belum sematang ElectronSangat matang dan terhubung dengan npm
Akses nativeCommand Rust dan plugin dengan capabilityMain process, preload, IPC, dan native Node add-on
KeamananCapability dan permission granularAman jika isolation, sandbox, IPC, dan pembaruan dikonfigurasi dengan benar
Kurva pembelajaranLebih tinggi jika harus menulis RustLebih mudah untuk tim JavaScript/Node.js
Target resmiWindows, macOS, Linux, Android, dan iOSWindows, macOS, dan Linux
Biaya lisensi frameworkGratis dan open-sourceGratis dan open-source
Cocok untukUtility ringan, aplikasi tray, perangkat spesifikasi rendahProduk kompleks, tim JavaScript, pengembangan cepat

Jika tujuan utama proyek adalah membuat aplikasi desktop irit RAM, ringan, dan berukuran kecil, Tauri layak menjadi pilihan pertama untuk diuji melalui prototype. Namun, jika tim membutuhkan ekosistem paling matang, integrasi Node.js yang luas, dan waktu pengembangan sesingkat mungkin, Electron dapat memberikan nilai bisnis yang lebih besar.

Keputusan terbaik sebaiknya tidak dibuat hanya berdasarkan benchmark “Hello World”. Bangun proof of concept dengan fitur inti yang sama, gunakan build production, lalu ukur konsumsi RAM, waktu startup, ukuran installer, stabilitas UI, dan kecepatan pengembangan pada perangkat target. Framework terbaik bukan sekadar framework yang paling ringan, melainkan yang memberikan kompromi paling tepat antara performa, keamanan, pengalaman pengguna, dan kemampuan tim.

Facebook
Twitter
LinkedIn