Build smaller, faster, and more secure desktop applications with a web frontend

Introduction

Tauri is a framework for building tiny, blazingly fast binaries for all major desktop platforms. Developers can integrate any front-end framework that compiles to HTML, JS and CSS for building their user interface. The backend of the application is a rust-sourced binary with an API that the front-end can interact with.

The user interface in Tauri apps currently leverages tao as a window handling library on macOS and Windows, and gtk on Linux via the Tauri-team incubated and maintained WRY, which creates a unified interface to the system webview (and other goodies like Menu and Taskbar), leveraging WebKit on macOS, WebView2 on Windows and WebKitGTK on Linux.

To learn more about the details of how all of these pieces fit together, please consult this ARCHITECTURE.md document.

Get Started

If you are interested in making a tauri app, please visit the documentation website. This README is directed towards those who are interested in contributing to the core library. But if you just want a quick overview about where tauri is at in its development, here's a quick burndown:

Platforms

  • Windows 7,8,10
  • Linux
  • macOS
  • iOS (in progress)
  • android (soon)

App Bundles

  • App Icons
  • Build on MacOS (.app, .dmg)
  • Build on Linux (.deb, AppImage)
  • Build on Windows (.exe, .msi)
  • Copy Buffer
  • Device Notifications (toast)
  • Self Updater
  • App Signing
  • Frameless Mode
  • Transparent Mode
  • Multiwindow Mode
  • Tray
  • deeplink RPC (in progress)
  • One-Time commands (coming soon)


Security Features

  • localhost-free (馃敟)
  • custom protocol for secure mode
  • Dynamic ahead of Time Compilation (dAoT) with functional tree-shaking
  • functional Address Space Layout Randomization
  • OTP salting of function names and messages at runtime
  • CSP Injection

Utilities

  • GH Action for creating binaries for all platforms
  • VS Code Extension
  • Tauri Core Plugins
  • Update core dependencies automatically from the command line
  • Rust-based CLI


Resources