Sebagian besar aplikasi desktop yang dibuat sepuluh tahun terakhir sebenarnya halaman web di dalam kotak. Electron membundel salinan Chromium dan Node.js di setiap aplikasi, itulah sebabnya aplikasi chat atau catatan bisa memakan ratusan megabyte memori saat sedang diam. Tim di balik editor kode Zed memilih jalan sebaliknya. Mereka menulis framework UI sendiri dengan Rust, yaitu GPUI, yang menggambar seluruh antarmuka di GPU seperti game engine. Zed mencapai versi 1.0 pada 29 April 2026 di macOS, Windows, dan Linux, dan GPUI kini juga dipakai di luar Zed, yang paling menonjol oleh platform trading Longbridge. Artikel ini menjelaskan cara kerja GPUI, kondisinya saat ini, dan untuk aplikasi desktop seperti apa framework ini layak dipertimbangkan.
Apa Itu GPUI
Deskripsi resminya singkat: framework UI untuk Rust yang cepat, hibrida immediate mode dan retained mode, serta diakselerasi GPU. Dalam praktiknya ada tiga hal. State aplikasi disimpan dalam objek berumur panjang yang dikelola framework, itulah bagian retained. Tampilan yang terlihat dideskripsikan ulang dari state tersebut di setiap frame, seperti framework immediate mode, sehingga tidak ada pohon widget terpisah yang harus terus disinkronkan. Lalu hasilnya diubah menjadi bentuk, teks, dan gambar yang digambar langsung oleh GPU, bukan oleh kontrol bawaan sistem operasi atau mesin browser.
GPUI memakai API grafis native di setiap platform. Di macOS ia merender lewat Metal. Di Windows, tim Zed awalnya mencoba renderer Vulkan dari Linux, mendapati renderer itu gagal di banyak mesin, lalu menulis backend DirectX 11, dengan DirectWrite untuk teks. Di Linux ia memakai renderer berbasis Vulkan dengan dukungan Wayland dan X11. Karena framework menggambar semuanya sendiri, tampilan dan perilaku aplikasi sama di ketiga sistem.
Konsep Inti
- App dan window: aplikasi menyalakan event loop GPUI, lalu membuka satu atau beberapa window, masing-masing dengan root view.
- Entity: state aplikasi yang dimiliki GPUI dan dibagikan lewat handle yang mirip pointer dengan reference counting. Entity dibaca dan diubah lewat context, sehingga GPUI tahu apa yang berubah dan apa yang perlu digambar ulang.
- View: entity yang mengimplementasikan trait Render. GPUI memanggil render di awal setiap frame, dan method itu mengembalikan pohon element.
- Element: blok penyusun antarmuka. Sebagian besar UI dibangun dari element div yang diberi style dengan API mirip Tailwind, seperti flex, gap, padding, background, dan ukuran teks. Untuk kasus khusus ada API element tingkat rendah dengan kendali penuh atas layout dan proses menggambar, yang dipakai Zed untuk list tervirtualisasi dan editor kodenya.
- Action: operasi bernama, seperti simpan atau pindah ke tab berikutnya, yang diikat ke shortcut keyboard lewat keymap. Ini membuat aplikasi yang banyak dipakai dengan keyboard jauh lebih mudah dibangun.
- Async executor: executor latar belakang dan latar depan yang terintegrasi dengan event loop platform, sehingga pekerjaan seperti membaca file atau memanggil jaringan berjalan di luar thread UI lalu mengembalikan hasilnya ke sana.
- Testing: macro gpui::test dan test context yang bisa menyimulasikan input, sehingga perilaku UI bisa diuji tanpa membuka window sungguhan.
Program minimalnya pendek. Aplikasi membuka sebuah window, membuat view dengan satu field berisi teks, lalu method render-nya mengembalikan div dengan layout flex, warna latar, ukuran, dan teks tersebut sebagai child. Siapa pun yang pernah memakai React dengan Tailwind akan mengenali bentuk kodenya, meskipun pengelolaan state mengikuti aturan ownership Rust, bukan hooks.
Kondisi Crate per November 2026
Bagian inilah yang sering dilewati di banyak pengantar, padahal penting untuk perencanaan. GPUI dikembangkan di dalam repository Zed, dan README-nya menyebut terus terang bahwa GPUI masih pre-1.0 dan akan sering ada breaking change antar-versi. Situs gpui.rs menambahkan bahwa untuk waktu dekat GPUI terikat dengan Zed, sehingga kontribusi harus lewat proyek Zed. Crate gpui di crates.io terakhir dipublikasikan sebagai versi 0.2.2 pada Oktober 2025, sementara pengembangannya terus berjalan di repository.
- Dependency git: arahkan Cargo ke repository Zed dan kunci di satu commit tertentu. Anda mendapat framework terbaru, tetapi upgrade sesuai jadwal Anda sendiri dan breaking change diperbaiki sendiri.
- GPUI Kit dari Longbridge: crate gpui-kit versi 0.9.0 yang dipublikasikan 2 November 2026 menggabungkan snapshot GPUI yang dikunci, gpui-base, gpui-component, dan aset default dalam satu dependency. Snapshot tersebut dipublikasikan di crates.io dengan nama gpui-pre oleh maintainer gpui-component.
gpui-component adalah alasan banyak tim bisa mempertimbangkan GPUI, karena GPUI sendiri hanya menyediakan primitif, bukan widget jadi. Proyek GPUI Kit mencantumkan lebih dari 75 komponen dan primitif yang terdokumentasi, tabel data dengan virtual scrolling untuk ratusan ribu baris, editor kode yang tetap stabil di 200.000 baris dengan highlighting Tree-sitter dan dukungan LSP, dock layout dengan panel yang bisa diseret dan diubah ukurannya, chart bawaan, rendering Markdown dan HTML, serta tema. Lisensinya Apache-2.0, dan sejak awal dipakai untuk aplikasi desktop Longbridge Pro.
Perbandingan dengan Pilihan Desktop Lain
| Framework | Cara menggambar UI | Kelebihan | Yang perlu diwaspadai |
|---|---|---|---|
| Electron | Chromium yang dibundel, UI dengan HTML, CSS, dan JavaScript | Ekosistem sangat besar, kode sama dengan versi web, mudah merekrut developer | Ukuran unduhan besar dan pemakaian memori tinggi, karena setiap aplikasi membawa browser sendiri |
| Tauri | WebView bawaan sistem, dengan backend Rust | Aplikasi kecil, skill web terpakai, tooling update dan packaging matang, mendukung mobile | Rendering sedikit berbeda antar-mesin WebView di tiap OS |
| GPUI | Renderer GPU sendiri: Metal, DirectX 11, Vulkan | Sangat cepat untuk data besar dan pemakaian keyboard intensif, tampilan konsisten di semua OS | Masih pre-1.0 dengan breaking change yang sering, dokumentasi tipis, seluruh UI harus ditulis dengan Rust |
| Slint | Renderer sendiri, UI ditulis dengan bahasa deklaratif .slint | Berjalan dari perangkat embedded sampai desktop, ada tooling visual | Ada beberapa pilihan lisensi; cek mana yang cocok untuk produk komersial |
| Iced | Renderer sendiri, arsitektur gaya Elm | Model state yang jelas, dipakai System76 untuk desktop COSMIC | Widget kompleks siap pakai lebih sedikit dibanding gpui-component |
| egui | Immediate mode, renderer sendiri | Sangat cepat untuk membuat tool internal, panel debug, dan visualisasi | Tampilan kurang halus untuk produk yang dipakai konsumen |
Untuk kebanyakan aplikasi desktop bisnis, pilihan yang realistis ada di antara Tauri dan GPUI. Tauri adalah pilihan default yang lebih aman kalau tim menguasai web development atau aplikasinya juga punya versi web. GPUI masuk akal ketika antarmukanya sendiri harus menangani data dalam jumlah besar dengan mulus, dan performa adalah bagian dari apa yang dibayar pengguna.
Kapan GPUI Cocok
- Terminal trading dan dashboard pasar yang memperbarui banyak angka setiap detik, persis seperti yang dilakukan Longbridge.
- Editor dan tool mirip IDE untuk kode, konfigurasi, query, atau dokumen terstruktur.
- Log viewer, konsol monitoring, dan database client yang harus menggulir ratusan ribu baris tanpa tersendat.
- Tool operasional yang dipakai seharian oleh power user yang lebih banyak bekerja dengan keyboard.
- Produk yang menjual rasa native yang cepat dan konsisten sebagai keunggulan dibanding pesaing berbasis Electron.
Kapan Kemungkinan Belum Tepat
- Aplikasi bisnis sederhana berbasis form. Aplikasi web atau Tauri lebih cepat selesai dengan pilihan developer yang jauh lebih banyak.
- Produk yang butuh kode yang sama di desktop, web, dan HP. GPUI dibuat untuk desktop; GPUI Kit melaporkan dukungan WebAssembly, tetapi mobile belum tercantum sebagai target yang didukung.
- Proyek dengan anggaran pemeliharaan kecil. API yang masih pre-1.0 berarti upgrade butuh kerja nyata, dan bertahan di snapshot lama bertahun-tahun punya risikonya sendiri.
- Aplikasi dengan syarat aksesibilitas yang ketat. Framework yang menggambar semuanya sendiri harus mengimplementasikan dukungan screen reader dan perilaku input teks native sendiri, jadi periksa kondisinya saat ini terhadap kebutuhan Anda sebelum berkomitmen.
- Tim tanpa pengalaman Rust. Setiap layar di aplikasi GPUI adalah kode Rust, jadi kurva belajarnya berlaku untuk seluruh frontend, bukan hanya satu layanan.
Memulai dengan Masuk Akal
- 1Install Rust stable terbaru, sesuai syarat README GPUI. Di macOS, install juga Xcode karena shader Metal membutuhkannya. Di Linux, aktifkan fitur wayland atau x11 dan install library development yang sesuai. Windows tidak butuh fitur tambahan.
- 2Mulai dari contoh di gpui.rs dan galeri gpui-component, bukan dari proyek kosong, dan baca source code Zed ketika dokumentasi sudah tidak cukup. Zed adalah codebase GPUI terbesar yang ada.
- 3Pilih satu jalur dependency, commit Zed yang dikunci atau GPUI Kit, lalu kunci di Cargo.lock. Lakukan upgrade dengan sengaja, misalnya sekali per kuartal, dengan waktu khusus untuk memperbaiki breaking change.
- 4Buat prototipe layar yang paling sulit lebih dulu, biasanya tabel besar atau editor khusus, lalu ukur di laptop dengan spesifikasi paling rendah yang dipakai pengguna.
- 5Siapkan CI yang membangun di macOS, Windows, dan Linux sejak awal. Backend rendering berbeda di tiap platform, dan masalah lebih murah ditemukan di awal.
- 6Rencanakan packaging, code signing, notarisasi macOS, dan auto-update sebagai pekerjaan tersendiri. GPUI adalah framework UI; installer dan update menjadi urusan Anda.
GPUI bukan cara termudah membuat aplikasi desktop. GPUI adalah cara membuat aplikasi desktop yang tetap cepat ketika datanya membesar.
Poin penting
- GPUI adalah framework UI Rust di balik Zed, yang mencapai 1.0 pada 29 April 2026 di macOS, Windows, dan Linux. GPUI menggambar seluruh antarmuka di GPU memakai Metal, DirectX 11, atau Vulkan.
- Modelnya menggabungkan state yang disimpan di entity dengan view yang dirender ulang setiap frame, diberi style lewat API mirip Tailwind, ditambah action untuk shortcut keyboard dan async executor bawaan.
- GPUI masih pre-1.0 dengan breaking change yang sering; crate gpui di crates.io masih 0.2.2 dari Oktober 2025, jadi tim mengunci commit Zed atau memakai GPUI Kit 0.9.0 dengan snapshot yang sudah dikunci.
- gpui-component menambahkan widget yang dibutuhkan kebanyakan aplikasi, termasuk tabel tervirtualisasi, editor kode, dock layout, chart, dan tema, dengan lisensi Apache-2.0.
- Pilih GPUI untuk tool profesional yang berat di data dan banyak dipakai lewat keyboard, di mana performa adalah bagian dari produk; pilih Tauri untuk kebanyakan aplikasi desktop bisnis lainnya.
- Buat prototipe layar tersulit lebih dulu, build di tiga platform lewat CI, dan rencanakan packaging, signing, serta auto-update secara terpisah.


