principletypescriptTip
Tauri Rust backend and web frontend architecture
Viewed 0 times
taurirustwebviewinvokearchitecturefrontend backend separation
taurirust
Problem
Understanding how Tauri separates concerns between the Rust backend (core logic, OS access) and the web frontend (UI), and how they communicate.
Solution
Tauri compiles a Rust binary that embeds a WebView (not Chromium). The frontend is served from dist/. Rust functions are exposed as Tauri commands invoked from JS via invoke(). State is managed in Rust.
Why
This separation gives native performance and security in Rust while allowing any web framework for UI. No Node.js runtime is shipped, leading to tiny bundle sizes.
Gotchas
- Tauri uses the OS WebView (WebKit on macOS/Linux, WebView2 on Windows) — CSS/JS compatibility varies
- Rust panics in commands crash the command handler; use Result<T, String> for error propagation
- The frontend cannot directly access the filesystem — only through declared Tauri commands
Code Snippets
Tauri command in Rust
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}Calling command from frontend
import { invoke } from '@tauri-apps/api/tauri';
const greeting = await invoke<string>('greet', { name: 'World' });Revisions (0)
No revisions yet.