Tauri: Rýchla desktopová appka za zlomok ceny Electronu (Časť 1)
Tauri: Rýchly kôň menom Rust
Desktopové aplikácie sú späť. Nie preto, že by web nestačil, ale preto, že niektoré veci jednoducho fungujú lepšie lokálne — offline prístup, prístup k súborovému systému, systémové notifikácie, a hlavne: súkromie dát.
Ak ste niekedy skúšali Electron, viete, o čom hovorím. Jednoduchý TODO list, ktorý zaberá 200 MB a žerie 500 MB RAM, pretože v pozadí beží celý Chromium. Tauri to robí inak.
Prečo Tauri a nie Electron?
| Metrika | Electron | Tauri |
|---|---|---|
| Veľkosť "Hello World" | ~200 MB | ~3-5 MB |
| RAM usage (idle) | ~150-300 MB | ~20-50 MB |
| Startup time | 2-5s | <1s |
| Rendering engine | Bundled Chromium | System WebView |
| Backend language | Node.js | Rust |
| Bezpečnostný model | Slabší | Silný (Rust + permissions) |
Ako Tauri funguje?
┌─────────────────────────────────────────┐
│ Tauri Application │
│ │
│ ┌──────────────────────────────────┐ │
│ │ Frontend (WebView) │ │
│ │ React / Vue / Svelte / HTML │ │
│ │ Bežné web technológie │ │
│ └──────────────┬───────────────────┘ │
│ │ IPC Bridge │
│ ┌──────────────┴───────────────────┐ │
│ │ Backend (Rust) │ │
│ │ Systémové API, súbory, shell │ │
│ │ Rýchle operácie, bezpečnosť │ │
│ └──────────────────────────────────┘ │
│ │
│ System WebView (WRY) │
│ • Windows: WebView2 (Edge) │
│ • macOS: WKWebView (Safari) │
│ • Linux: WebKitGTK │
└─────────────────────────────────────────┘Tauri nebalí vlastný prehliadač. Používa systémový WebView, ktorý je na každom OS zadarmo. Frontend píšete v čomkoľvek webovom (React, Vue, Svelte). Backend je v Ruste — rýchly, bezpečný, s minimálnou pamäťovou stopou.
Rust: Rýchly kôň
Rust nie je v Tauri len pre parádu. Je tam preto, lebo:
// src-tauri/src/lib.rs
// Tauri command — volateľný z frontendu
#[tauri::command]
fn process_large_file(path: String) -> Result<FileStats, String> {
let content = std::fs::read_to_string(&path)
.map_err(|e| e.to_string())?;
// Toto beží natívne, nie v JS engine
let stats = FileStats {
lines: content.lines().count(),
words: content.split_whitespace().count(),
chars: content.chars().count(),
size_bytes: content.len(),
};
Ok(stats)
}
// Frontend volá tento command cez IPC
// invoke('process_large_file', { path: '/data/huge.csv' })Rust vám dáva:
- ✅ Prístup k súborovému systému bez Node.js overhead
- ✅ Paralelné spracovanie cez tokio/rayon
- ✅ Memory safety bez garbage collectora
- ✅ Natívny výkon pre CPU-intenzívne operácie
Frontend: Klasický web
// src/App.tsx (React príklad)
import { invoke } from '@tauri-apps/api/core';
function App() {
const [stats, setStats] = useState<FileStats | null>(null);
const analyzeFile = async () => {
// Volanie Rust backendu cez Tauri IPC
const result = await invoke<FileStats>('process_large_file', {
path: selectedFile,
});
setStats(result);
};
return (
<div>
<button onClick={analyzeFile}>Analyzuj súbor</button>
{stats && (
<div>
<p>Riadkov: {stats.lines}</p>
<p>Slov: {stats.words}</p>
</div>
)}
</div>
);
}Nič nové. Bežný React, bežný TypeScript. Akýkoľvek web developer sa v tom okamžite zorientuje.
Kedy (ne)použiť Tauri
Použite Tauri keď:
- ✅ Chcete natívnu desktopovú appku s webovým UI
- ✅ Veľkosť a výkon sú dôležité
- ✅ Potrebujete prístup k súborovému systému / OS API
- ✅ Budujete privacy-first aplikáciu (dáta zostávajú lokálne)
Nepoužívajte Tauri keď:
- ❌ Váš tím neovláda Rust (learning curve je strmá)
- ❌ Potrebujete 100% rovnaký rendering na všetkých platformách (WebView sa líši)
- ❌ Vaša appka je v podstate webová stránka (použite PWA)
V ďalšej časti sa pozrieme na najzaujímavejší plot twist — ako do Tauri appky dostať Python s LangGraphom, aby ste mali rýchly Rust motor aj inteligentný AI mozog v jednom balíku.