Crate tauri

source ·
Expand description

Tauri is a framework for building tiny, blazing 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.

Cargo features

The following are a list of Cargo features that can be enabled or disabled:

  • wry (enabled by default): Enables the wry runtime. Only disable it if you want a custom runtime.
  • dox: Internal feature to generate Rust documentation without linking on Linux.
  • objc-exception: Wrap each msg_send! in a @try/@catch and panics if an exception is caught, preventing Objective-C from unwinding into Rust.
  • linux-protocol-headers: Enables headers support for custom protocol requests on Linux. Requires webkit2gtk v2.36 or above.
  • isolation: Enables the isolation pattern. Enabled by default if the tauri > pattern > use config option is set to isolation on the tauri.conf.json file.
  • custom-protocol: Feature managed by the Tauri CLI. When enabled, Tauri assumes a production environment instead of a development one.
  • updater: Enables the application auto updater. Enabled by default if the updater config is defined on the tauri.conf.json file.
  • devtools: Enables the developer tools (Web inspector) and Window::open_devtools. Enabled by default on debug builds. On macOS it uses private APIs, so you can’t enable it if your app will be published to the App Store.
  • shell-open-api: Enables the api::shell module.
  • http-api: Enables the api::http module.
  • http-multipart: Adds support to multipart/form-data requests.
  • reqwest-client: Uses reqwest as HTTP client on the http APIs. Improves performance, but increases the bundle size.
  • native-tls-vendored: Compile and statically link to a vendored copy of OpenSSL (applies to the default HTTP client).
  • reqwest-native-tls-vendored: Compile and statically link to a vendored copy of OpenSSL (applies to the reqwest HTTP client).
  • process-command-api: Enables the api::process::Command APIs.
  • global-shortcut: Enables the global shortcut APIs.
  • clipboard: Enables the clipboard APIs.
  • process-relaunch-dangerous-allow-symlink-macos: Allows the api::process::current_binary function to allow symlinks on macOS (this is dangerous, see the Security section in the documentation website).
  • dialog: Enables the api::dialog module.
  • notification: Enables the api::notification module.
  • fs-extract-api: Enabled the tauri::api::file::Extract API.
  • cli: Enables usage of clap for CLI argument parsing. Enabled by default if the cli config is defined on the tauri.conf.json file.
  • system-tray: Enables application system tray API. Enabled by default if the systemTray config is defined on the tauri.conf.json file.
  • macos-private-api: Enables features only available in macOS’s private APIs, currently the transparent window functionality and the fullScreenEnabled preference setting to true. Enabled by default if the tauri > macosPrivateApi config flag is set to true on the tauri.conf.json file.
  • windows7-compat: Enables compatibility with Windows 7 for the notification API.
  • window-data-url: Enables usage of data URLs on the webview.
  • compression *(enabled by default): Enables asset compression. You should only disable this if you want faster compile times in release builds - it produces larger binaries.
  • config-json5: Adds support to JSON5 format for tauri.conf.json.
  • config-toml: Adds support to TOML format for the configuration Tauri.toml.
  • icon-ico: Adds support to set .ico window icons. Enables Icon::File and Icon::Raw variants.
  • icon-png: Adds support to set .png window icons. Enables Icon::File and Icon::Raw variants.

Cargo allowlist features

The following are a list of Cargo features that enables commands for Tauri’s API package. These features are automatically enabled by the Tauri CLI based on the allowlist configuration under tauri.conf.json.

  • api-all: Enables all API endpoints.

Clipboard allowlist

Dialog allowlist

Filesystem allowlist

Global shortcut allowlist

HTTP allowlist

Notification allowlist

OS allowlist

Path allowlist

Process allowlist

Protocol allowlist

  • protocol-all: Enables all Protocol APIs.
  • protocol-asset: Enables the asset custom protocol.

Shell allowlist

Window allowlist

App allowlist


pub use tauri_utils as utils;
pub use self::window::Monitor;
pub use self::window::Window;
pub use self::window::WindowBuilder;
pub use scope::*;


The Tauri API interface.
The singleton async runtime used by Tauri and exposed to users.
The Tauri custom commands types and traits.
The Tauri plugin extension to expand Tauri functionality.
The allowlist scopes.
The Tauri updater.
The Tauri window types and functions.


Reads the config file at compile time and generates a Context based on its content.
Accepts a list of commands functions. Creates a handler that allows commands to be called from JS with invoke().
Include a Context that was generated by tauri-build inside your build script.


Application metadata for the MenuItem::About action.
The instance of the currently running application.
A handle to the currently running application.
A resolved asset.
The asset resolver is a helper to access the tauri_utils::assets::Assets interface.
Builds a Tauri application.
Api exposed on the CloseRequested event.
The Tauri configuration object. It is read from a file where you can define your frontend assets, configure the bundler, enable the app updater, define a system tray, enable APIs via the allowlist and more.
User supplied data required inside of a Tauri application.
A custom menu item.
Information about environment variables.
An event that was triggered.
Represents an event handler.
A window event that was triggered on the specified window.
The message and resolver given to a custom command.
Error response from an InvokeMessage.
An invoke message.
The payload used on the IPC invoke.
Resolver of a invoke message.
A position represented in logical pixels.
A size represented in logical pixels.
A window menu.
The window menu event.
tauri::App package information.
The payload for the OnPageLoad hook.
The path resolver is a helper for the application-specific crate::api::path APIs.
A position represented in physical pixels.
A size represented in physical pixels.
Metadata for a runtime event loop iteration on run_iteration.
A guard for a state value.
The Tauri state manager.
Represents a System Tray instance.
A handle to a system tray. Allows updating the context menu items.
A system tray menu.
The attributes used to create an webview.
A menu event that was triggered on a window.


Describes the appearance of the mouse cursor.
The Tauri error enum. Runtime errors that can happen inside a Tauri application.
The user event type.
The file drop event payload.
A icon definition.
Response from a InvokeMessage passed to the InvokeResolver.
An entry on the system tray menu.
A menu item, bound to a pre-defined action or Custom emit an event. Note that status bar only supports Custom menu item variants. And on the menu bar, some platforms might not support some of the variants. Unsupported variant will be no-op on such platform.
An application pattern.
A position that’s either physical or logical.
An application event, triggered from the event loop.
A size that’s either physical or logical.
System tray event.
System tray menu item.
System theme.
Updater events.
Type of user attention requested on a window.
An event from a window.
An URL to open on a Tauri webview window.


Represents a container of file assets that are retrievable during runtime.
Clipboard manager.
A global shortcut manager.
Manages a running application.
The webview runtime interface. A wrapper around runtime::Runtime with the proper user event type associated.

Type Definitions

A closure that is run every time Tauri receives a message it doesn’t explicitly handle.
A closure that is responsible for respond a JS message.
A closure that is run once every time a window is created and loaded.
Result<T, ::tauri::Error>
A closure that is run when the Tauri application is setting up.
A task to run on the main thread.
A Tauri Runtime wrapper around wry.

Attribute Macros

Mark a function as a command handler. It creates a wrapper function with the necessary glue code.