Reference: reference documentation for the JavaScript API, configuration schema, command line interface, and the permission system (ACL)
# Capability
A grouping and boundary mechanism developers can use to isolate access to the IPC layer. It controls application windows’ and webviews’ fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all. This can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities. ### Example
```json
{
"identifier": "main-user-files-write",
"description": "This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.",
"windows": [
"main"
],
"permissions": [
"core:default",
"dialog:open",
{
"identifier": "fs:allow-write-text-file",
"allow": [{ "path": "$HOME/test.txt" }]
},
],
"platforms": ["macOS","windows"]
}
```
**Object Properties**: * description * identifier (required) * local * permissions (required) * platforms * remote * webviews * windows ### description `string` Description of what the capability is intended to allow on associated windows. It should contain a description of what the grouped permissions should allow. #### Example This capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user. ### identifier `string` Identifier of the capability. #### Example `main-user-files-write` ### local `boolean` Whether this capability is enabled for local app URLs or not. Defaults to `true`. **Default**: `true` ### permissions [`PermissionEntry`](#permissionentry)\[] each item must be unique List of permissions attached to this capability. Must include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required. #### Example
```json
[
"core:default",
"shell:allow-open",
"dialog:open",
{
"identifier": "fs:allow-write-text-file",
"allow": [{ "path": "$HOME/test.txt" }]
}
]
```
### platforms [`Target`](#target)\[] | `null` Limit which target platforms this capability applies to. By default all platforms are targeted. #### Example `["macOS","windows"]` ### remote [`CapabilityRemote`](#capabilityremote) | `null` Configure remote URLs that can use the capability permissions. This setting is optional and defaults to not being set, as our default use case is that the content is served from our local application. Caution Make sure you understand the security implications of providing remote sources with local system access. #### Example
```json
{
"urls": ["https://*.mydomain.dev"]
}
```
### webviews `string`\[] List of webviews that are affected by this capability. Can be a glob pattern. The capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview’s window label matches a pattern in \[`Self::windows`]. #### Example `["sub-webview-one", "sub-webview-two"]` ### windows `string`\[] List of windows that are affected by this capability. Can be a glob pattern. If a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of \[`Self::webviews`]. On multiwebview windows, prefer specifying \[`Self::webviews`] and omitting \[`Self::windows`] for a fine grained access control. #### Example `["main"]` ## Definitions ### CapabilityRemote Configuration for remote URLs that are associated with the capability. **Object Properties**: * urls (required) ##### urls `string`\[] Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/). ###### Examples * “https\://\*.mydomain.dev”: allows subdomains of mydomain.dev * “\*”: allows any subpath of mydomain.dev/api ### Identifier `string` ### Number **Any of the following**: * `integer` formatted as `int64` Represents an \[`i64`]. * `number` formatted as `double` Represents a \[`f64`]. A valid ACL number. ### PermissionEntry **Any of the following**: * [`Identifier`](#identifier) Reference a permission or permission set by identifier. * Reference a permission or permission set by identifier and extends its scope. **Object Properties**: - allow - deny - identifier (required) ##### allow [`Value`](#value)\[] | `null` Data that defines what is allowed by the scope. ##### deny [`Value`](#value)\[] | `null` Data that defines what is denied by the scope. This should be prioritized by validation logic. ##### identifier [`Identifier`](#identifier) Identifier of the permission or permission set. An entry for a permission value in a \[`Capability`] can be either a raw permission \[`Identifier`] or an object that references a permission and extends its scope. ### Target **One of the following**: * `"macOS"` MacOS. * `"windows"` Windows. * `"linux"` Linux. * `"android"` Android. * `"iOS"` iOS. Platform target. ### Value **Any of the following**: * `null` Represents a null JSON value. * `boolean` Represents a \[`bool`]. * [`Number`](#number) Represents a valid ACL \[`Number`]. * `string` Represents a \[`String`]. * [`Value`](#value)\[] Represents a list of other \[`Value`]s. * Represents a map of \[`String`] keys to \[`Value`]s. **Allows additional properties**: [`Value`](#value) All supported ACL values.
# Core Permissions
A list of all permissions that can be used with the core of the Tauri framework. If you are looking for permissions to specific Tauri plugins, please refer to the [Plugins section](/plugin/) of the documentation. ## Default Permissions The `core:default` permission in Tauri automatically adds: * `core:app:default` * `core:event:default` * `core:image:default` * `core:menu:default` * `core:path:default` * `core:resources:default` * `core:tray:default` * `core:webview:default` * `core:window:default` ## App ### Default Permission The default permission, `core:app:default`, includes the following: * `allow-version` * `allow-name` * `allow-tauri-version` * `allow-identifier` * `allow-bundle-type` * `allow-register-listener` * `allow-remove-listener` * `allow-supports-multiple-windows` ### Permission Table | Identifier | Description | | --------------------------------------------- | ------------------------------------------------------------------------------------ | | `core:app:allow-app-hide` | Enables the `app_hide` command without any pre-configured scope. | | `core:app:deny-app-hide` | Denies the `app_hide` command without any pre-configured scope. | | `core:app:allow-app-show` | Enables the `app_show` command without any pre-configured scope. | | `core:app:deny-app-show` | Denies the `app_show` command without any pre-configured scope. | | `core:app:allow-bundle-type` | Enables the `bundle_type` command without any pre-configured scope. | | `core:app:deny-bundle-type` | Denies the `bundle_type` command without any pre-configured scope. | | `core:app:allow-default-window-icon` | Enables the `default_window_icon` command without any pre-configured scope. | | `core:app:deny-default-window-icon` | Denies the `default_window_icon` command without any pre-configured scope. | | `core:app:allow-fetch-data-store-identifiers` | Enables the `fetch_data_store_identifiers` command without any pre-configured scope. | | `core:app:deny-fetch-data-store-identifiers` | Denies the `fetch_data_store_identifiers` command without any pre-configured scope. | | `core:app:allow-identifier` | Enables the `identifier` command without any pre-configured scope. | | `core:app:deny-identifier` | Denies the `identifier` command without any pre-configured scope. | | `core:app:allow-name` | Enables the `name` command without any pre-configured scope. | | `core:app:deny-name` | Denies the `name` command without any pre-configured scope. | | `core:app:allow-register-listener` | Enables the `register_listener` command without any pre-configured scope. | | `core:app:deny-register-listener` | Denies the `register_listener` command without any pre-configured scope. | | `core:app:allow-remove-data-store` | Enables the `remove_data_store` command without any pre-configured scope. | | `core:app:deny-remove-data-store` | Denies the `remove_data_store` command without any pre-configured scope. | | `core:app:allow-remove-listener` | Enables the `remove_listener` command without any pre-configured scope. | | `core:app:deny-remove-listener` | Denies the `remove_listener` command without any pre-configured scope. | | `core:app:allow-set-app-theme` | Enables the `set_app_theme` command without any pre-configured scope. | | `core:app:deny-set-app-theme` | Denies the `set_app_theme` command without any pre-configured scope. | | `core:app:allow-set-dock-visibility` | Enables the `set_dock_visibility` command without any pre-configured scope. | | `core:app:deny-set-dock-visibility` | Denies the `set_dock_visibility` command without any pre-configured scope. | | `core:app:allow-supports-multiple-windows` | Enables the `supports_multiple_windows` command without any pre-configured scope. | | `core:app:deny-supports-multiple-windows` | Denies the `supports_multiple_windows` command without any pre-configured scope. | | `core:app:allow-tauri-version` | Enables the `tauri_version` command without any pre-configured scope. | | `core:app:deny-tauri-version` | Denies the `tauri_version` command without any pre-configured scope. | | `core:app:allow-version` | Enables the `version` command without any pre-configured scope. | | `core:app:deny-version` | Denies the `version` command without any pre-configured scope. | ## Event ### Default Permission The default permission, `core:event:default`, includes the following: * `allow-listen` * `allow-unlisten` * `allow-emit` * `allow-emit-to` ### Permission Table | Identifier | Description | | --------------------------- | ---------------------------------------------------------------- | | `core:event:allow-emit` | Enables the `emit` command without any pre-configured scope. | | `core:event:deny-emit` | Denies the `emit` command without any pre-configured scope. | | `core:event:allow-emit-to` | Enables the `emit_to` command without any pre-configured scope. | | `core:event:deny-emit-to` | Denies the `emit_to` command without any pre-configured scope. | | `core:event:allow-listen` | Enables the `listen` command without any pre-configured scope. | | `core:event:deny-listen` | Denies the `listen` command without any pre-configured scope. | | `core:event:allow-unlisten` | Enables the `unlisten` command without any pre-configured scope. | | `core:event:deny-unlisten` | Denies the `unlisten` command without any pre-configured scope. | ## Image ### Default Permission The default permission, `core:image:default`, includes the following: * `allow-new` * `allow-from-bytes` * `allow-from-path` * `allow-rgba` * `allow-size` ### Permission Table | Identifier | Description | | ----------------------------- | ------------------------------------------------------------------ | | `core:image:allow-from-bytes` | Enables the `from_bytes` command without any pre-configured scope. | | `core:image:deny-from-bytes` | Denies the `from_bytes` command without any pre-configured scope. | | `core:image:allow-from-path` | Enables the `from_path` command without any pre-configured scope. | | `core:image:deny-from-path` | Denies the `from_path` command without any pre-configured scope. | | `core:image:allow-new` | Enables the `new` command without any pre-configured scope. | | `core:image:deny-new` | Denies the `new` command without any pre-configured scope. | | `core:image:allow-rgba` | Enables the `rgba` command without any pre-configured scope. | | `core:image:deny-rgba` | Denies the `rgba` command without any pre-configured scope. | | `core:image:allow-size` | Enables the `size` command without any pre-configured scope. | | `core:image:deny-size` | Denies the `size` command without any pre-configured scope. | ## Menu ### Default Permission The default permission, `core:menu:default`, includes the following: * `allow-new` * `allow-append` * `allow-prepend` * `allow-insert` * `allow-remove` * `allow-remove-at` * `allow-items` * `allow-get` * `allow-popup` * `allow-create-default` * `allow-set-as-app-menu` * `allow-set-as-window-menu` * `allow-text` * `allow-set-text` * `allow-is-enabled` * `allow-set-enabled` * `allow-set-accelerator` * `allow-set-as-windows-menu-for-nsapp` * `allow-set-as-help-menu-for-nsapp` * `allow-is-checked` * `allow-set-checked` * `allow-set-icon` ### Permission Table | Identifier | Description | | ----------------------------------------------- | ------------------------------------------------------------------------------------- | | `core:menu:allow-append` | Enables the `append` command without any pre-configured scope. | | `core:menu:deny-append` | Denies the `append` command without any pre-configured scope. | | `core:menu:allow-create-default` | Enables the `create_default` command without any pre-configured scope. | | `core:menu:deny-create-default` | Denies the `create_default` command without any pre-configured scope. | | `core:menu:allow-get` | Enables the `get` command without any pre-configured scope. | | `core:menu:deny-get` | Denies the `get` command without any pre-configured scope. | | `core:menu:allow-insert` | Enables the `insert` command without any pre-configured scope. | | `core:menu:deny-insert` | Denies the `insert` command without any pre-configured scope. | | `core:menu:allow-is-checked` | Enables the `is_checked` command without any pre-configured scope. | | `core:menu:deny-is-checked` | Denies the `is_checked` command without any pre-configured scope. | | `core:menu:allow-is-enabled` | Enables the `is_enabled` command without any pre-configured scope. | | `core:menu:deny-is-enabled` | Denies the `is_enabled` command without any pre-configured scope. | | `core:menu:allow-items` | Enables the `items` command without any pre-configured scope. | | `core:menu:deny-items` | Denies the `items` command without any pre-configured scope. | | `core:menu:allow-new` | Enables the `new` command without any pre-configured scope. | | `core:menu:deny-new` | Denies the `new` command without any pre-configured scope. | | `core:menu:allow-popup` | Enables the `popup` command without any pre-configured scope. | | `core:menu:deny-popup` | Denies the `popup` command without any pre-configured scope. | | `core:menu:allow-prepend` | Enables the `prepend` command without any pre-configured scope. | | `core:menu:deny-prepend` | Denies the `prepend` command without any pre-configured scope. | | `core:menu:allow-remove` | Enables the `remove` command without any pre-configured scope. | | `core:menu:deny-remove` | Denies the `remove` command without any pre-configured scope. | | `core:menu:allow-remove-at` | Enables the `remove_at` command without any pre-configured scope. | | `core:menu:deny-remove-at` | Denies the `remove_at` command without any pre-configured scope. | | `core:menu:allow-set-accelerator` | Enables the `set_accelerator` command without any pre-configured scope. | | `core:menu:deny-set-accelerator` | Denies the `set_accelerator` command without any pre-configured scope. | | `core:menu:allow-set-as-app-menu` | Enables the `set_as_app_menu` command without any pre-configured scope. | | `core:menu:deny-set-as-app-menu` | Denies the `set_as_app_menu` command without any pre-configured scope. | | `core:menu:allow-set-as-help-menu-for-nsapp` | Enables the `set_as_help_menu_for_nsapp` command without any pre-configured scope. | | `core:menu:deny-set-as-help-menu-for-nsapp` | Denies the `set_as_help_menu_for_nsapp` command without any pre-configured scope. | | `core:menu:allow-set-as-window-menu` | Enables the `set_as_window_menu` command without any pre-configured scope. | | `core:menu:deny-set-as-window-menu` | Denies the `set_as_window_menu` command without any pre-configured scope. | | `core:menu:allow-set-as-windows-menu-for-nsapp` | Enables the `set_as_windows_menu_for_nsapp` command without any pre-configured scope. | | `core:menu:deny-set-as-windows-menu-for-nsapp` | Denies the `set_as_windows_menu_for_nsapp` command without any pre-configured scope. | | `core:menu:allow-set-checked` | Enables the `set_checked` command without any pre-configured scope. | | `core:menu:deny-set-checked` | Denies the `set_checked` command without any pre-configured scope. | | `core:menu:allow-set-enabled` | Enables the `set_enabled` command without any pre-configured scope. | | `core:menu:deny-set-enabled` | Denies the `set_enabled` command without any pre-configured scope. | | `core:menu:allow-set-icon` | Enables the `set_icon` command without any pre-configured scope. | | `core:menu:deny-set-icon` | Denies the `set_icon` command without any pre-configured scope. | | `core:menu:allow-set-text` | Enables the `set_text` command without any pre-configured scope. | | `core:menu:deny-set-text` | Denies the `set_text` command without any pre-configured scope. | | `core:menu:allow-text` | Enables the `text` command without any pre-configured scope. | | `core:menu:deny-text` | Denies the `text` command without any pre-configured scope. | ## Path ### Default Permission The default permission, `core:path:default`, includes the following: * `allow-resolve-directory` * `allow-resolve` * `allow-normalize` * `allow-join` * `allow-dirname` * `allow-extname` * `allow-basename` * `allow-is-absolute` ### Permission Table | Identifier | Description | | ----------------------------------- | ------------------------------------------------------------------------- | | `core:path:allow-basename` | Enables the `basename` command without any pre-configured scope. | | `core:path:deny-basename` | Denies the `basename` command without any pre-configured scope. | | `core:path:allow-dirname` | Enables the `dirname` command without any pre-configured scope. | | `core:path:deny-dirname` | Denies the `dirname` command without any pre-configured scope. | | `core:path:allow-extname` | Enables the `extname` command without any pre-configured scope. | | `core:path:deny-extname` | Denies the `extname` command without any pre-configured scope. | | `core:path:allow-is-absolute` | Enables the `is_absolute` command without any pre-configured scope. | | `core:path:deny-is-absolute` | Denies the `is_absolute` command without any pre-configured scope. | | `core:path:allow-join` | Enables the `join` command without any pre-configured scope. | | `core:path:deny-join` | Denies the `join` command without any pre-configured scope. | | `core:path:allow-normalize` | Enables the `normalize` command without any pre-configured scope. | | `core:path:deny-normalize` | Denies the `normalize` command without any pre-configured scope. | | `core:path:allow-resolve` | Enables the `resolve` command without any pre-configured scope. | | `core:path:deny-resolve` | Denies the `resolve` command without any pre-configured scope. | | `core:path:allow-resolve-directory` | Enables the `resolve_directory` command without any pre-configured scope. | | `core:path:deny-resolve-directory` | Denies the `resolve_directory` command without any pre-configured scope. | ## Resources ### Default Permission The default permission, `core:resources:default`, includes the following: * `allow-close` ### Permission Table | Identifier | Description | | ---------------------------- | ------------------------------------------------------------- | | `core:resources:allow-close` | Enables the `close` command without any pre-configured scope. | | `core:resources:deny-close` | Denies the `close` command without any pre-configured scope. | ## Tray ### Default Permission The default permission, `core:tray:default`, includes the following: * `allow-new` * `allow-get-by-id` * `allow-remove-by-id` * `allow-set-icon` * `allow-set-menu` * `allow-set-tooltip` * `allow-set-title` * `allow-set-visible` * `allow-set-temp-dir-path` * `allow-set-icon-as-template` * `allow-set-icon-with-as-template` * `allow-set-show-menu-on-left-click` ### Permission Table | Identifier | Description | | --------------------------------------------- | ----------------------------------------------------------------------------------- | | `core:tray:allow-get-by-id` | Enables the `get_by_id` command without any pre-configured scope. | | `core:tray:deny-get-by-id` | Denies the `get_by_id` command without any pre-configured scope. | | `core:tray:allow-new` | Enables the `new` command without any pre-configured scope. | | `core:tray:deny-new` | Denies the `new` command without any pre-configured scope. | | `core:tray:allow-remove-by-id` | Enables the `remove_by_id` command without any pre-configured scope. | | `core:tray:deny-remove-by-id` | Denies the `remove_by_id` command without any pre-configured scope. | | `core:tray:allow-set-icon` | Enables the `set_icon` command without any pre-configured scope. | | `core:tray:deny-set-icon` | Denies the `set_icon` command without any pre-configured scope. | | `core:tray:allow-set-icon-as-template` | Enables the `set_icon_as_template` command without any pre-configured scope. | | `core:tray:deny-set-icon-as-template` | Denies the `set_icon_as_template` command without any pre-configured scope. | | `core:tray:allow-set-icon-with-as-template` | Enables the `set_icon_with_as_template` command without any pre-configured scope. | | `core:tray:deny-set-icon-with-as-template` | Denies the `set_icon_with_as_template` command without any pre-configured scope. | | `core:tray:allow-set-menu` | Enables the `set_menu` command without any pre-configured scope. | | `core:tray:deny-set-menu` | Denies the `set_menu` command without any pre-configured scope. | | `core:tray:allow-set-show-menu-on-left-click` | Enables the `set_show_menu_on_left_click` command without any pre-configured scope. | | `core:tray:deny-set-show-menu-on-left-click` | Denies the `set_show_menu_on_left_click` command without any pre-configured scope. | | `core:tray:allow-set-temp-dir-path` | Enables the `set_temp_dir_path` command without any pre-configured scope. | | `core:tray:deny-set-temp-dir-path` | Denies the `set_temp_dir_path` command without any pre-configured scope. | | `core:tray:allow-set-title` | Enables the `set_title` command without any pre-configured scope. | | `core:tray:deny-set-title` | Denies the `set_title` command without any pre-configured scope. | | `core:tray:allow-set-tooltip` | Enables the `set_tooltip` command without any pre-configured scope. | | `core:tray:deny-set-tooltip` | Denies the `set_tooltip` command without any pre-configured scope. | | `core:tray:allow-set-visible` | Enables the `set_visible` command without any pre-configured scope. | | `core:tray:deny-set-visible` | Denies the `set_visible` command without any pre-configured scope. | ## Webview ### Default Permission The default permission, `core:webview:default`, includes the following: * `allow-get-all-webviews` * `allow-webview-position` * `allow-webview-size` * `allow-internal-toggle-devtools` ### Permission Table | Identifier | Description | | ------------------------------------------------- | ------------------------------------------------------------------------------------ | | `core:webview:allow-clear-all-browsing-data` | Enables the `clear_all_browsing_data` command without any pre-configured scope. | | `core:webview:deny-clear-all-browsing-data` | Denies the `clear_all_browsing_data` command without any pre-configured scope. | | `core:webview:allow-create-webview` | Enables the `create_webview` command without any pre-configured scope. | | `core:webview:deny-create-webview` | Denies the `create_webview` command without any pre-configured scope. | | `core:webview:allow-create-webview-window` | Enables the `create_webview_window` command without any pre-configured scope. | | `core:webview:deny-create-webview-window` | Denies the `create_webview_window` command without any pre-configured scope. | | `core:webview:allow-get-all-webviews` | Enables the `get_all_webviews` command without any pre-configured scope. | | `core:webview:deny-get-all-webviews` | Denies the `get_all_webviews` command without any pre-configured scope. | | `core:webview:allow-internal-toggle-devtools` | Enables the `internal_toggle_devtools` command without any pre-configured scope. | | `core:webview:deny-internal-toggle-devtools` | Denies the `internal_toggle_devtools` command without any pre-configured scope. | | `core:webview:allow-print` | Enables the `print` command without any pre-configured scope. | | `core:webview:deny-print` | Denies the `print` command without any pre-configured scope. | | `core:webview:allow-reparent` | Enables the `reparent` command without any pre-configured scope. | | `core:webview:deny-reparent` | Denies the `reparent` command without any pre-configured scope. | | `core:webview:allow-set-webview-auto-resize` | Enables the `set_webview_auto_resize` command without any pre-configured scope. | | `core:webview:deny-set-webview-auto-resize` | Denies the `set_webview_auto_resize` command without any pre-configured scope. | | `core:webview:allow-set-webview-background-color` | Enables the `set_webview_background_color` command without any pre-configured scope. | | `core:webview:deny-set-webview-background-color` | Denies the `set_webview_background_color` command without any pre-configured scope. | | `core:webview:allow-set-webview-focus` | Enables the `set_webview_focus` command without any pre-configured scope. | | `core:webview:deny-set-webview-focus` | Denies the `set_webview_focus` command without any pre-configured scope. | | `core:webview:allow-set-webview-position` | Enables the `set_webview_position` command without any pre-configured scope. | | `core:webview:deny-set-webview-position` | Denies the `set_webview_position` command without any pre-configured scope. | | `core:webview:allow-set-webview-size` | Enables the `set_webview_size` command without any pre-configured scope. | | `core:webview:deny-set-webview-size` | Denies the `set_webview_size` command without any pre-configured scope. | | `core:webview:allow-set-webview-zoom` | Enables the `set_webview_zoom` command without any pre-configured scope. | | `core:webview:deny-set-webview-zoom` | Denies the `set_webview_zoom` command without any pre-configured scope. | | `core:webview:allow-webview-close` | Enables the `webview_close` command without any pre-configured scope. | | `core:webview:deny-webview-close` | Denies the `webview_close` command without any pre-configured scope. | | `core:webview:allow-webview-hide` | Enables the `webview_hide` command without any pre-configured scope. | | `core:webview:deny-webview-hide` | Denies the `webview_hide` command without any pre-configured scope. | | `core:webview:allow-webview-position` | Enables the `webview_position` command without any pre-configured scope. | | `core:webview:deny-webview-position` | Denies the `webview_position` command without any pre-configured scope. | | `core:webview:allow-webview-show` | Enables the `webview_show` command without any pre-configured scope. | | `core:webview:deny-webview-show` | Denies the `webview_show` command without any pre-configured scope. | | `core:webview:allow-webview-size` | Enables the `webview_size` command without any pre-configured scope. | | `core:webview:deny-webview-size` | Denies the `webview_size` command without any pre-configured scope. | ## Window ### Default Permission The default permission, `core:window:default`, includes the following: * `allow-get-all-windows` * `allow-scale-factor` * `allow-inner-position` * `allow-outer-position` * `allow-inner-size` * `allow-outer-size` * `allow-is-fullscreen` * `allow-is-minimized` * `allow-is-maximized` * `allow-is-focused` * `allow-is-decorated` * `allow-is-resizable` * `allow-is-maximizable` * `allow-is-minimizable` * `allow-is-closable` * `allow-is-visible` * `allow-is-enabled` * `allow-title` * `allow-current-monitor` * `allow-primary-monitor` * `allow-monitor-from-point` * `allow-available-monitors` * `allow-cursor-position` * `allow-theme` * `allow-is-always-on-top` * `allow-activity-name` * `allow-scene-identifier` * `allow-internal-toggle-maximize` ### Permission Table | Identifier | Description | | ------------------------------------------------- | ------------------------------------------------------------------------------------- | | `core:window:allow-activity-name` | Enables the `activity_name` command without any pre-configured scope. | | `core:window:deny-activity-name` | Denies the `activity_name` command without any pre-configured scope. | | `core:window:allow-available-monitors` | Enables the `available_monitors` command without any pre-configured scope. | | `core:window:deny-available-monitors` | Denies the `available_monitors` command without any pre-configured scope. | | `core:window:allow-center` | Enables the `center` command without any pre-configured scope. | | `core:window:deny-center` | Denies the `center` command without any pre-configured scope. | | `core:window:allow-close` | Enables the `close` command without any pre-configured scope. | | `core:window:deny-close` | Denies the `close` command without any pre-configured scope. | | `core:window:allow-create` | Enables the `create` command without any pre-configured scope. | | `core:window:deny-create` | Denies the `create` command without any pre-configured scope. | | `core:window:allow-current-monitor` | Enables the `current_monitor` command without any pre-configured scope. | | `core:window:deny-current-monitor` | Denies the `current_monitor` command without any pre-configured scope. | | `core:window:allow-cursor-position` | Enables the `cursor_position` command without any pre-configured scope. | | `core:window:deny-cursor-position` | Denies the `cursor_position` command without any pre-configured scope. | | `core:window:allow-destroy` | Enables the `destroy` command without any pre-configured scope. | | `core:window:deny-destroy` | Denies the `destroy` command without any pre-configured scope. | | `core:window:allow-get-all-windows` | Enables the `get_all_windows` command without any pre-configured scope. | | `core:window:deny-get-all-windows` | Denies the `get_all_windows` command without any pre-configured scope. | | `core:window:allow-hide` | Enables the `hide` command without any pre-configured scope. | | `core:window:deny-hide` | Denies the `hide` command without any pre-configured scope. | | `core:window:allow-inner-position` | Enables the `inner_position` command without any pre-configured scope. | | `core:window:deny-inner-position` | Denies the `inner_position` command without any pre-configured scope. | | `core:window:allow-inner-size` | Enables the `inner_size` command without any pre-configured scope. | | `core:window:deny-inner-size` | Denies the `inner_size` command without any pre-configured scope. | | `core:window:allow-internal-toggle-maximize` | Enables the `internal_toggle_maximize` command without any pre-configured scope. | | `core:window:deny-internal-toggle-maximize` | Denies the `internal_toggle_maximize` command without any pre-configured scope. | | `core:window:allow-is-always-on-top` | Enables the `is_always_on_top` command without any pre-configured scope. | | `core:window:deny-is-always-on-top` | Denies the `is_always_on_top` command without any pre-configured scope. | | `core:window:allow-is-closable` | Enables the `is_closable` command without any pre-configured scope. | | `core:window:deny-is-closable` | Denies the `is_closable` command without any pre-configured scope. | | `core:window:allow-is-decorated` | Enables the `is_decorated` command without any pre-configured scope. | | `core:window:deny-is-decorated` | Denies the `is_decorated` command without any pre-configured scope. | | `core:window:allow-is-enabled` | Enables the `is_enabled` command without any pre-configured scope. | | `core:window:deny-is-enabled` | Denies the `is_enabled` command without any pre-configured scope. | | `core:window:allow-is-focused` | Enables the `is_focused` command without any pre-configured scope. | | `core:window:deny-is-focused` | Denies the `is_focused` command without any pre-configured scope. | | `core:window:allow-is-fullscreen` | Enables the `is_fullscreen` command without any pre-configured scope. | | `core:window:deny-is-fullscreen` | Denies the `is_fullscreen` command without any pre-configured scope. | | `core:window:allow-is-maximizable` | Enables the `is_maximizable` command without any pre-configured scope. | | `core:window:deny-is-maximizable` | Denies the `is_maximizable` command without any pre-configured scope. | | `core:window:allow-is-maximized` | Enables the `is_maximized` command without any pre-configured scope. | | `core:window:deny-is-maximized` | Denies the `is_maximized` command without any pre-configured scope. | | `core:window:allow-is-minimizable` | Enables the `is_minimizable` command without any pre-configured scope. | | `core:window:deny-is-minimizable` | Denies the `is_minimizable` command without any pre-configured scope. | | `core:window:allow-is-minimized` | Enables the `is_minimized` command without any pre-configured scope. | | `core:window:deny-is-minimized` | Denies the `is_minimized` command without any pre-configured scope. | | `core:window:allow-is-resizable` | Enables the `is_resizable` command without any pre-configured scope. | | `core:window:deny-is-resizable` | Denies the `is_resizable` command without any pre-configured scope. | | `core:window:allow-is-visible` | Enables the `is_visible` command without any pre-configured scope. | | `core:window:deny-is-visible` | Denies the `is_visible` command without any pre-configured scope. | | `core:window:allow-maximize` | Enables the `maximize` command without any pre-configured scope. | | `core:window:deny-maximize` | Denies the `maximize` command without any pre-configured scope. | | `core:window:allow-minimize` | Enables the `minimize` command without any pre-configured scope. | | `core:window:deny-minimize` | Denies the `minimize` command without any pre-configured scope. | | `core:window:allow-monitor-from-point` | Enables the `monitor_from_point` command without any pre-configured scope. | | `core:window:deny-monitor-from-point` | Denies the `monitor_from_point` command without any pre-configured scope. | | `core:window:allow-outer-position` | Enables the `outer_position` command without any pre-configured scope. | | `core:window:deny-outer-position` | Denies the `outer_position` command without any pre-configured scope. | | `core:window:allow-outer-size` | Enables the `outer_size` command without any pre-configured scope. | | `core:window:deny-outer-size` | Denies the `outer_size` command without any pre-configured scope. | | `core:window:allow-primary-monitor` | Enables the `primary_monitor` command without any pre-configured scope. | | `core:window:deny-primary-monitor` | Denies the `primary_monitor` command without any pre-configured scope. | | `core:window:allow-request-user-attention` | Enables the `request_user_attention` command without any pre-configured scope. | | `core:window:deny-request-user-attention` | Denies the `request_user_attention` command without any pre-configured scope. | | `core:window:allow-scale-factor` | Enables the `scale_factor` command without any pre-configured scope. | | `core:window:deny-scale-factor` | Denies the `scale_factor` command without any pre-configured scope. | | `core:window:allow-scene-identifier` | Enables the `scene_identifier` command without any pre-configured scope. | | `core:window:deny-scene-identifier` | Denies the `scene_identifier` command without any pre-configured scope. | | `core:window:allow-set-always-on-bottom` | Enables the `set_always_on_bottom` command without any pre-configured scope. | | `core:window:deny-set-always-on-bottom` | Denies the `set_always_on_bottom` command without any pre-configured scope. | | `core:window:allow-set-always-on-top` | Enables the `set_always_on_top` command without any pre-configured scope. | | `core:window:deny-set-always-on-top` | Denies the `set_always_on_top` command without any pre-configured scope. | | `core:window:allow-set-background-color` | Enables the `set_background_color` command without any pre-configured scope. | | `core:window:deny-set-background-color` | Denies the `set_background_color` command without any pre-configured scope. | | `core:window:allow-set-badge-count` | Enables the `set_badge_count` command without any pre-configured scope. | | `core:window:deny-set-badge-count` | Denies the `set_badge_count` command without any pre-configured scope. | | `core:window:allow-set-badge-label` | Enables the `set_badge_label` command without any pre-configured scope. | | `core:window:deny-set-badge-label` | Denies the `set_badge_label` command without any pre-configured scope. | | `core:window:allow-set-closable` | Enables the `set_closable` command without any pre-configured scope. | | `core:window:deny-set-closable` | Denies the `set_closable` command without any pre-configured scope. | | `core:window:allow-set-content-protected` | Enables the `set_content_protected` command without any pre-configured scope. | | `core:window:deny-set-content-protected` | Denies the `set_content_protected` command without any pre-configured scope. | | `core:window:allow-set-cursor-grab` | Enables the `set_cursor_grab` command without any pre-configured scope. | | `core:window:deny-set-cursor-grab` | Denies the `set_cursor_grab` command without any pre-configured scope. | | `core:window:allow-set-cursor-icon` | Enables the `set_cursor_icon` command without any pre-configured scope. | | `core:window:deny-set-cursor-icon` | Denies the `set_cursor_icon` command without any pre-configured scope. | | `core:window:allow-set-cursor-position` | Enables the `set_cursor_position` command without any pre-configured scope. | | `core:window:deny-set-cursor-position` | Denies the `set_cursor_position` command without any pre-configured scope. | | `core:window:allow-set-cursor-visible` | Enables the `set_cursor_visible` command without any pre-configured scope. | | `core:window:deny-set-cursor-visible` | Denies the `set_cursor_visible` command without any pre-configured scope. | | `core:window:allow-set-decorations` | Enables the `set_decorations` command without any pre-configured scope. | | `core:window:deny-set-decorations` | Denies the `set_decorations` command without any pre-configured scope. | | `core:window:allow-set-effects` | Enables the `set_effects` command without any pre-configured scope. | | `core:window:deny-set-effects` | Denies the `set_effects` command without any pre-configured scope. | | `core:window:allow-set-enabled` | Enables the `set_enabled` command without any pre-configured scope. | | `core:window:deny-set-enabled` | Denies the `set_enabled` command without any pre-configured scope. | | `core:window:allow-set-focus` | Enables the `set_focus` command without any pre-configured scope. | | `core:window:deny-set-focus` | Denies the `set_focus` command without any pre-configured scope. | | `core:window:allow-set-focusable` | Enables the `set_focusable` command without any pre-configured scope. | | `core:window:deny-set-focusable` | Denies the `set_focusable` command without any pre-configured scope. | | `core:window:allow-set-fullscreen` | Enables the `set_fullscreen` command without any pre-configured scope. | | `core:window:deny-set-fullscreen` | Denies the `set_fullscreen` command without any pre-configured scope. | | `core:window:allow-set-icon` | Enables the `set_icon` command without any pre-configured scope. | | `core:window:deny-set-icon` | Denies the `set_icon` command without any pre-configured scope. | | `core:window:allow-set-ignore-cursor-events` | Enables the `set_ignore_cursor_events` command without any pre-configured scope. | | `core:window:deny-set-ignore-cursor-events` | Denies the `set_ignore_cursor_events` command without any pre-configured scope. | | `core:window:allow-set-max-size` | Enables the `set_max_size` command without any pre-configured scope. | | `core:window:deny-set-max-size` | Denies the `set_max_size` command without any pre-configured scope. | | `core:window:allow-set-maximizable` | Enables the `set_maximizable` command without any pre-configured scope. | | `core:window:deny-set-maximizable` | Denies the `set_maximizable` command without any pre-configured scope. | | `core:window:allow-set-min-size` | Enables the `set_min_size` command without any pre-configured scope. | | `core:window:deny-set-min-size` | Denies the `set_min_size` command without any pre-configured scope. | | `core:window:allow-set-minimizable` | Enables the `set_minimizable` command without any pre-configured scope. | | `core:window:deny-set-minimizable` | Denies the `set_minimizable` command without any pre-configured scope. | | `core:window:allow-set-overlay-icon` | Enables the `set_overlay_icon` command without any pre-configured scope. | | `core:window:deny-set-overlay-icon` | Denies the `set_overlay_icon` command without any pre-configured scope. | | `core:window:allow-set-position` | Enables the `set_position` command without any pre-configured scope. | | `core:window:deny-set-position` | Denies the `set_position` command without any pre-configured scope. | | `core:window:allow-set-progress-bar` | Enables the `set_progress_bar` command without any pre-configured scope. | | `core:window:deny-set-progress-bar` | Denies the `set_progress_bar` command without any pre-configured scope. | | `core:window:allow-set-resizable` | Enables the `set_resizable` command without any pre-configured scope. | | `core:window:deny-set-resizable` | Denies the `set_resizable` command without any pre-configured scope. | | `core:window:allow-set-shadow` | Enables the `set_shadow` command without any pre-configured scope. | | `core:window:deny-set-shadow` | Denies the `set_shadow` command without any pre-configured scope. | | `core:window:allow-set-simple-fullscreen` | Enables the `set_simple_fullscreen` command without any pre-configured scope. | | `core:window:deny-set-simple-fullscreen` | Denies the `set_simple_fullscreen` command without any pre-configured scope. | | `core:window:allow-set-size` | Enables the `set_size` command without any pre-configured scope. | | `core:window:deny-set-size` | Denies the `set_size` command without any pre-configured scope. | | `core:window:allow-set-size-constraints` | Enables the `set_size_constraints` command without any pre-configured scope. | | `core:window:deny-set-size-constraints` | Denies the `set_size_constraints` command without any pre-configured scope. | | `core:window:allow-set-skip-taskbar` | Enables the `set_skip_taskbar` command without any pre-configured scope. | | `core:window:deny-set-skip-taskbar` | Denies the `set_skip_taskbar` command without any pre-configured scope. | | `core:window:allow-set-theme` | Enables the `set_theme` command without any pre-configured scope. | | `core:window:deny-set-theme` | Denies the `set_theme` command without any pre-configured scope. | | `core:window:allow-set-title` | Enables the `set_title` command without any pre-configured scope. | | `core:window:deny-set-title` | Denies the `set_title` command without any pre-configured scope. | | `core:window:allow-set-title-bar-style` | Enables the `set_title_bar_style` command without any pre-configured scope. | | `core:window:deny-set-title-bar-style` | Denies the `set_title_bar_style` command without any pre-configured scope. | | `core:window:allow-set-visible-on-all-workspaces` | Enables the `set_visible_on_all_workspaces` command without any pre-configured scope. | | `core:window:deny-set-visible-on-all-workspaces` | Denies the `set_visible_on_all_workspaces` command without any pre-configured scope. | | `core:window:allow-show` | Enables the `show` command without any pre-configured scope. | | `core:window:deny-show` | Denies the `show` command without any pre-configured scope. | | `core:window:allow-start-dragging` | Enables the `start_dragging` command without any pre-configured scope. | | `core:window:deny-start-dragging` | Denies the `start_dragging` command without any pre-configured scope. | | `core:window:allow-start-resize-dragging` | Enables the `start_resize_dragging` command without any pre-configured scope. | | `core:window:deny-start-resize-dragging` | Denies the `start_resize_dragging` command without any pre-configured scope. | | `core:window:allow-theme` | Enables the `theme` command without any pre-configured scope. | | `core:window:deny-theme` | Denies the `theme` command without any pre-configured scope. | | `core:window:allow-title` | Enables the `title` command without any pre-configured scope. | | `core:window:deny-title` | Denies the `title` command without any pre-configured scope. | | `core:window:allow-toggle-maximize` | Enables the `toggle_maximize` command without any pre-configured scope. | | `core:window:deny-toggle-maximize` | Denies the `toggle_maximize` command without any pre-configured scope. | | `core:window:allow-unmaximize` | Enables the `unmaximize` command without any pre-configured scope. | | `core:window:deny-unmaximize` | Denies the `unmaximize` command without any pre-configured scope. | | `core:window:allow-unminimize` | Enables the `unminimize` command without any pre-configured scope. | | `core:window:deny-unminimize` | Denies the `unminimize` command without any pre-configured scope. |
# Permission
Descriptions of explicit privileges of commands. It can enable commands to be accessible in the frontend of the application. If the scope is defined it can be used to fine grain control the access of individual or multiple commands. **Object Properties**: * commands * description * identifier (required) * platforms * scope * version ### commands [`Commands`](#commands) Allowed or denied commands when using this permission. Default
```json
{
"allow": [],
"deny": []
}
```
### description `string` | `null` Human-readable description of what the permission does. Tauri internal convention is to use `<h4>` headings in markdown content for Tauri documentation generation purposes. ### identifier `string` A unique identifier for the permission. ### platforms [`Target`](#target)\[] | `null` Target platforms this permission applies. By default all platforms are affected by this permission. ### scope [`Scopes`](#scopes) Allowed or denied scoped when using this permission. ### version `integer` | `null` minimum of `1`, formatted as `uint64` The version of the permission. ## Definitions ### Commands Allowed and denied commands inside a permission. If two commands clash inside of `allow` and `deny`, it should be denied by default. **Object Properties**: * allow * deny ##### allow `string`\[] Allowed command. **Default**: `[]` ##### deny `string`\[] Denied command, which takes priority. **Default**: `[]` ### Number **Any of the following**: * `integer` formatted as `int64` Represents an \[`i64`]. * `number` formatted as `double` Represents a \[`f64`]. A valid ACL number. ### Scopes An argument for fine grained behavior control of Tauri commands. It can be of any serde serializable type and is used to allow or prevent certain actions inside a Tauri command. The configured scope is passed to the command and will be enforced by the command implementation. ##### Example
```json
{
"allow": [{ "path": "$HOME/**" }],
"deny": [{ "path": "$HOME/secret.txt" }]
}
```
**Object Properties**: * allow * deny ##### allow [`Value`](#value)\[] | `null` Data that defines what is allowed by the scope. ##### deny [`Value`](#value)\[] | `null` Data that defines what is denied by the scope. This should be prioritized by validation logic. ### Target **One of the following**: * `"macOS"` MacOS. * `"windows"` Windows. * `"linux"` Linux. * `"android"` Android. * `"iOS"` iOS. Platform target. ### Value **Any of the following**: * `null` Represents a null JSON value. * `boolean` Represents a \[`bool`]. * [`Number`](#number) Represents a valid ACL \[`Number`]. * `string` Represents a \[`String`]. * [`Value`](#value)\[] Represents a list of other \[`Value`]s. * Represents a map of \[`String`] keys to \[`Value`]s. **Allows additional properties**: [`Value`](#value) All supported ACL values.
# Scope
An argument for fine grained behavior control of Tauri commands. It can be of any serde serializable type and is used to allow or prevent certain actions inside a Tauri command. The configured scope is passed to the command and will be enforced by the command implementation. ### Example
```json
{
"allow": [{ "path": "$HOME/**" }],
"deny": [{ "path": "$HOME/secret.txt" }]
}
```
**Object Properties**: * allow * deny ### allow [`Value`](#value)\[] | `null` Data that defines what is allowed by the scope. ### deny [`Value`](#value)\[] | `null` Data that defines what is denied by the scope. This should be prioritized by validation logic. ## Definitions ### Number **Any of the following**: * `integer` formatted as `int64` Represents an \[`i64`]. * `number` formatted as `double` Represents a \[`f64`]. A valid ACL number. ### Value **Any of the following**: * `null` Represents a null JSON value. * `boolean` Represents a \[`bool`]. * [`Number`](#number) Represents a valid ACL \[`Number`]. * `string` Represents a \[`String`]. * [`Value`](#value)\[] Represents a list of other \[`Value`]s. * Represents a map of \[`String`] keys to \[`Value`]s. **Allows additional properties**: [`Value`](#value) All supported ACL values.
# Command Line Interface
The Tauri command line interface (CLI) is the way to interact with Tauri throughout the development lifecycle. You can add the Tauri CLI to your current project using your package manager of choice: * npm
```sh
npm install --save-dev @tauri-apps/cli@latest
```
* yarn
```sh
yarn add -D @tauri-apps/cli@latest
```
* pnpm
```sh
pnpm add -D @tauri-apps/cli@latest
```
* deno
```sh
deno add -D npm:@tauri-apps/cli@latest
```
* cargo
```sh
cargo install tauri-cli --version "^2.0.0" --locked
```
## List of Commands | Command | Description | | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | [`init`](#init) | Initialize a Tauri project in an existing directory | | [`dev`](#dev) | Run your app in development mode | | [`build`](#build) | Build your app in release mode and generate bundles and installers | | [`bundle`](#bundle) | Generate bundles and installers for your app (already built by `tauri build`) | | [`android`](#android) | Android commands | | [`android init`](#android-init) | Initialize Android target in the project | | [`android dev`](#android-dev) | Run your app in development mode on Android | | [`android build`](#android-build) | Build your app in release mode for Android and generate APKs and AABs | | [`android run`](#android-run) | Run your app in production mode on Android | | [`ios`](#ios) | iOS commands | | [`ios init`](#ios-init) | Initialize iOS target in the project | | [`ios dev`](#ios-dev) | Run your app in development mode on iOS | | [`ios build`](#ios-build) | Build your app in release mode for iOS and generate IPAs | | [`ios run`](#ios-run) | Run your app in production mode on iOS | | [`migrate`](#migrate) | Migrate from v1 to v2 | | [`info`](#info) | Show a concise list of information about the environment, Rust, Node.js and their versions as well as a few relevant project configurations | | [`add`](#add) | Add a tauri plugin to the project | | [`remove`](#remove) | Remove a tauri plugin from the project | | [`plugin`](#plugin) | Manage or create Tauri plugins | | [`plugin new`](#plugin-new) | Initializes a new Tauri plugin project | | [`plugin init`](#plugin-init) | Initialize a Tauri plugin project on an existing directory | | [`plugin android`](#plugin-android) | Manage the Android project for a Tauri plugin | | [`plugin ios`](#plugin-ios) | Manage the iOS project for a Tauri plugin | | [`plugin android init`](#plugin-android-init) | Initializes the Android project for an existing Tauri plugin | | [`plugin ios init`](#plugin-ios-init) | Initializes the iOS project for an existing Tauri plugin | | [`icon`](#icon) | Generate various icons for all major platforms | | [`signer`](#signer) | Generate signing keys for Tauri updater or sign files | | [`signer sign`](#signer-sign) | Sign a file | | [`signer generate`](#signer-generate) | Generate a new signing key to sign files | | [`completions`](#completions) | Generate Tauri CLI shell completions for Bash, Zsh, PowerShell or Fish | | [`permission`](#permission) | Manage or create permissions for your app or plugin | | [`permission new`](#permission-new) | Create a new permission file | | [`permission add`](#permission-add) | Add a permission to capabilities | | [`permission rm`](#permission-rm) | Remove a permission file, and its reference from any capability | | [`permission ls`](#permission-ls) | List permissions available to your application | | [`capability`](#capability) | Manage or create capabilities for your app | | [`capability new`](#capability-new) | Create a new permission file | | [`inspect`](#inspect) | Inspect values used by Tauri | | [`inspect wix-upgrade-code`](#inspect-wix-upgrade-code) | Print the default Upgrade Code used by MSI installer derived from productName | ### `init` * npm
```sh
npm run tauri init
```
* yarn
```sh
yarn tauri init
```
* pnpm
```sh
pnpm tauri init
```
* deno
```sh
deno task tauri init
```
* bun
```sh
bun tauri init
```
* cargo
```sh
cargo tauri init
```
```plaintext
Initialize a Tauri project in an existing directory
Usage: tauri init [OPTIONS]
Options:
--ci
Skip prompting for values [env: CI=true]
-v, --verbose...
Enables verbose logging
-f, --force
Force init to overwrite the src-tauri folder
-l, --log
Enables logging
-d, --directory
Set target directory for init [default: /opt/build/repo/packages/cli-generator]
-t, --tauri-path
Path of the Tauri project to use (relative to the cwd)
-A, --app-name
Name of your Tauri application
-W, --window-title
Window title of your Tauri application
-D, --frontend-dist
Web assets location, relative to /src-tauri
-P, --dev-url
Url of your dev server
--before-dev-command
A shell command to run before `tauri dev` kicks in
--before-build-command
A shell command to run before `tauri build` kicks in
-h, --help
Print help
-V, --version
Print version
```
### `dev` * npm
```sh
npm run tauri dev
```
* yarn
```sh
yarn tauri dev
```
* pnpm
```sh
pnpm tauri dev
```
* deno
```sh
deno task tauri dev
```
* bun
```sh
bun tauri dev
```
* cargo
```sh
cargo tauri dev
```
```plaintext
Run your app in development mode with hot-reloading for the Rust code. It makes use of the `build.devUrl` property from your `tauri.conf.json` file. It also runs your `build.beforeDevCommand` which usually starts your frontend devServer.
Usage: tauri dev [OPTIONS] [ARGS]...
Arguments:
[ARGS]...
Command line arguments passed to the runner. Use `--` to explicitly mark the start of the arguments. Arguments after a second `--` are passed to the application e.g. `tauri dev -- [runnerArgs] -- [appArgs]`
Options:
-r, --runner
Binary to use to run the application
-v, --verbose...
Enables verbose logging
-t, --target
Target triple to build against
-f, --features [...]
List of cargo features to activate
-e, --exit-on-panic
Exit on panic
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
--release
Run the code in release mode
--no-dev-server-wait
Skip waiting for the frontend dev server to start before building the tauri application
[env: TAURI_CLI_NO_DEV_SERVER_WAIT=]
--no-watch
Disable the file watcher
--additional-watch-folders
Additional paths to watch for changes
--no-dev-server
Disable the built-in dev server for static files
--port
Specify port for the built-in dev server for static files. Defaults to 1430
[env: TAURI_CLI_PORT=]
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
### `build` * npm
```sh
npm run tauri build
```
* yarn
```sh
yarn tauri build
```
* pnpm
```sh
pnpm tauri build
```
* deno
```sh
deno task tauri build
```
* bun
```sh
bun tauri build
```
* cargo
```sh
cargo tauri build
```
```plaintext
Build your app in release mode and generate bundles and installers. It makes use of the `build.frontendDist` property from your `tauri.conf.json` file. It also runs your `build.beforeBuildCommand` which usually builds your frontend into `build.frontendDist`. This will also run `build.beforeBundleCommand` before generating the bundles and installers of your app.
Usage: tauri build [OPTIONS] [ARGS]...
Arguments:
[ARGS]...
Command line arguments passed to the runner. Use `--` to explicitly mark the start of the arguments
Options:
-r, --runner
Binary to use to build the application, defaults to `cargo`
-v, --verbose...
Enables verbose logging
-d, --debug
Builds with the debug flag
-t, --target
Target triple to build against.
It must be one of the values outputted by `$rustc --print target-list` or `universal-apple-darwin` for an universal macOS application.
Note that compiling an universal macOS application requires both `aarch64-apple-darwin` and `x86_64-apple-darwin` targets to be installed.
-f, --features [...]
Space or comma separated list of features to activate
-b, --bundles [...]
Space or comma separated list of bundles to package
[possible values: deb, rpm, appimage]
--no-bundle
Skip the bundling step even if `bundle > active` is `true` in tauri config
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
--ci
Skip prompting for values
[env: CI=true]
--skip-stapling
Whether to wait for notarization to finish and `staple` the ticket onto the app.
Gatekeeper will look for stapled tickets to tell whether your app was notarized without reaching out to Apple's servers which is helpful in offline environments.
Enabling this option will also result in `tauri build` not waiting for notarization to finish which is helpful for the very first time your app is notarized as this can take multiple hours. On subsequent runs, it's recommended to disable this setting again.
--ignore-version-mismatches
Do not error out if a version mismatch is detected on a Tauri package.
Only use this when you are sure the mismatch is incorrectly detected as version mismatched Tauri packages can lead to unknown behavior.
--no-sign
Skip code signing when bundling the app
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
### `bundle` * npm
```sh
npm run tauri bundle
```
* yarn
```sh
yarn tauri bundle
```
* pnpm
```sh
pnpm tauri bundle
```
* deno
```sh
deno task tauri bundle
```
* bun
```sh
bun tauri bundle
```
* cargo
```sh
cargo tauri bundle
```
```plaintext
Generate bundles and installers for your app (already built by `tauri build`). This run `build.beforeBundleCommand` before generating the bundles and installers of your app.
Usage: tauri bundle [OPTIONS]
Options:
-d, --debug
Builds with the debug flag
-v, --verbose...
Enables verbose logging
-b, --bundles [...]
Space or comma separated list of bundles to package
[possible values: deb, rpm, appimage]
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
-f, --features [...]
Space or comma separated list of features, should be the same features passed to `tauri build` if any
-t, --target
Target triple to build against.
It must be one of the values outputted by `$rustc --print target-list` or `universal-apple-darwin` for an universal macOS application.
Note that compiling an universal macOS application requires both `aarch64-apple-darwin` and `x86_64-apple-darwin` targets to be installed.
--ci
Skip prompting for values
[env: CI=true]
--skip-stapling
Whether to wait for notarization to finish and `staple` the ticket onto the app.
Gatekeeper will look for stapled tickets to tell whether your app was notarized without reaching out to Apple's servers which is helpful in offline environments.
Enabling this option will also result in `tauri build` not waiting for notarization to finish which is helpful for the very first time your app is notarized as this can take multiple hours. On subsequent runs, it's recommended to disable this setting again.
--no-sign
Skip code signing during the build or bundling process.
Useful for local development and CI environments where signing certificates or environment variables are not available or not needed.
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
### `android` * npm
```sh
npm run tauri android
```
* yarn
```sh
yarn tauri android
```
* pnpm
```sh
pnpm tauri android
```
* deno
```sh
deno task tauri android
```
* bun
```sh
bun tauri android
```
* cargo
```sh
cargo tauri android
```
```plaintext
Android commands
Usage: tauri android [OPTIONS]
Commands:
init Initialize Android target in the project
dev Run your app in development mode on Android
build Build your app in release mode for Android and generate APKs and AABs
run Run your app in production mode on Android
help Print this message or the help of the given subcommand(s)
Options:
-v, --verbose... Enables verbose logging
-h, --help Print help
-V, --version Print version
```
#### `android init` * npm
```sh
npm run tauri android init
```
* yarn
```sh
yarn tauri android init
```
* pnpm
```sh
pnpm tauri android init
```
* deno
```sh
deno task tauri android init
```
* bun
```sh
bun tauri android init
```
* cargo
```sh
cargo tauri android init
```
```plaintext
Initialize Android target in the project
Usage: tauri android init [OPTIONS]
Options:
--ci
Skip prompting for values
[env: CI=true]
-v, --verbose...
Enables verbose logging
--skip-targets-install
Skips installing rust toolchains via rustup
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
#### `android dev` * npm
```sh
npm run tauri android dev
```
* yarn
```sh
yarn tauri android dev
```
* pnpm
```sh
pnpm tauri android dev
```
* deno
```sh
deno task tauri android dev
```
* bun
```sh
bun tauri android dev
```
* cargo
```sh
cargo tauri android dev
```
```plaintext
Run your app in development mode on Android with hot-reloading for the Rust code. It makes use of the `build.devUrl` property from your `tauri.conf.json` file. It also runs your `build.beforeDevCommand` which usually starts your frontend devServer.
Usage: tauri android dev [OPTIONS] [DEVICE] [-- ...]
Arguments:
[DEVICE]
Runs on the given device name
[ARGS]...
Command line arguments passed to the runner. Use `--` to explicitly mark the start of the arguments. e.g. `tauri android dev -- [runnerArgs]`
Options:
-f, --features [...]
List of cargo features to activate
-v, --verbose...
Enables verbose logging
-e, --exit-on-panic
Exit on panic
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
--release
Run the code in release mode
--no-dev-server-wait
Skip waiting for the frontend dev server to start before building the tauri application
[env: TAURI_CLI_NO_DEV_SERVER_WAIT=]
--no-watch
Disable the file watcher
--additional-watch-folders
Additional paths to watch for changes
-o, --open
Open Android Studio instead of trying to run on a connected device
--force-ip-prompt
Force prompting for an IP to use to connect to the dev server on mobile
--host []
Use the public network address for the development server. If an actual address it provided, it is used instead of prompting to pick one.
On Windows we use the public network address by default.
This option is particularly useful along the `--open` flag when you intend on running on a physical device.
This replaces the devUrl configuration value to match the public network address host, it is your responsibility to set up your development server to listen on this address by using 0.0.0.0 as host for instance.
When this is set or when running on an iOS device the CLI sets the `TAURI_DEV_HOST` environment variable so you can check this on your framework's configuration to expose the development server on the public network address.
[default: ]
--no-dev-server
Disable the built-in dev server for static files
--port
Specify port for the built-in dev server for static files. Defaults to 1430
[env: TAURI_CLI_PORT=]
--root-certificate-path
Path to the certificate file used by your dev server. Required for mobile dev when using HTTPS
[env: TAURI_DEV_ROOT_CERTIFICATE_PATH=]
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
#### `android build` * npm
```sh
npm run tauri android build
```
* yarn
```sh
yarn tauri android build
```
* pnpm
```sh
pnpm tauri android build
```
* deno
```sh
deno task tauri android build
```
* bun
```sh
bun tauri android build
```
* cargo
```sh
cargo tauri android build
```
```plaintext
Build your app in release mode for Android and generate APKs and AABs. It makes use of the `build.frontendDist` property from your `tauri.conf.json` file. It also runs your `build.beforeBuildCommand` which usually builds your frontend into `build.frontendDist`.
Usage: tauri android build [OPTIONS] [-- ...]
Arguments:
[ARGS]...
Command line arguments passed to the runner. Use `--` to explicitly mark the start of the arguments. e.g. `tauri android build -- [runnerArgs]`
Options:
-d, --debug
Builds with the debug flag
-v, --verbose...
Enables verbose logging
-t, --target [...]
Which targets to build (all by default)
[possible values: aarch64, armv7, i686, x86_64]
-f, --features [...]
List of cargo features to activate
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
--split-per-abi
Whether to split the APKs and AABs per ABIs
--apk
Build APKs
--aab
Build AABs
-o, --open
Open Android Studio
--ci
Skip prompting for values
[env: CI=true]
--ignore-version-mismatches
Do not error out if a version mismatch is detected on a Tauri package.
Only use this when you are sure the mismatch is incorrectly detected as version mismatched Tauri packages can lead to unknown behavior.
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
#### `android run` * npm
```sh
npm run tauri android run
```
* yarn
```sh
yarn tauri android run
```
* pnpm
```sh
pnpm tauri android run
```
* deno
```sh
deno task tauri android run
```
* bun
```sh
bun tauri android run
```
* cargo
```sh
cargo tauri android run
```
```plaintext
Run your app in production mode on Android. It makes use of the `build.frontendDist` property from your `tauri.conf.json` file. It also runs your `build.beforeBuildCommand` which usually builds your frontend into `build.frontendDist`.
Usage: tauri android run [OPTIONS] [DEVICE] [-- ...]
Arguments:
[DEVICE]
Runs on the given device name
[ARGS]...
Command line arguments passed to the runner. Use `--` to explicitly mark the start of the arguments. e.g. `tauri android build -- [runnerArgs]`
Options:
-r, --release
Run the app in release mode
-v, --verbose...
Enables verbose logging
-f, --features [...]
List of cargo features to activate
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
--no-watch
Disable the file watcher
--additional-watch-folders
Additional paths to watch for changes
-o, --open
Open Android Studio
--ignore-version-mismatches
Do not error out if a version mismatch is detected on a Tauri package.
Only use this when you are sure the mismatch is incorrectly detected as version mismatched Tauri packages can lead to unknown behavior.
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
### `ios` *All iOS commands are only available on macOS hosts.* * npm
```sh
npm run tauri ios
```
* yarn
```sh
yarn tauri ios
```
* pnpm
```sh
pnpm tauri ios
```
* deno
```sh
deno task tauri ios
```
* bun
```sh
bun tauri ios
```
* cargo
```sh
cargo tauri ios
```
```plaintext
iOS commands
Usage: tauri ios [OPTIONS]
Commands:
init Initialize iOS target in the project
dev Run your app in development mode on iOS
build Build your app in release mode for iOS and generate IPAs
run Run your app in production mode on iOS
help Print this message or the help of the given subcommand(s)
Options:
-v, --verbose... Enables verbose logging
-h, --help Print help
-V, --version Print version
```
#### `ios init` *All iOS commands are only available on macOS hosts.* * npm
```sh
npm run tauri ios init
```
* yarn
```sh
yarn tauri ios init
```
* pnpm
```sh
pnpm tauri ios init
```
* deno
```sh
deno task tauri ios init
```
* bun
```sh
bun tauri ios init
```
* cargo
```sh
cargo tauri ios init
```
```plaintext
Initialize iOS target in the project
Usage: tauri ios init [OPTIONS]
Options:
--ci
Skip prompting for values
[env: CI=]
-v, --verbose...
Enables verbose logging
-r, --reinstall-deps
Reinstall dependencies
--skip-targets-install
Skips installing rust toolchains via rustup
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
#### `ios dev` *All iOS commands are only available on macOS hosts.* * npm
```sh
npm run tauri ios dev
```
* yarn
```sh
yarn tauri ios dev
```
* pnpm
```sh
pnpm tauri ios dev
```
* deno
```sh
deno task tauri ios dev
```
* bun
```sh
bun tauri ios dev
```
* cargo
```sh
cargo tauri ios dev
```
```plaintext
Run your app in development mode on iOS with hot-reloading for the Rust code.
It makes use of the `build.devUrl` property from your `tauri.conf.json` file.
It also runs your `build.beforeDevCommand` which usually starts your frontend devServer.
When connected to a physical iOS device, the public network address must be used instead of `localhost`
for the devUrl property. Tauri makes that change automatically, but your dev server might need
a different configuration to listen on the public address. You can check the `TAURI_DEV_HOST`
environment variable to determine whether the public network should be used or not.
Usage: tauri ios dev [OPTIONS] [DEVICE] [-- ...]
Arguments:
[DEVICE]
Runs on the given device name
[ARGS]...
Command line arguments passed to the runner. Use `--` to explicitly mark the start of the arguments. e.g. `tauri ios dev -- [runnerArgs]`
Options:
-f, --features [...]
List of cargo features to activate
-v, --verbose...
Enables verbose logging
-e, --exit-on-panic
Exit on panic
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
--release
Run the code in release mode
--no-dev-server-wait
Skip waiting for the frontend dev server to start before building the tauri application
[env: TAURI_CLI_NO_DEV_SERVER_WAIT=]
--no-watch
Disable the file watcher
--additional-watch-folders
Additional paths to watch for changes
-o, --open
Open Xcode instead of trying to run on a connected device
--force-ip-prompt
Force prompting for an IP to use to connect to the dev server on mobile
--host []
Use the public network address for the development server. If an actual address it provided, it is used instead of prompting to pick one.
This option is particularly useful along the `--open` flag when you intend on running on a physical device.
This replaces the devUrl configuration value to match the public network address host, it is your responsibility to set up your development server to listen on this address by using 0.0.0.0 as host for instance.
When this is set or when running on an iOS device the CLI sets the `TAURI_DEV_HOST` environment variable so you can check this on your framework's configuration to expose the development server on the public network address.
[default: ]
--no-dev-server
Disable the built-in dev server for static files
--port
Specify port for the built-in dev server for static files. Defaults to 1430
[env: TAURI_CLI_PORT=]
--root-certificate-path
Path to the certificate file used by your dev server. Required for mobile dev when using HTTPS
[env: TAURI_DEV_ROOT_CERTIFICATE_PATH=]
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
#### `ios build` *All iOS commands are only available on macOS hosts.* * npm
```sh
npm run tauri ios build
```
* yarn
```sh
yarn tauri ios build
```
* pnpm
```sh
pnpm tauri ios build
```
* deno
```sh
deno task tauri ios build
```
* bun
```sh
bun tauri ios build
```
* cargo
```sh
cargo tauri ios build
```
```plaintext
Build your app in release mode for iOS and generate IPAs. It makes use of the `build.frontendDist` property from your `tauri.conf.json` file. It also runs your `build.beforeBuildCommand` which usually builds your frontend into `build.frontendDist`.
Usage: tauri ios build [OPTIONS] [-- ...]
Arguments:
[ARGS]...
Command line arguments passed to the runner. Use `--` to explicitly mark the start of the arguments. e.g. `tauri ios build -- [runnerArgs]`
Options:
-d, --debug
Builds with the debug flag
-v, --verbose...
Enables verbose logging
-t, --target [...]
Which targets to build
[default: aarch64]
[possible values: aarch64, aarch64-sim, x86_64]
-f, --features [...]
List of cargo features to activate
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
--build-number
Build number to append to the app version
-o, --open
Open Xcode
--ci
Skip prompting for values
[env: CI=]
--export-method
Describes how Xcode should export the archive.
Use this to create a package ready for the App Store (app-store-connect option) or TestFlight (release-testing option).
[possible values: app-store-connect, release-testing, debugging]
--ignore-version-mismatches
Do not error out if a version mismatch is detected on a Tauri package.
Only use this when you are sure the mismatch is incorrectly detected as version mismatched Tauri packages can lead to unknown behavior.
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
#### `ios run` *All iOS commands are only available on macOS hosts.* * npm
```sh
npm run tauri ios run
```
* yarn
```sh
yarn tauri ios run
```
* pnpm
```sh
pnpm tauri ios run
```
* deno
```sh
deno task tauri ios run
```
* bun
```sh
bun tauri ios run
```
* cargo
```sh
cargo tauri ios run
```
```plaintext
Run your app in production mode on iOS. It makes use of the `build.frontendDist` property from your `tauri.conf.json` file. It also runs your `build.beforeBuildCommand` which usually builds your frontend into `build.frontendDist`.
Usage: tauri ios run [OPTIONS] [DEVICE] [-- ...]
Arguments:
[DEVICE]
Runs on the given device name
[ARGS]...
Command line arguments passed to the runner. Use `--` to explicitly mark the start of the arguments. e.g. `tauri android build -- [runnerArgs]`
Options:
-r, --release
Run the app in release mode
-v, --verbose...
Enables verbose logging
-f, --features [...]
List of cargo features to activate
-c, --config
JSON strings or paths to JSON, JSON5 or TOML files to merge with the default configuration file
Configurations are merged in the order they are provided, which means a particular value overwrites previous values when a config key-value pair conflicts.
Note that a platform-specific file is looked up and merged with the default file by default (tauri.macos.conf.json, tauri.linux.conf.json, tauri.windows.conf.json, tauri.android.conf.json and tauri.ios.conf.json) but you can use this for more specific use cases such as different build flavors.
--no-watch
Disable the file watcher
--additional-watch-folders
Additional paths to watch for changes
-o, --open
Open Xcode
--ignore-version-mismatches
Do not error out if a version mismatch is detected on a Tauri package.
Only use this when you are sure the mismatch is incorrectly detected as version mismatched Tauri packages can lead to unknown behavior.
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
### `migrate` * npm
```sh
npm run tauri migrate
```
* yarn
```sh
yarn tauri migrate
```
* pnpm
```sh
pnpm tauri migrate
```
* deno
```sh
deno task tauri migrate
```
* bun
```sh
bun tauri migrate
```
* cargo
```sh
cargo tauri migrate
```
```plaintext
Migrate from v1 to v2
Usage: tauri migrate [OPTIONS]
Options:
-v, --verbose... Enables verbose logging
-h, --help Print help
-V, --version Print version
```
### `info` * npm
```sh
npm run tauri info
```
* yarn
```sh
yarn tauri info
```
* pnpm
```sh
pnpm tauri info
```
* deno
```sh
deno task tauri info
```
* bun
```sh
bun tauri info
```
* cargo
```sh
cargo tauri info
```
```plaintext
Show a concise list of information about the environment, Rust, Node.js and their versions as well as a few relevant project configurations
Usage: tauri info [OPTIONS]
Options:
--interactive Interactive mode to apply automatic fixes
-v, --verbose... Enables verbose logging
-h, --help Print help
-V, --version Print version
```
### `add` * npm
```sh
npm run tauri add
```
* yarn
```sh
yarn tauri add
```
* pnpm
```sh
pnpm tauri add
```
* deno
```sh
deno task tauri add
```
* bun
```sh
bun tauri add
```
* cargo
```sh
cargo tauri add
```
```plaintext
Add a tauri plugin to the project
Usage: tauri add [OPTIONS]
Arguments:
The plugin to add
Options:
-t, --tag Git tag to use
-v, --verbose... Enables verbose logging
-r, --rev Git rev to use
-b, --branch Git branch to use
--no-fmt Don't format code with rustfmt
-h, --help Print help
-V, --version Print version
```
### `remove` * npm
```sh
npm run tauri remove
```
* yarn
```sh
yarn tauri remove
```
* pnpm
```sh
pnpm tauri remove
```
* deno
```sh
deno task tauri remove
```
* bun
```sh
bun tauri remove
```
* cargo
```sh
cargo tauri remove
```
```plaintext
Remove a tauri plugin from the project
Usage: tauri remove [OPTIONS]
Arguments:
The plugin to remove
Options:
-v, --verbose... Enables verbose logging
-h, --help Print help
-V, --version Print version
```
### `plugin` * npm
```sh
npm run tauri plugin
```
* yarn
```sh
yarn tauri plugin
```
* pnpm
```sh
pnpm tauri plugin
```
* deno
```sh
deno task tauri plugin
```
* bun
```sh
bun tauri plugin
```
* cargo
```sh
cargo tauri plugin
```
```plaintext
Manage or create Tauri plugins
Usage: tauri plugin [OPTIONS]
Commands:
new Initializes a new Tauri plugin project
init Initialize a Tauri plugin project on an existing directory
android Manage the Android project for a Tauri plugin
ios Manage the iOS project for a Tauri plugin
help Print this message or the help of the given subcommand(s)
Options:
-v, --verbose... Enables verbose logging
-h, --help Print help
-V, --version Print version
```
#### `plugin new` * npm
```sh
npm run tauri plugin new
```
* yarn
```sh
yarn tauri plugin new
```
* pnpm
```sh
pnpm tauri plugin new
```
* deno
```sh
deno task tauri plugin new
```
* bun
```sh
bun tauri plugin new
```
* cargo
```sh
cargo tauri plugin new
```
```plaintext
Initializes a new Tauri plugin project
Usage: tauri plugin new [OPTIONS]
Arguments:
Name of your Tauri plugin
Options:
--no-api
Initializes a Tauri plugin without the TypeScript API
-v, --verbose...
Enables verbose logging
--no-example
Initialize without an example project
-d, --directory
Set target directory for init
-a, --author
Author name
--android
Whether to initialize an Android project for the plugin
--ios
Whether to initialize an iOS project for the plugin
--mobile
Whether to initialize Android and iOS projects for the plugin
--ios-framework
Type of framework to use for the iOS project
[default: spm]
Possible values:
- spm: Swift Package Manager project
- xcode: Xcode project
--github-workflows
Generate github workflows
-t, --tauri-path
Path of the Tauri project to use (relative to the cwd)
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
#### `plugin init` * npm
```sh
npm run tauri plugin init
```
* yarn
```sh
yarn tauri plugin init
```
* pnpm
```sh
pnpm tauri plugin init
```
* deno
```sh
deno task tauri plugin init
```
* bun
```sh
bun tauri plugin init
```
* cargo
```sh
cargo tauri plugin init
```
```plaintext
Initialize a Tauri plugin project on an existing directory
Usage: tauri plugin init [OPTIONS] [PLUGIN_NAME]
Arguments:
[PLUGIN_NAME]
Name of your Tauri plugin. If not specified, it will be inferred from the current directory
Options:
--no-api
Initializes a Tauri plugin without the TypeScript API
-v, --verbose...
Enables verbose logging
--no-example
Initialize without an example project
-d, --directory
Set target directory for init
[default: /opt/build/repo/packages/cli-generator]
-a, --author
Author name
--android
Whether to initialize an Android project for the plugin
--ios
Whether to initialize an iOS project for the plugin
--mobile
Whether to initialize Android and iOS projects for the plugin
--ios-framework
Type of framework to use for the iOS project
[default: spm]
Possible values:
- spm: Swift Package Manager project
- xcode: Xcode project
--github-workflows
Generate github workflows
-t, --tauri-path
Path of the Tauri project to use (relative to the cwd)
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
#### `plugin android` * npm
```sh
npm run tauri plugin android
```
* yarn
```sh
yarn tauri plugin android
```
* pnpm
```sh
pnpm tauri plugin android
```
* deno
```sh
deno task tauri plugin android
```
* bun
```sh
bun tauri plugin android
```
* cargo
```sh
cargo tauri plugin android
```
```plaintext
Manage the Android project for a Tauri plugin
Usage: tauri plugin android [OPTIONS]
Commands:
init Initializes the Android project for an existing Tauri plugin
help Print this message or the help of the given subcommand(s)
Options:
-v, --verbose... Enables verbose logging
-h, --help Print help
-V, --version Print version
```
##### `plugin android init` * npm
```sh
npm run tauri plugin android init
```
* yarn
```sh
yarn tauri plugin android init
```
* pnpm
```sh
pnpm tauri plugin android init
```
* deno
```sh
deno task tauri plugin android init
```
* bun
```sh
bun tauri plugin android init
```
* cargo
```sh
cargo tauri plugin android init
```
```plaintext
Initializes the Android project for an existing Tauri plugin
Usage: tauri plugin android init [OPTIONS] [PLUGIN_NAME]
Arguments:
[PLUGIN_NAME] Name of your Tauri plugin. Must match the current plugin's name. If not specified, it will be inferred from the current directory
Options:
-o, --out-dir The output directory [default: /opt/build/repo/packages/cli-generator]
-v, --verbose... Enables verbose logging
-h, --help Print help
-V, --version Print version
```
#### `plugin ios` * npm
```sh
npm run tauri plugin ios
```
* yarn
```sh
yarn tauri plugin ios
```
* pnpm
```sh
pnpm tauri plugin ios
```
* deno
```sh
deno task tauri plugin ios
```
* bun
```sh
bun tauri plugin ios
```
* cargo
```sh
cargo tauri plugin ios
```
```plaintext
Manage the iOS project for a Tauri plugin
Usage: tauri plugin ios [OPTIONS]
Commands:
init Initializes the iOS project for an existing Tauri plugin
help Print this message or the help of the given subcommand(s)
Options:
-v, --verbose... Enables verbose logging
-h, --help Print help
-V, --version Print version
```
##### `plugin ios init` * npm
```sh
npm run tauri plugin ios init
```
* yarn
```sh
yarn tauri plugin ios init
```
* pnpm
```sh
pnpm tauri plugin ios init
```
* deno
```sh
deno task tauri plugin ios init
```
* bun
```sh
bun tauri plugin ios init
```
* cargo
```sh
cargo tauri plugin ios init
```
```plaintext
Initializes the iOS project for an existing Tauri plugin
Usage: tauri plugin ios init [OPTIONS] [PLUGIN_NAME]
Arguments:
[PLUGIN_NAME]
Name of your Tauri plugin. Must match the current plugin's name. If not specified, it will be inferred from the current directory
Options:
-o, --out-dir
The output directory
[default: /opt/build/repo/packages/cli-generator]
-v, --verbose...
Enables verbose logging
--ios-framework
Type of framework to use for the iOS project
[default: spm]
Possible values:
- spm: Swift Package Manager project
- xcode: Xcode project
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
```
### `icon` * npm
```sh
npm run tauri icon
```
* yarn
```sh
yarn tauri icon
```
* pnpm
```sh
pnpm tauri icon
```
* deno
```sh
deno task tauri icon
```
* bun
```sh
bun tauri icon
```
* cargo
```sh
cargo tauri icon
```
```plaintext
Generate various icons for all major platforms
Usage: tauri icon [OPTIONS] [INPUT]
Arguments:
[INPUT]
Path to the source icon (squared PNG or SVG file with transparency) or a manifest file.
The manifest file is a JSON file with the following structure: { "default": "app-icon.png", "bg_color": "#fff", "android_bg": "app-icon-bg.png", "android_fg": "app-icon-fg.png", "android_fg_scale": 85, "android_monochrome": "app-icon-monochrome.png" }
All file paths defined in the manifest JSON are relative to the manifest file path.
Only the `default` manifest property is required.
The `bg_color` manifest value overwrites the `--ios-color` option if set.
[default: ./app-icon.png]
Options:
-o, --output