
Tauri là gì? Tại sao nên chọn Tauri thay Electron?
Tauri là framework mã nguồn mở cho phép xây dựng ứng dụng desktop cross-platform bằng Rust kết hợp web technologies (HTML, CSS, JavaScript), tận dụng WebView hệ điều hành để giảm kích thước đáng kể. Thay vì đóng gói toàn bộ Chromium như Electron, Tauri sử dụng WebView có sẵn trên hệ điều hành, giúp ứng dụng nhẹ hơn gấp nhiều lần mà vẫn giữ được giao diện web hiện đại.

Với kích thước package chỉ khoảng 3-6MB (so với 150MB+ của Electron), Tauri đang trở thành lựa chọn hàng đầu cho developer muốn xây dựng desktop app hiệu năng cao. Framework này hỗ trợ Windows, macOS và Linux, đồng thời mới ra mắt hỗ trợ Tauri v2 với khả năng build mobile app trên iOS và Android.
So sánh Tauri và Electron
Electron đã thống trị thị trường desktop app web-based nhiều năm qua với các ứng dụng nổi tiếng như VS Code, Slack và Discord. Tuy nhiên, nó có nhược điểm lớn về tài nguyên:
| Tiêu chí | Tauri | Electron |
|---|---|---|
| Framework backend | Rust | Node.js |
| WebView | Hệ điều hành có sẵn | Bundled Chromium |
| Kích thước package | 3-6 MB | 150 MB+ |
| RAM sử dụng | Rất thấp | Cao (node_modules) |
| Bảo mật | Rust memory-safe, permission system | Node.js attack surface lớn |
| Mobile support | iOS, Android (v2) | Capacitor plugin |
Sự khác biệt lớn nhất nằm ở kiến trúc. Electron bundle toàn bộ Chromium + Node.js vào mỗi ứng dụng, tạo ra package cồng kềnh. Tauri sử dụng hệ thống permission-based tiên tiến — mỗi API call từ frontend phải được khai báo rõ ràng trong cấu hình, giúp kiểm soát bảo mật tốt hơn rất nhiều.

Cài đặt và bắt đầu với Tauri
Yêu cầu tiên quyết: Rust toolchain (rustup) và Node.js. Cài đặt Tauri CLI:
cargo install tauri-cli
Hoặc dùng npm:
npm install -g @tauri-apps/cli
Tạo project mới với template có sẵn:
npm create tauri-app@latest my-app
cd my-app
cargo tauri dev
Cấu trúc thư mục cơ bản:
src-tauri/— Code Rust backend (main.rs, tauri.conf.json)src/— Frontend web code (React, Vue, Svelte, hoặc vanilla)tauri.conf.json— Cấu hình chính: window size, permissions, build
Cấu trúc code Tauri
Backend Rust trong src-tauri/src/main.rs:
use tauri::Manager;
fn main() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![
greet,
read_file,
write_file
])
.run(tauri::generate_context!())
.expect("Lỗi khi chạy Tauri");
}
#[tauri::command]
fn greet(name: &str) -> String {
format!("Xin chào, {}!", name)
}
Frontend gọi command từ JavaScript:
import { invoke } from '@tauri-apps/api/core';
const greeting = await invoke('greet', { name: 'Developer' });
console.log(greeting); // "Xin chào, Developer!"
System Tray và Window Management
Tauri hỗ trợ đầy đủ system tray (icon trong taskbar), multi-window, và deep linking. Ví dụ tạo system tray:
use tauri::tray::{TrayIconBuilder, MouseButton, MouseButtonState};
use tauri::Manager;
fn main() {
tauri::Builder::default()
.setup(|app| {
let _tray = TrayIconBuilder::new()
.tooltip("My App")
.on_tray_icon_event(|tray, event| {
if let MouseButtonState::Released =
event.button_state()
{
let window = tray.app_handle().get_webview_window("main").unwrap();
window.show().unwrap();
}
})
.build(app)?;
Ok(())
})
.run(tauri::generate_context!())
.expect("Lỗi khi chạy Tauri");
}
Tauri v2: Mobile và Plugin System
Tauri v2 mang đến thay đổi lớn với plugin architecture cho phép mở rộng functionality:
- tauri-plugin-shell — Thực thi lệnh shell an toàn
- tauri-plugin-fs — Đọc/ghi file system với permission
- tauri-plugin-http — HTTP requests từ backend
- tauri-plugin-store — Lưu trữ local key-value
- tauri-plugin-notification — Hệ thống thông báo
Với mobile support, Tauri v2 cho phép viết một codebase web + Rust và deploy lên cả desktop lẫn mobile — tương tự React Native nhưng với hiệu năng native và bảo mật Rust.
Permission System bảo mật
Một trong những điểm mạnh nhất của Tauri là hệ thống permission được kiểm soát chặt chẽ. Trong tauri.conf.json, mỗi plugin phải được khai báo rõ ràng:
{
"app": {
"security": {
"permissions": [
"core:default",
"shell:allow-open",
"fs:default",
"fs:allow-read-text-file"
]
}
}
}
Frontend không thể tự truy cập file system hay thực thi lệnh shell nếu không được phép trong cấu hình — loại bỏ nhiều vector tấn công phổ biến.
Trường hợp sử dụng thực tế
Các dự án nổi tiếng đang dùng Tauri:
- Padloc — Password manager mã nguồn mở cross-platform
- Cockatoo — Desktop automation tool
- Norque — Workflow automation cho developers
- FlightRotor — Ứng dụng mô phỏng bay RC drone

Khi nào nên dùng Tauri?
Tauri phù hợp khi bạn cần:
- Ứng dụng desktop nhẹ, nhanh, tiêu tốn ít tài nguyên
- Bảo mật là yêu cầu bắt buộc (permission system của Tauri)
- Team có kinh nghiệm Rust hoặc muốn học Rust
- Cross-platform desktop + mobile từ một codebase
- Package size nhỏ gọn cho distribute
Nếu team chỉ quen Node.js và cần build nhanh prototype, Electron vẫn hợp lý. Nhưng cho production app dài hạn, Tauri cung cấp lợi thế lớn về performance, bảo mật và resource efficiency. Với sự hỗ trợ từ Tauri v2 và cộng đồng đang phát triển nhanh, đây là framework desktop đáng invest thời gian học hỏi.
