Early access to our free productivity OS + bite-sized tech newsletter for everyone/learn
Docs

Understand the Don't Do It lexicon

ToolsPublished July 18, 2026

What Is Tauri?

Tauri is a framework for building desktop and mobile apps with a web interface, a Rust core, and the operating system's webview.

tauri
desktop-apps
rust
web-development
cross-platform

Tauri is a framework for building desktop and mobile applications with web technologies. Your interface can use HTML, CSS, JavaScript, React, Vue, Svelte, or another web frontend, while a Rust application handles windows, operating-system access, packaging, and native commands.

The defining choice is what Tauri does not ship: its own browser engine. It uses the webview already provided by the operating system. That can make a Tauri app smaller than an equivalent app that bundles a complete browser, but it also means the rendering engine differs by platform.

How does Tauri work?

A Tauri app has two important sides:

  1. The frontend runs inside the system webview and renders the interface.
  2. The Rust core performs privileged work such as reading approved files, opening windows, registering shortcuts, or talking to native APIs.

The two sides communicate through inter-process communication, usually shortened to IPC. The frontend does not automatically receive unrestricted access to the computer. Tauri 2 uses capabilities and permissions to define which commands each window or webview may call.

That boundary matters. A web button asking Rust to read one configuration file is much safer than handing the whole frontend a skeleton key and hoping nobody invites a raccoon with root access.

Does a Tauri app require Rust?

You need the Rust toolchain to build a Tauri app, and the native application core is written in Rust. You do not need to rewrite your interface in Rust.

A common project keeps most interface code in an existing web stack and adds small Rust commands only when the app needs capabilities the browser cannot provide. If the app is mostly forms, timers, local state, and API calls, the Rust portion may stay modest. Native integrations can make it grow.

Rust is therefore both a benefit and a cost: it provides a strongly typed native layer, but it adds another language, build toolchain, and debugging surface for a web-only team.

Why are Tauri apps often smaller than Electron apps?

Tauri relies on the operating system's installed webview instead of packaging Chromium with every application. Windows uses WebView2; other platforms use their corresponding system webview.

Reusing that component removes a large runtime from the application bundle. It does not guarantee that every Tauri app will be tiny or fast. Your frontend assets, plugins, native dependencies, data, and application design still count. Physics remains annoyingly involved.

The tradeoff is consistency. Electron ships a known Chromium version, while a Tauri app depends more on the webview available on each operating system. Test on every platform you plan to support, especially when using newer browser features or custom window behavior.

Is Tauri secure by default?

Tauri starts with a useful security boundary, not a security warranty.

Frontend code runs in the webview with limited access to system resources. Capabilities can grant particular windows access to particular Tauri or plugin commands, and scopes can narrow that access further. Rust code and enabled plugins remain privileged, so unsafe commands, broad permissions, vulnerable dependencies, or compromised frontend code can still cause damage.

Practical rules:

  • grant only the capabilities a window needs
  • validate every value crossing from the frontend into Rust
  • keep Rust, Tauri, plugins, and frontend dependencies current
  • use a restrictive Content Security Policy
  • treat remote web content as untrusted
  • test deep links, file paths, and shell commands as security boundaries

Shrugging is not a permission model, despite its adoption rate.

When should you choose Tauri?

Tauri is a strong candidate when:

  • you already have a web interface you want to bring to the desktop
  • download size and runtime overhead matter
  • you are comfortable maintaining a Rust toolchain
  • the app needs a controlled set of native features
  • you want one project that can target desktop and, where appropriate, mobile
  • your team can test system-webview differences across supported platforms

It is less attractive when your team wants to stay entirely in JavaScript, depends heavily on Node.js packages in the native layer, or needs identical Chromium rendering everywhere.

Tauri vs Electron: what is the practical difference?

Tauri uses the operating system webview and a Rust core. Electron bundles Chromium and Node.js and keeps most application code in the JavaScript ecosystem.

Question Tauri Electron
Rendering engine System webview Bundled Chromium
Native/backend layer Rust Node.js in the main process
Typical application bundle Usually smaller Usually larger because Chromium and Node.js are included
Rendering consistency Can vary by operating system Consistent Chromium target
Team fit Web developers willing to use Rust JavaScript/TypeScript teams
Native access Commands, plugins, capabilities, and permissions Main process, preload scripts, IPC, and Node.js APIs

Neither is the grown-up answer in every room. Choose the constraint you would rather maintain.

Read what Electron is and how it works for the other side of the comparison.

A practical Tauri example

Dontdoit's mmodoro desktop app uses Tauri for an always-on-top animated desktop sprite, desktop login callbacks, local session caching, and session controls backed by the web API. The same product also has a web interface, so sharing frontend concepts while adding a bounded native layer is a practical fit.

That does not make Tauri the default for every Dontdoit project. It is evidence of the narrower rule: Tauri works well when an existing web product needs real desktop behavior without bundling an entire browser runtime.

What should you learn next?

Start with the smallest vertical slice:

  1. Create one window with your preferred frontend.
  2. Add one typed Rust command.
  3. Grant only the permission that command needs.
  4. Build the installer on the operating system you intend to support.
  5. Test the installed application, not only the development server.

Packaging, code signing, permissions, updates, and operating-system quirks are part of desktop development. A working dev window is the opening scene, not the credits.