Decision Guide

Pick Tauri when the product is desktop-first, the UI can be a static web app, and the native authority surface can stay small.

Default Recommendation

For lab projects, choose Tauri 2 for local-first desktop tools and AI/native utilities. Do not choose it as the first mobile stack unless desktop is already the primary product and mobile is a constrained companion.

Stack Comparison

OptionChoose it whenAvoid it when
Tauri 2You want small desktop bundles, web UI velocity, Rust commands, plugins, and native sidecarsMobile-first native APIs, rendering uniformity, or broad shell/filesystem authority dominate
ElectronYou need one bundled Chromium engine, mature desktop ecosystem, and predictable renderingBundle size, memory, or Chromium patch responsibility are unacceptable
Native desktopPlatform-native UX and OS APIs matter more than shared UIYou need one cross-platform UI codebase quickly
PWAWeb reach, installability, and no desktop installer are enoughYou need native filesystem/process/tray/integration beyond browser APIs
React Native or ExpoMobile-first Android/iOS with one JavaScript UI is the goalDesktop native integration is the first product surface
FlutterYou want a shared custom-rendered UI across mobile, desktop, and webYou need native webview semantics or minimal desktop shell size
Android Kotlin ComposeAndroid is the main product and Play policy/native behavior matterDesktop is the main product
Windows App SDKWindows-first desktop and deep Windows APIs mattermacOS/Linux support is required in v1

Strong Tauri Shapes

App shapeWhy Tauri fits
Local-first desktop utilityRust commands own files, SQLite, exports, backups, and OS dialogs
AI model managerRust core can supervise local sidecars and keep tokens out of the renderer
Internal operator consoleVite UI ships fast, native shell stays small, installer can be internal-only
Cross-platform desktop companionSame UI plus platform-specific config and capabilities

Weak Tauri Shapes

App shapeBetter default
Mobile-first app with background work, deep permissions, and store complexityAndroid Kotlin Compose, SwiftUI, Expo, or Flutter
Pixel-perfect cross-platform desktop app with heavy canvas/rendering needsElectron or Flutter
Web admin tool with no native authorityPWA or normal web app
App that must execute arbitrary user commandsRe-scope the product; broad shell authority is a security design problem

Decision Checklist

Answer these before choosing Tauri:

Primary surface: desktop, mobile, or web?
Native authority: which exact OS operations are needed?
Frontend output: can the UI build to static assets?
Security boundary: which commands/plugins/scopes does each window need?
Sidecars: can every binary, argument, port, and cleanup path be justified?
Release: which target OS can produce and smoke-test the artifact?
Mobile: which plugins and permissions are verified on Android/iOS?

If any answer is unknown, Tauri may still be right, but the next step is research or a prototype, not app implementation.

Gotcha: Tauri’s smaller app size comes from using the OS webview. That is a tradeoff. You gain smaller bundles and OS/runtime webview patching, but you must test WebView2, WKWebView, WebKitGTK, and Android WebView behavior separately.