# Table of Contents - [Tauri 2.0 | Tauri](#tauri-2-0-tauri) - [What is Tauri? | Tauri](#what-is-tauri-tauri) - [Blog | Tauri](#blog-tauri) - [Capability | Tauri](#capability-tauri) - [Tauri Core Ecosystem Releases | Tauri](#tauri-core-ecosystem-releases-tauri) - [Prerequisites | Tauri](#prerequisites-tauri) - [Project Structure | Tauri](#project-structure-tauri) - [Tauri Board Elections 2025 | Tauri](#tauri-board-elections-2025-tauri) - [Tauri Board Elections 2024 | Tauri](#tauri-board-elections-2024-tauri) - [Rust Security Advisory CVE-2024-24576 | Tauri](#rust-security-advisory-cve-2024-24576-tauri) - [Announcing Tauri 1.6.0 | Tauri](#announcing-tauri-1-6-0-tauri) - [Unknown](#unknown) - [Tauri Programme Turns 1 and Board Elections | Tauri](#tauri-programme-turns-1-and-board-elections-tauri) - [Announcing tauri-egui 0.1.0 | Tauri](#announcing-tauri-egui-0-1-0-tauri) - [Announcing Tauri 1.1.0 | Tauri](#announcing-tauri-1-1-0-tauri) - [Tauri Board Elections & Governance Update | Tauri](#tauri-board-elections-governance-update-tauri) - [create-tauri-app Version 3 Released | Tauri](#create-tauri-app-version-3-released-tauri) - [Tauri Community Growth & Feedback | Tauri](#tauri-community-growth-feedback-tauri) - [Blog | Tauri](#blog-tauri) - [@tauri-apps/plugin-sql | Tauri](#-tauri-apps-plugin-sql-tauri) - [@tauri-apps/plugin-autostart | Tauri](#-tauri-apps-plugin-autostart-tauri) - [@tauri-apps/plugin-haptics | Tauri](#-tauri-apps-plugin-haptics-tauri) - [@tauri-apps/plugin-global-shortcut | Tauri](#-tauri-apps-plugin-global-shortcut-tauri) - [@tauri-apps/plugin-barcode-scanner | Tauri](#-tauri-apps-plugin-barcode-scanner-tauri) - [@tauri-apps/plugin-clipboard-manager | Tauri](#-tauri-apps-plugin-clipboard-manager-tauri) - [@tauri-apps/plugin-biometric | Tauri](#-tauri-apps-plugin-biometric-tauri) - [@tauri-apps/plugin-geolocation | Tauri](#-tauri-apps-plugin-geolocation-tauri) - [@tauri-apps/plugin-window-state | Tauri](#-tauri-apps-plugin-window-state-tauri) - [@tauri-apps/plugin-process | Tauri](#-tauri-apps-plugin-process-tauri) - [@tauri-apps/plugin-os | Tauri](#-tauri-apps-plugin-os-tauri) - [mocks | Tauri](#mocks-tauri) - [event | Tauri](#event-tauri) - [@tauri-apps/plugin-deep-link | Tauri](#-tauri-apps-plugin-deep-link-tauri) - [@tauri-apps/plugin-http | Tauri](#-tauri-apps-plugin-http-tauri) - [@tauri-apps/plugin-positioner | Tauri](#-tauri-apps-plugin-positioner-tauri) - [@tauri-apps/plugin-nfc | Tauri](#-tauri-apps-plugin-nfc-tauri) - [@tauri-apps/plugin-opener | Tauri](#-tauri-apps-plugin-opener-tauri) - [@tauri-apps/plugin-upload | Tauri](#-tauri-apps-plugin-upload-tauri) - [@tauri-apps/plugin-dialog | Tauri](#-tauri-apps-plugin-dialog-tauri) - [@tauri-apps/plugin-websocket | Tauri](#-tauri-apps-plugin-websocket-tauri) - [@tauri-apps/plugin-cli | Tauri](#-tauri-apps-plugin-cli-tauri) - [@tauri-apps/plugin-updater | Tauri](#-tauri-apps-plugin-updater-tauri) - [@tauri-apps/plugin-log | Tauri](#-tauri-apps-plugin-log-tauri) - [@tauri-apps/plugin-stronghold | Tauri](#-tauri-apps-plugin-stronghold-tauri) - [@tauri-apps/plugin-store | Tauri](#-tauri-apps-plugin-store-tauri) - [@tauri-apps/plugin-shell | Tauri](#-tauri-apps-plugin-shell-tauri) - [@tauri-apps/plugin-notification | Tauri](#-tauri-apps-plugin-notification-tauri) - [path | Tauri](#path-tauri) - [@tauri-apps/plugin-fs | Tauri](#-tauri-apps-plugin-fs-tauri) --- # Tauri 2.0 | Tauri [Skip to content](https://tauri.app/#_top) Tauri 2.0 ========= Create small, fast, secure, cross-platform applications [Get started](https://tauri.app/start/) [Tauri 1.0 Documentation](https://v1.tauri.app/) Create a Project * [Bash](https://tauri.app/#tab-panel-588) * [PowerShell](https://tauri.app/#tab-panel-589) * [Fish](https://tauri.app/#tab-panel-590) * [npm](https://tauri.app/#tab-panel-591) * [Yarn](https://tauri.app/#tab-panel-592) * [pnpm](https://tauri.app/#tab-panel-593) * [deno](https://tauri.app/#tab-panel-594) * [bun](https://tauri.app/#tab-panel-595) * [Cargo](https://tauri.app/#tab-panel-596) sh <(curl https://create.tauri.app/sh) irm https://create.tauri.app/ps | iex sh (curl -sSL https://create.tauri.app/sh | psub) npm create tauri-app@latest yarn create tauri-app pnpm create tauri-app deno run -A npm:create-tauri-app bun create tauri-app cargo install create-tauri-app --lockedcargo create-tauri-app Frontend Independent Bring your existing web stack to Tauri or start that new dream project. Tauri supports any frontend framework so you don’t need to change your stack. Cross Platform Build your app for Linux, macOS, Windows, Android and iOS - all from a single codebase. Write your frontend in JavaScript, application logic in Rust, and integrate deep into the system with Swift and Kotlin. Maximum Security Front-of-mind for the Tauri Team that drives our highest priorities and biggest innovations. Minimal Size By using the OS’s native web renderer, the size of a Tauri app can be little as 600KB. ### Supported by [](https://crabnebula.dev/) #### Open Collective Sponsors [\ \ 1Password](https://1password.com/?ref=tauri.app&utm_source=tauri.app) [](https://www.vpsserver.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/lightfinder?ref=tauri.app&utm_source=tauri.app) [](https://keygen.sh/?ref=tauri.app&utm_source=tauri.app) [](https://about.sourcegraph.com/?ref=tauri.app&utm_source=tauri.app) [](https://github.com/nothingismagick?ref=tauri.app&utm_source=tauri.app) [](https://getrecut.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/phearzero?ref=tauri.app&utm_source=tauri.app) [](https://mintter.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/matt-campbell1?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/thad-guidry1?ref=tauri.app&utm_source=tauri.app) [](https://www.improving.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/user-44f56a2f?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/pierre-de-la-martiniere?ref=tauri.app&utm_source=tauri.app) [](https://www.futo.org/?ref=tauri.app&utm_source=tauri.app) [](https://coparse.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/rick-richardson?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/raffi-minassian1?ref=tauri.app&utm_source=tauri.app) [](https://httptoolkit.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/user-39d3e8eb?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/hidekazu-kobayashi?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/aaron-campbell?ref=tauri.app&utm_source=tauri.app) [](https://www.controla.ai/?ref=tauri.app&utm_source=tauri.app) [](https://jamiepine.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/alex-merced?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/james-bartlett1?ref=tauri.app&utm_source=tauri.app) [](https://trailmarks.co/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/brian-derocher?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/luke-parker?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/guest-7ba71ea5?ref=tauri.app&utm_source=tauri.app) [](https://rabbit-company.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/jun-hashimoto?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/robin-van-boven?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/victorhqc?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/clemens-koza?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/martin-kramer?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/harsha-teja-kanna?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/guest-041a692a?ref=tauri.app&utm_source=tauri.app) [](https://commandline.be/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/noah-corona1?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/user-76eb8887?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/grandvin?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/danny-williams?ref=tauri.app&utm_source=tauri.app) [](https://www.nikolaosmargaris.gr/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/bitcoin-contributions?ref=tauri.app&utm_source=tauri.app) [](https://ligature.dev/?ref=tauri.app&utm_source=tauri.app) [](https://www.ethicalads.io/?ref=tauri.app&utm_source=tauri.app) [](https://www.k3th3r.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/user-d398d7c1?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/guest-1092fa70?ref=tauri.app&utm_source=tauri.app) [](https://pqina.nl/pintura/?ref=tauri.app&utm_source=tauri.app) [](https://www.nonogramonline.org/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/user-146594?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/braden-neufeld?ref=tauri.app&utm_source=tauri.app) [](https://www.archonsystems.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/seth-lowie?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/jacob7?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/pochoclin?ref=tauri.app&utm_source=tauri.app) [](https://kobra.rocks/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/florian-neumann?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/christoph-karrer-hoffmann?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/thong-tran?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/darignac?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/nelson6?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/secdude?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/rcollins?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/seokju-na1?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/fritz-rainer-doebbelin?ref=tauri.app&utm_source=tauri.app) [](https://twitter.com/DarrylDSpencer?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/user-72b0b300?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/kuma?ref=tauri.app&utm_source=tauri.app) [](http://praxr.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/ken2?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/simon15?ref=tauri.app&utm_source=tauri.app) [](https://github.com/alexeden?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/jan50?ref=tauri.app&utm_source=tauri.app) [](https://sentry.io/welcome/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/james-carlson?ref=tauri.app&utm_source=tauri.app) [](https://www.christianalfoni.com/?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/arturo-jose-perez-verdu?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/tomita?ref=tauri.app&utm_source=tauri.app) [](https://www.justindorfman.com/?ref=tauri.app&utm_source=tauri.app) [](https://rxdb.info/?utm_source=opencollective&utm_medium=banner&utm_campaign=opencollective_sponsor&utm_content=logo?ref=tauri.app&utm_source=tauri.app) [](https://opencollective.com/ivan13?ref=tauri.app&utm_source=tauri.app) [](https://proxyman.com/?ref=tauri.app&utm_source=tauri.app) #### GitHub Sponsors [](https://github.com/3colorr) [](https://github.com/ahkohd) [](https://github.com/Akmot9) [](https://github.com/alexeden) [](https://github.com/alprimak) [](https://github.com/and-cesbo) [](https://github.com/austenc) [](https://github.com/BE-CH) [](https://github.com/ciscorn) [](https://github.com/ErikBjare) [](https://github.com/fastrepl) [](https://github.com/filiptronicek) [](https://github.com/gitbutlerapp) [](https://github.com/hobbestherat) [](https://github.com/Jesper-Andersen) [](https://github.com/jonahgeorge) [](https://github.com/kibertoad) [](https://github.com/mantreshkhurana) [](https://github.com/marcelgundermann) [](https://github.com/MindWorkAI) [](https://github.com/mrHaiker) [](https://github.com/nelsontkq) [](https://github.com/nineclue) [](https://github.com/nothingismagick) [](https://github.com/samirdjelal) [](https://github.com/scyberlife) [](https://github.com/sean-hale-dev) [](https://github.com/sedrakpc) [](https://github.com/Sir-Thom) [](https://github.com/SlawomirBuszko) [](https://github.com/stancl) [](https://github.com/syntaxfm) [](https://github.com/tibordp) [](https://github.com/tonur) [](https://github.com/utilForever) [](https://github.com/yannkost) ### Website powered by [](https://www.meilisearch.com/) [](https://netlify.com/) * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # What is Tauri? | Tauri [Skip to content](https://tauri.app/start/#_top) What is Tauri? ============== Tauri is a framework for building tiny, fast binaries for all major desktop and mobile platforms. Developers can integrate any frontend framework that compiles to HTML, JavaScript, and CSS for building their user experience while leveraging languages such as Rust, Swift, and Kotlin for backend logic when needed. Get started building with [`create-tauri-app`](https://github.com/tauri-apps/create-tauri-app) by using one of the below commands. Be sure to follow the [prerequisites guide](https://tauri.app/start/prerequisites/) to install all of the dependencies required by Tauri. For a more detailed walk through, see [Create a Project](https://tauri.app/start/create-project/#using-create-tauri-app) * [Bash](https://tauri.app/start/#tab-panel-1654) * [PowerShell](https://tauri.app/start/#tab-panel-1655) * [Fish](https://tauri.app/start/#tab-panel-1656) * [npm](https://tauri.app/start/#tab-panel-1657) * [Yarn](https://tauri.app/start/#tab-panel-1658) * [pnpm](https://tauri.app/start/#tab-panel-1659) * [deno](https://tauri.app/start/#tab-panel-1660) * [bun](https://tauri.app/start/#tab-panel-1661) * [Cargo](https://tauri.app/start/#tab-panel-1662) sh <(curl https://create.tauri.app/sh) irm https://create.tauri.app/ps | iex sh (curl -sSL https://create.tauri.app/sh | psub) npm create tauri-app@latest yarn create tauri-app pnpm create tauri-app deno run -A npm:create-tauri-app bun create tauri-app cargo install create-tauri-app --lockedcargo create-tauri-app After you’ve created your first app, take a look at [Project Structure](https://tauri.app/start/project-structure/) to understand what each file does. Or explore the project setups and features from the examples ([tauri](https://github.com/tauri-apps/tauri/tree/dev/examples) | [plugins-workspace](https://github.com/tauri-apps/plugins-workspace/tree/v2/examples/api) ) [Why Tauri?](https://tauri.app/start/#why-tauri) ------------------------------------------------- [Section titled “Why Tauri?”](https://tauri.app/start/#why-tauri) Tauri has 3 main advantages for developers to build upon: * Secure foundation for building apps * Smaller bundle size by using the system’s native webview * Flexibility for developers to use any frontend and bindings for multiple languages Learn more about the Tauri philosophy in the [Tauri 1.0 blog post](https://tauri.app/blog/tauri-1-0/) . ### [Secure Foundation](https://tauri.app/start/#secure-foundation) [Section titled “Secure Foundation”](https://tauri.app/start/#secure-foundation) By being built on Rust, Tauri is able to take advantage of the memory, thread, and type-safety offered by Rust. Apps built on Tauri can automatically get those benefits even without needing to be developed by Rust experts. Tauri also undergoes a security audit for major and minor releases. This not only covers code in the Tauri organization, but also for upstream dependencies that Tauri relies on. Of course this doesn’t mitigate all risks, but it provides a solid foundation for developers to build on top of. Read the [Tauri security policy](https://github.com/tauri-apps/tauri/security/policy) and the [Tauri 2.0 audit report](https://github.com/tauri-apps/tauri/blob/dev/audits/Radically_Open_Security-v2-report.pdf) . ### [Smaller App Size](https://tauri.app/start/#smaller-app-size) [Section titled “Smaller App Size”](https://tauri.app/start/#smaller-app-size) Tauri apps take advantage of the web view already available on every user’s system. A Tauri app only contains the code and assets specific for that app and doesn’t need to bundle a browser engine with every app. This means that a minimal Tauri app can be less than 600KB in size. Learn more about creating optimized apps in the [App Size concept](https://tauri.app/concept/size/) . ### [Flexible Architecture](https://tauri.app/start/#flexible-architecture) [Section titled “Flexible Architecture”](https://tauri.app/start/#flexible-architecture) Since Tauri uses web technologies that means that virtually any frontend framework is compatible with Tauri. The [Frontend Configuration guide](https://tauri.app/start/frontend/) contains common configurations for popular frontend frameworks. Bindings between JavaScript and Rust are available to developers using the `invoke` function in JavaScript and Swift and Kotlin bindings are available for [Tauri Plugins](https://tauri.app/develop/plugins/) . [TAO](https://github.com/tauri-apps/tao) is responsible for Tauri window creation and [WRY](https://github.com/tauri-apps/wry) is responsible for web view rendering. These are libraries maintained by Tauri and can be consumed directly if deeper system integration is required outside of what Tauri exposes. In addition, Tauri maintains a number of plugins to extend what core Tauri exposes. You can find those plugins alongside those provided by the community in the [Plugins section](https://tauri.app/plugin/) . * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # Blog | Tauri [Skip to content](https://tauri.app/blog/#_top) Blog ==== As we continue to be amazed with all the applications you’ve created with Tauri v2, it’s been 4 years that Tauri has become a Programme within The Commons Conservancy! This means we’re preparing for a new round of Tauri Board Director elections for the next term. The first look of the integration with Verso, a browser based on Servo Tauri 2.0 stable is released! Tauri 2.0 is on track to stable and now enters the release candidate phase. Read more about breaking changes and our plans for stable. The Tauri team is happy to announce the 1.7.0 release. * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # Capability | Tauri [Skip to content](https://tauri.app/reference/acl/capability/#_top) 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](https://tauri.app/reference/acl/capability/#example) [Section titled “Example”](https://tauri.app/reference/acl/capability/#example) { "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](https://tauri.app/reference/acl/capability/#description) [Section titled “description”](https://tauri.app/reference/acl/capability/#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](https://tauri.app/reference/acl/capability/#example-1) [Section titled “Example”](https://tauri.app/reference/acl/capability/#example-1) 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](https://tauri.app/reference/acl/capability/#identifier) [Section titled “identifier”](https://tauri.app/reference/acl/capability/#identifier) `string` Identifier of the capability. #### [Example](https://tauri.app/reference/acl/capability/#example-2) [Section titled “Example”](https://tauri.app/reference/acl/capability/#example-2) `main-user-files-write` ### [local](https://tauri.app/reference/acl/capability/#local) [Section titled “local”](https://tauri.app/reference/acl/capability/#local) `boolean` Whether this capability is enabled for local app URLs or not. Defaults to `true`. **Default**: `true` ### [permissions](https://tauri.app/reference/acl/capability/#permissions) [Section titled “permissions”](https://tauri.app/reference/acl/capability/#permissions) [`PermissionEntry`](https://tauri.app/reference/acl/capability/#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](https://tauri.app/reference/acl/capability/#example-3) [Section titled “Example”](https://tauri.app/reference/acl/capability/#example-3) [ "core:default", "shell:allow-open", "dialog:open", { "identifier": "fs:allow-write-text-file", "allow": [{ "path": "$HOME/test.txt" }] }] ### [platforms](https://tauri.app/reference/acl/capability/#platforms) [Section titled “platforms”](https://tauri.app/reference/acl/capability/#platforms) [`Target`](https://tauri.app/reference/acl/capability/#target) \[\] | `null` Limit which target platforms this capability applies to. By default all platforms are targeted. #### [Example](https://tauri.app/reference/acl/capability/#example-4) [Section titled “Example”](https://tauri.app/reference/acl/capability/#example-4) `["macOS","windows"]` ### [remote](https://tauri.app/reference/acl/capability/#remote) [Section titled “remote”](https://tauri.app/reference/acl/capability/#remote) [`CapabilityRemote`](https://tauri.app/reference/acl/capability/#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. #### [Example](https://tauri.app/reference/acl/capability/#example-5) [Section titled “Example”](https://tauri.app/reference/acl/capability/#example-5) { "urls": ["https://*.mydomain.dev"]} ### [webviews](https://tauri.app/reference/acl/capability/#webviews) [Section titled “webviews”](https://tauri.app/reference/acl/capability/#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](https://tauri.app/reference/acl/capability/#example-6) [Section titled “Example”](https://tauri.app/reference/acl/capability/#example-6) `["sub-webview-one", "sub-webview-two"]` ### [windows](https://tauri.app/reference/acl/capability/#windows) [Section titled “windows”](https://tauri.app/reference/acl/capability/#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](https://tauri.app/reference/acl/capability/#example-7) [Section titled “Example”](https://tauri.app/reference/acl/capability/#example-7) `["main"]` [Definitions](https://tauri.app/reference/acl/capability/#definitions) ----------------------------------------------------------------------- [Section titled “Definitions”](https://tauri.app/reference/acl/capability/#definitions) ### [CapabilityRemote](https://tauri.app/reference/acl/capability/#capabilityremote) [Section titled “CapabilityRemote”](https://tauri.app/reference/acl/capability/#capabilityremote) Configuration for remote URLs that are associated with the capability. **Object Properties**: * urls (required) ##### [urls](https://tauri.app/reference/acl/capability/#urls) [Section titled “urls”](https://tauri.app/reference/acl/capability/#urls) `string`\[\] Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/) . ###### [Examples](https://tauri.app/reference/acl/capability/#examples) [Section titled “Examples”](https://tauri.app/reference/acl/capability/#examples) * “https://\*.mydomain.dev”: allows subdomains of mydomain.dev * “[https://mydomain.dev/api/](https://mydomain.dev/api/) \*”: allows any subpath of mydomain.dev/api ### [Identifier](https://tauri.app/reference/acl/capability/#identifier-1) [Section titled “Identifier”](https://tauri.app/reference/acl/capability/#identifier-1) `string` ### [Number](https://tauri.app/reference/acl/capability/#number) [Section titled “Number”](https://tauri.app/reference/acl/capability/#number) **Any of the following**: * `integer` formatted as `int64` Represents an \[`i64`\]. * `number` formatted as `double` Represents a \[`f64`\]. A valid ACL number. ### [PermissionEntry](https://tauri.app/reference/acl/capability/#permissionentry) [Section titled “PermissionEntry”](https://tauri.app/reference/acl/capability/#permissionentry) **Any of the following**: * [`Identifier`](https://tauri.app/reference/acl/capability/#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`](https://tauri.app/reference/acl/capability/#value) \[\] | `null` Data that defines what is allowed by the scope. ##### deny [`Value`](https://tauri.app/reference/acl/capability/#value) \[\] | `null` Data that defines what is denied by the scope. This should be prioritized by validation logic. ##### identifier [`Identifier`](https://tauri.app/reference/acl/capability/#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](https://tauri.app/reference/acl/capability/#target) [Section titled “Target”](https://tauri.app/reference/acl/capability/#target) **One of the following**: * `"macOS"` MacOS. * `"windows"` Windows. * `"linux"` Linux. * `"android"` Android. * `"iOS"` iOS. Platform target. ### [Value](https://tauri.app/reference/acl/capability/#value) [Section titled “Value”](https://tauri.app/reference/acl/capability/#value) **Any of the following**: * `null` Represents a null JSON value. * `boolean` Represents a \[`bool`\]. * [`Number`](https://tauri.app/reference/acl/capability/#number) Represents a valid ACL \[`Number`\]. * `string` Represents a \[`String`\]. * [`Value`](https://tauri.app/reference/acl/capability/#value) \[\] Represents a list of other \[`Value`\]s. * Represents a map of \[`String`\] keys to \[`Value`\]s. **Allows additional properties**: [`Value`](https://tauri.app/reference/acl/capability/#value) All supported ACL values. * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # Tauri Core Ecosystem Releases | Tauri [Skip to content](https://tauri.app/release/#_top) Tauri Core Ecosystem Releases ============================= [tauri](https://tauri.app/release/tauri/v2.9.5/) v2.9.5 [@tauri-apps/api](https://tauri.app/release/@tauri-apps/api/v2.9.1/) v2.9.1 [tauri-cli (Rust)](https://tauri.app/release/tauri-cli/v2.9.6/) v2.9.6 [@tauri-apps/cli (JavaScript)](https://tauri.app/release/@tauri-apps/cli/v2.9.6/) v2.9.6 [tauri-bundler](https://tauri.app/release/tauri-bundler/v2.7.5/) v2.7.5 [wry](https://tauri.app/release/wry/v0.54.1/) v0.54.1 [tao](https://tauri.app/release/tao/v0.34.5/) v0.34.5 * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # Prerequisites | Tauri [Skip to content](https://tauri.app/start/prerequisites/#_top) Prerequisites ============= In order to get started building your project with Tauri you’ll first need to install a few dependencies: 1. [System Dependencies](https://tauri.app/start/prerequisites/#system-dependencies) 2. [Rust](https://tauri.app/start/prerequisites/#rust) 3. [Configure for Mobile Targets](https://tauri.app/start/prerequisites/#configure-for-mobile-targets) (only required if developing for mobile) [System Dependencies](https://tauri.app/start/prerequisites/#system-dependencies) ---------------------------------------------------------------------------------- [Section titled “System Dependencies”](https://tauri.app/start/prerequisites/#system-dependencies) Follow the link to get started for your respective operating system: * [Linux](https://tauri.app/start/prerequisites/#linux) (see below for specific distributions) * [macOS Catalina (10.15) and later](https://tauri.app/start/prerequisites/#macos) * [Windows 7 and later](https://tauri.app/start/prerequisites/#windows) ### [Linux](https://tauri.app/start/prerequisites/#linux) [Section titled “Linux”](https://tauri.app/start/prerequisites/#linux) Tauri requires various system dependencies for development on Linux. These may be different depending on your distribution but we’ve included some popular distributions below to help you get setup. * [Debian](https://tauri.app/start/prerequisites/#tab-panel-1663) * [Arch](https://tauri.app/start/prerequisites/#tab-panel-1664) * [Fedora](https://tauri.app/start/prerequisites/#tab-panel-1665) * [Gentoo](https://tauri.app/start/prerequisites/#tab-panel-1666) * [OSTree](https://tauri.app/start/prerequisites/#tab-panel-1667) * [openSUSE](https://tauri.app/start/prerequisites/#tab-panel-1668) * [Alpine](https://tauri.app/start/prerequisites/#tab-panel-1669) * [NixOS](https://tauri.app/start/prerequisites/#tab-panel-1670) sudo apt updatesudo apt install libwebkit2gtk-4.1-dev \ build-essential \ curl \ wget \ file \ libxdo-dev \ libssl-dev \ libayatana-appindicator3-dev \ librsvg2-dev sudo pacman -Syusudo pacman -S --needed \ webkit2gtk-4.1 \ base-devel \ curl \ wget \ file \ openssl \ appmenu-gtk-module \ libappindicator-gtk3 \ librsvg \ xdotool sudo dnf check-updatesudo dnf install webkit2gtk4.1-devel \ openssl-devel \ curl \ wget \ file \ libappindicator-gtk3-devel \ librsvg2-devel \ libxdo-develsudo dnf group install "c-development" sudo emerge --ask \ net-libs/webkit-gtk:4.1 \ dev-libs/libappindicator \ net-misc/curl \ net-misc/wget \ sys-apps/file sudo rpm-ostree install webkit2gtk4.1-devel \ openssl-devel \ curl \ wget \ file \ libappindicator-gtk3-devel \ librsvg2-devel \ libxdo-devel \ gcc \ gcc-c++ \ makesudo systemctl reboot sudo zypper upsudo zypper in webkit2gtk3-devel \ libopenssl-devel \ curl \ wget \ file \ libappindicator3-1 \ librsvg-develsudo zypper in -t pattern devel_basis sudo apk add \ build-base \ webkit2gtk-4.1-dev \ curl \ wget \ file \ openssl \ libayatana-appindicator-dev \ librsvg > Note: Alpine Linux containers don’t include any fonts by default. To ensure text renders correctly in your Tauri app, install at least one font package (for example, `font-dejavu` ). If your distribution isn’t included above then you may want to check [Awesome Tauri on GitHub](https://github.com/tauri-apps/awesome-tauri#guides) to see if a guide has been created. Next: [Install Rust](https://tauri.app/start/prerequisites/#rust) ### [macOS](https://tauri.app/start/prerequisites/#macos) [Section titled “macOS”](https://tauri.app/start/prerequisites/#macos) Tauri uses [Xcode](https://developer.apple.com/xcode/resources/) and various macOS and iOS development dependencies. Download and install Xcode from one of the following places: * [Mac App Store](https://apps.apple.com/gb/app/xcode/id497799835?mt=12) * [Apple Developer website](https://developer.apple.com/xcode/resources/) . Be sure to launch Xcode after installing so that it can finish setting up. Only developing for desktop targets? If you’re only planning to develop desktop apps and not targeting iOS then you can install Xcode Command Line Tools instead: xcode-select --install Next: [Install Rust](https://tauri.app/start/prerequisites/#rust) ### [Windows](https://tauri.app/start/prerequisites/#windows) [Section titled “Windows”](https://tauri.app/start/prerequisites/#windows) Tauri uses the Microsoft C++ Build Tools for development as well as Microsoft Edge WebView2. These are both required for development on Windows. Follow the steps below to install the required dependencies. #### [Microsoft C++ Build Tools](https://tauri.app/start/prerequisites/#microsoft-c-build-tools) [Section titled “Microsoft C++ Build Tools”](https://tauri.app/start/prerequisites/#microsoft-c-build-tools) 1. Download the [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) installer and open it to begin installation. 2. During installation check the “Desktop development with C++” option.  Next: [Install WebView2](https://tauri.app/start/prerequisites/#webview2) . #### [WebView2](https://tauri.app/start/prerequisites/#webview2) [Section titled “WebView2”](https://tauri.app/start/prerequisites/#webview2) Tauri uses Microsoft Edge WebView2 to render content on Windows. Install WebView2 by visiting the [WebView2 Runtime download section](https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section) . Download the “Evergreen Bootstrapper” and install it. Next: [Check VBSCRIPT](https://tauri.app/start/prerequisites/#vbscript-for-msi-installers) #### [VBSCRIPT (for MSI installers)](https://tauri.app/start/prerequisites/#vbscript-for-msi-installers) [Section titled “VBSCRIPT (for MSI installers)”](https://tauri.app/start/prerequisites/#vbscript-for-msi-installers) Building MSI packages on Windows requires the VBSCRIPT optional feature to be enabled. This feature is enabled by default on most Windows installations, but may have been disabled on some systems. If you encounter errors like `failed to run light.exe` when building MSI packages, you may need to enable the VBSCRIPT feature: 1. Open **Settings** → **Apps** → **Optional features** → **More Windows features** 2. Locate **VBSCRIPT** in the list and ensure it’s checked 3. Click **Next** and restart your computer if prompted **Note:** VBSCRIPT is currently enabled by default on most Windows installations, but is [being deprecated](https://techcommunity.microsoft.com/blog/windows-itpro-blog/vbscript-deprecation-timelines-and-next-steps/4148301) and may be disabled in future Windows versions. Next: [Install Rust](https://tauri.app/start/prerequisites/#rust) [Rust](https://tauri.app/start/prerequisites/#rust) ---------------------------------------------------- [Section titled “Rust”](https://tauri.app/start/prerequisites/#rust) Tauri is built with [Rust](https://www.rust-lang.org/) and requires it for development. Install Rust using one of following methods. You can view more installation methods at [https://www.rust-lang.org/tools/install](https://www.rust-lang.org/tools/install) . * [Linux and macOS](https://tauri.app/start/prerequisites/#tab-panel-1671) * [Windows](https://tauri.app/start/prerequisites/#tab-panel-1672) Install via [`rustup`](https://github.com/rust-lang/rustup) using the following command: curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh Visit [https://www.rust-lang.org/tools/install](https://www.rust-lang.org/tools/install) to install `rustup`. Alternatively, you can use `winget` to install rustup using the following command in PowerShell: winget install --id Rustlang.Rustup **Be sure to restart your Terminal (and in some cases your system) for the changes to take affect.** Next: [Configure for Mobile Targets](https://tauri.app/start/prerequisites/#configure-for-mobile-targets) if you’d like to build for Android and iOS, or, if you’d like to use a JavaScript framework, [install Node](https://tauri.app/start/prerequisites/#nodejs) . Otherwise [Create a Project](https://tauri.app/start/create-project/) . [Node.js](https://tauri.app/start/prerequisites/#nodejs) --------------------------------------------------------- [Section titled “Node.js”](https://tauri.app/start/prerequisites/#nodejs) 1. Go to the [Node.js website](https://nodejs.org/) , download the Long Term Support (LTS) version and install it. 2. Check if Node was successfully installed by running: node -v# v20.10.0npm -v# 10.2.3 It’s important to restart your Terminal to ensure it recognizes the new installation. In some cases, you might need to restart your computer. While npm is the default package manager for Node.js, you can also use others like pnpm or yarn. To enable these, run `corepack enable` in your Terminal. This step is optional and only needed if you prefer using a package manager other than npm. Next: [Configure for Mobile Targets](https://tauri.app/start/prerequisites/#configure-for-mobile-targets) or [Create a project](https://tauri.app/start/create-project/) . [Configure for Mobile Targets](https://tauri.app/start/prerequisites/#configure-for-mobile-targets) ---------------------------------------------------------------------------------------------------- [Section titled “Configure for Mobile Targets”](https://tauri.app/start/prerequisites/#configure-for-mobile-targets) If you’d like to target your app for Android or iOS then there are a few additional dependencies that you need to install: * [Android](https://tauri.app/start/prerequisites/#android) * [iOS](https://tauri.app/start/prerequisites/#ios) ### [Android](https://tauri.app/start/prerequisites/#android) [Section titled “Android”](https://tauri.app/start/prerequisites/#android) 1. Download and install [Android Studio from the Android Developers website](https://developer.android.com/studio) 2. Set the `JAVA_HOME` environment variable: * [Linux](https://tauri.app/start/prerequisites/#tab-panel-1673) * [macOS](https://tauri.app/start/prerequisites/#tab-panel-1674) * [Windows](https://tauri.app/start/prerequisites/#tab-panel-1675) export JAVA_HOME=/opt/android-studio/jbr export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home" [System.Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Android\Android Studio\jbr", "User") 3. Use the SDK Manager in Android Studio to install the following: * Android SDK Platform * Android SDK Platform-Tools * NDK (Side by side) * Android SDK Build-Tools * Android SDK Command-line Tools Selecting “Show Package Details” in the SDK Manager enables the installation of older package versions. Only install older versions if necessary, as they may introduce compatibility issues or security risks. 4. Set `ANDROID_HOME` and `NDK_HOME` environment variables. * [Linux](https://tauri.app/start/prerequisites/#tab-panel-1676) * [macOS](https://tauri.app/start/prerequisites/#tab-panel-1677) * [Windows](https://tauri.app/start/prerequisites/#tab-panel-1678) export ANDROID_HOME="$HOME/Android/Sdk"export NDK_HOME="$ANDROID_HOME/ndk/$(ls -1 $ANDROID_HOME/ndk)" export ANDROID_HOME="$HOME/Library/Android/sdk"export NDK_HOME="$ANDROID_HOME/ndk/$(ls -1 $ANDROID_HOME/ndk)" [System.Environment]::SetEnvironmentVariable("ANDROID_HOME", "$env:LocalAppData\Android\Sdk", "User")$VERSION = Get-ChildItem -Name "$env:LocalAppData\Android\Sdk\ndk" | Select-Object -Last 1[System.Environment]::SetEnvironmentVariable("NDK_HOME", "$env:LocalAppData\Android\Sdk\ndk\$VERSION", "User") 5. Add the Android targets with `rustup`: rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android Next: [Setup for iOS](https://tauri.app/start/prerequisites/#ios) or [Create a project](https://tauri.app/start/create-project/) . ### [iOS](https://tauri.app/start/prerequisites/#ios) [Section titled “iOS”](https://tauri.app/start/prerequisites/#ios) 1. Add the iOS targets with `rustup` in Terminal: rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim 2. Install [Homebrew](https://brew.sh/) : /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 3. Install [Cocoapods](https://cocoapods.org/) using Homebrew: brew install cocoapods Next: [Create a project](https://tauri.app/start/create-project/) . [Troubleshooting](https://tauri.app/start/prerequisites/#troubleshooting) -------------------------------------------------------------------------- [Section titled “Troubleshooting”](https://tauri.app/start/prerequisites/#troubleshooting) If you run into any issues during installation be sure to check the [Troubleshooting Guide](https://tauri.app/develop/debug/) or reach out on the [Tauri Discord](https://discord.com/invite/tauri) . Next Steps Now that you’ve installed all of the prerequisites you’re ready to [create your first Tauri project](https://tauri.app/start/create-project/) ! * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # Project Structure | Tauri [Skip to content](https://tauri.app/start/project-structure/#_top) Project Structure ================= A Tauri project is usually made of 2 parts, a Rust project and a JavaScript project (optional), and typically the setup looks something like this: .├── package.json├── index.html├── src/│ ├── main.js├── src-tauri/│ ├── Cargo.toml│ ├── Cargo.lock│ ├── build.rs│ ├── tauri.conf.json│ ├── src/│ │ ├── main.rs│ │ └── lib.rs│ ├── icons/│ │ ├── icon.png│ │ ├── icon.icns│ │ └── icon.ico│ └── capabilities/│ └── default.json In this case, the JavaScript project is at the top level, and the Rust project is inside `src-tauri/`, the Rust project is a normal [Cargo project](https://doc.rust-lang.org/cargo/guide/project-layout.html) with some extra files: * `tauri.conf.json` is the main configuration file for Tauri, it contains everything from the application identifier to dev server url, this file is also a marker for the [Tauri CLI](https://tauri.app/reference/cli/) to find the Rust project, to learn more about it, see [Tauri Config](https://tauri.app/develop/configuration-files/#tauri-config) * `capabilities/` directory is the default folder Tauri reads [capability files](https://tauri.app/security/capabilities/) from (in short, you need to allow commands here to use them in your JavaScript code), to learn more about it, see [Security](https://tauri.app/security/) * `icons/` directory is the default output directory of the [`tauri icon`](https://tauri.app/reference/cli/#icon) command, it’s usually referenced in `tauri.conf.json > bundle > icon` and used for the app’s icons * `build.rs` contains `tauri_build::build()` which is used for tauri’s build system * `src/lib.rs` contains the Rust code and the mobile entry point (the function marked with `#[cfg_attr(mobile, tauri::mobile_entry_point)]`), the reason we don’t write directly in `main.rs` is because we compile your app to a library in mobile builds and load them through the platform frameworks * `src/main.rs` is the main entry point for the desktop, and we run `app_lib::run()` in `main` to use the same entry point as mobile, so to keep it simple, don’t modify this file, modify `lib.rs` instead. Note that `app_lib` corresponds to `[lib.name]` in Cargo.toml. Tauri works similar to a static web host, and the way it builds is that you would compile your JavaScript project to static files first, and then compile the Rust project that will bundle those static files in, so the JavaScript project setup is basically the same as if you were to build a static website, to learn more, see [Frontend Configuration](https://tauri.app/start/frontend/) If you want to work with Rust code only, simply remove everything else and use the `src-tauri/` folder as your top level project or as a member of your Rust workspace [Next Steps](https://tauri.app/start/project-structure/#next-steps) -------------------------------------------------------------------- [Section titled “Next Steps”](https://tauri.app/start/project-structure/#next-steps) * [Add and Configure a Frontend Framework](https://tauri.app/start/frontend/) * [Tauri Command Line Interface (CLI) Reference](https://tauri.app/reference/cli/) * [Learn how to develop your Tauri app](https://tauri.app/develop/) * [Discover additional features to extend Tauri](https://tauri.app/plugin/) * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # Tauri Board Elections 2025 | Tauri [Skip to content](https://tauri.app/blog/tauri-board-elections-2025/#_top) Tauri Board Elections 2025 ========================== Jun 30, 2025  Robin van Boven Tauri Board Director As we continue to be amazed by all the applications you’ve created with Tauri v2, it’s been 4 years since Tauri has become a Programme within [The Commons Conservancy](https://commonsconservancy.org/) ! This means we’re preparing for a new round of Tauri Board Director elections for the next term. [Board Elections](https://tauri.app/blog/tauri-board-elections-2025/#board-elections) -------------------------------------------------------------------------------------- [Section titled “Board Elections”](https://tauri.app/blog/tauri-board-elections-2025/#board-elections) The Tauri Board of Directors is the central decision-making body for the Tauri Programme and is responsible for its overall health and stability. Additional details can be found at the [Tauri Governance page](https://tauri.app/about/governance/) . In order to provide continuity from one year to another, the elections of seats are staggered over the course of 2 years. This means that one year a portion of the seats are elected, and the following year the remaining seats are elected. A Tauri Director seat is an elected position with a term of 2 years. The Board has a minimum of 3 Directors and a maximum of 7. This year there are 5 seats open for election. ### [Applying for Candidacy](https://tauri.app/blog/tauri-board-elections-2025/#applying-for-candidacy) [Section titled “Applying for Candidacy”](https://tauri.app/blog/tauri-board-elections-2025/#applying-for-candidacy) There are 3 steps to express interest and apply for candidacy: 1. Learn about the role of a Tauri Board Director on the [Governance page](https://tauri.app/about/governance/#tauri-board--board-directors) . 2. Prepare a written introduction about yourself that covers who you are, your history and relevance to Tauri, and what you would like to bring to the Board. (Examples from previous years can be found at [https://github.com/tauri-apps/governance-and-guidance](https://github.com/tauri-apps/governance-and-guidance) ). 3. **Apply prior to July 7th, 2025** by emailing [board@tauri.app](mailto:board@tauri.app) or messaging the `@board` role on the [Tauri Discord](https://discord.com/invite/tauri) . Voting will take place starting on July 7th through July 14th, 2025 where Tauri Working Group Members will cast their votes. We’re expecting to announce the results on or before July 19, 2025. If elected, we’ll ask you to sign [this pledge](https://dracc.commonsconservancy.org/0016/) if you haven’t done so previously. If you have any questions or would like more information please reach out by emailing [board@tauri.app](mailto:board@tauri.app) , messaging the `@board` role on the [Tauri Discord](https://discord.com/invite/tauri) . [Interested In Getting Involved?](https://tauri.app/blog/tauri-board-elections-2025/#interested-in-getting-involved) --------------------------------------------------------------------------------------------------------------------- [Section titled “Interested In Getting Involved?”](https://tauri.app/blog/tauri-board-elections-2025/#interested-in-getting-involved) If joining the Board isn’t for you but still want to help, here are some ways to do so! (Thank you ❤️) Reach out on our [Discord](https://discord.com/invite/tauri) by enabling the roles you’re interested in like “Contribute to Tauri Code” or “Contribute to Documentation”. This reveals the Contributors channels where you can chat with other contributors. While you’re there, consider enabling Discord notification roles to stay apprised of news and questions from the team. Or on GitHub maybe you can help with these [good first issues](https://github.com/search?q=user%3Atauri-apps+label%3A%22good+first+issue%22+state%3Aopen&type=Issues&s=created&o=desc) ? Additionally we’re very grateful to all the teams and individuals who [sponsor us on GitHub](https://github.com/sponsors/tauri-apps) or [open collective](https://opencollective.com/tauri) ! [Experimental Tauri Verso Integration](https://tauri.app/blog/tauri-verso-integration/) * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # Tauri Board Elections 2024 | Tauri [Skip to content](https://tauri.app/blog/tauri-board-elections-2024/#_top) Tauri Board Elections 2024 ========================== Jun 28, 2024  Jacob Bolda Tauri Board Director The Tauri Programme is celebrating its third anniversary of Tauri becoming a programme within [The Commons Conservancy](https://commonsconservancy.org/) . We are hard at work bringing v2 to a stable release, and now the next round of Tauri Board Director elections is upon us! Want to [get involved in other ways](https://tauri.app/blog/tauri-board-elections-2024/#interested-in-getting-involved) and help Tauri towards v2? We would love your contributions especially to help evolve the documentation! [Board Elections](https://tauri.app/blog/tauri-board-elections-2024/#board-elections) -------------------------------------------------------------------------------------- [Section titled “Board Elections”](https://tauri.app/blog/tauri-board-elections-2024/#board-elections) The Tauri Board of Directors is the central decision-making body for the Tauri Programme and is responsible for its overall health and stability. Additional details can be found on the [Tauri Governance page](https://tauri.app/about/governance/) . In order to provide continuity from one year to another, the elections of seats are staggered over the course of 2 years. This means that one year a portion of the seats are elected, and the following year the remaining seats are elected. A Tauri Director seat is an elected position with a term of 2 years. The Board has a minimum of 3 Directors and a maximum of 7. This year there are 2 seats open for election. ### [Applying for Candidacy](https://tauri.app/blog/tauri-board-elections-2024/#applying-for-candidacy) [Section titled “Applying for Candidacy”](https://tauri.app/blog/tauri-board-elections-2024/#applying-for-candidacy) There are 3 steps to express interest and apply for candidacy: 1. Learn about the role of a Tauri Board Director on the [Governance page](https://tauri.app/about/governance/#tauri-board--board-directors) . 2. Prepare a written introduction about yourself that covers who you are, your history and relevance for Tauri, and what you would like to bring to the Board. 3. **Apply prior to July 5th, 2024** by emailing [board@tauri.app](mailto:board@tauri.app) , messaging the `@board` role on the [Tauri Discord](https://discord.com/invite/tauri) , or by directly messaging Jacob Bolda on Discord (`@jacobbolda`) or email ([jacob@tauri.app](mailto:jacob@tauri.app) ). Voting will take place starting on July 7th through July 12th, 2024 where Tauri Working Group Members will cast their votes. We’re expecting to announce the results on or before July 16, 2024. If elected, we’ll ask you to sign [this pledge](https://dracc.commonsconservancy.org/0016/) if you haven’t done so previously. If you have any questions or would like more information please reach out by emailing [board@tauri.app](mailto:board@tauri.app) , messaging the `@board` role on the [Tauri Discord](https://discord.com/invite/tauri) , or by directly messaging Jacob Bolda on Discord (`@jacobbolda`) or email ([jacob@tauri.app](mailto:jacob@tauri.app) ). [Interested In Getting Involved?](https://tauri.app/blog/tauri-board-elections-2024/#interested-in-getting-involved) --------------------------------------------------------------------------------------------------------------------- [Section titled “Interested In Getting Involved?”](https://tauri.app/blog/tauri-board-elections-2024/#interested-in-getting-involved) If joining the Board isn’t for you, we are always looking to enable involvement at any level within Tauri. The documentation for v2 is a large focus of the remaining effort. See the issues within the [tauri-apps/tauri-docs repo](https://github.com/tauri-apps/tauri-docs) . Additionally reach out and follow along within Discord. Add a `@notify-*` role to stay apprised of news and questions from the team, or follow along and ask questions in the `#dev` or `#docs` channels under the `CONTRIBUTORS` section. Prepared for some more responsibility? A Domain in the Working Group represents a specific area of interest. * **Development**: Developing and maintaining the Tauri software * **Community**: Looks after the broader community resources and the public presence of Tauri * **Governance & Guidance**: Involved with all things organizational in nature * **Operations**: Responsible for all the tooling and infrastructure Tauri needs to get work done This gives clear entry points for a new member of the Working Group to jump into right away. It also allows us to continue growing our core competency of core Tauri development while giving additional focus to all areas which support the Tauri organization as a whole. Each of these domains will be represented by Domain Members and Domain Leads, but membership is not mutually exclusive. All domains within Tauri are equally important to providing the best experience possible, as well as the wonderful support of the community. ❤️ * * * With your help, we can continue to improve and catalyze the growth and sustainability of the organization. You can learn more in the [Governance and Guidance repo on GitHub](https://github.com/tauri-apps/governance-and-guidance) . [Announcing Tauri 1.7.0](https://tauri.app/blog/tauri-1-7/) [Rust Security Advisory CVE-2024-24576](https://tauri.app/blog/cve-2024-24576/) * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # Rust Security Advisory CVE-2024-24576 | Tauri [Skip to content](https://tauri.app/blog/cve-2024-24576/#_top) Rust Security Advisory CVE-2024-24576 ===================================== Apr 10, 2024  Tillmann Weidinger Tauri Security  Chip Reed Tauri Security The Rust Security Response WG announced [`CVE-2024-24576`](https://blog.rust-lang.org/2024/04/09/cve-2024-24576.html) , which affects the Rust Standard Library on Windows. > TL;DR: Upgrade your Rust version to `1.77.2`. [How Does it Affect Tauri as a Library?](https://tauri.app/blog/cve-2024-24576/#how-does-it-affect-tauri-as-a-library) ----------------------------------------------------------------------------------------------------------------------- [Section titled “How Does it Affect Tauri as a Library?”](https://tauri.app/blog/cve-2024-24576/#how-does-it-affect-tauri-as-a-library) Some Tauri organization repositories use batch files (`cmd.exe` under the hood) for developer environment tooling such as build scripts. No reviewed repositories use batch files for runtime code. We don’t see additional risks for the Tauri project based on this CVE. Nevertheless, we will update our CI systems to use the latest Rust version. [Is My Tauri App Affected?](https://tauri.app/blog/cve-2024-24576/#is-my-tauri-app-affected) --------------------------------------------------------------------------------------------- [Section titled “Is My Tauri App Affected?”](https://tauri.app/blog/cve-2024-24576/#is-my-tauri-app-affected) In general you are possibly affected if you fulfil **all** of the below criteria: * You ship your app on **Windows** * Your project enables the Tauri v1 [`shell`](https://tauri.app/v1/api/js/shell/) feature with `"execute": true` or the v2 [`shell-plugin`](https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/shell) with `allow-execute` permission * You allow arguments in the `scope` element of the `shell` feature * **You pass untrusted input to `cmd.exe` or `.bat`/`.cmd` files and improperly validate the scope** (🚩) If any of these criteria are not fulfilled in your application you are likely **NOT** affected. If you implement custom commands or logic written in your application that directly exposes the Rust `Command` with arguments provided at runtime, you may be affected. While not Tauri specific, this pattern could affect any Rust project. [Conclusion](https://tauri.app/blog/cve-2024-24576/#conclusion) ---------------------------------------------------------------- [Section titled “Conclusion”](https://tauri.app/blog/cve-2024-24576/#conclusion) Please upgrade your Rust version to `1.77.2` as soon as possible and distribute updates to your users. This investigation and writeup was performed in cooperation with our partner [CrabNebula](https://crabnebula.dev/blog/cve-2024-24576/) ❤️. * * * [Read more about this security advisory here](https://flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/) . This affects many programming languages, this specific CVE is just the one filed for Rust. [Tauri Board Elections 2024](https://tauri.app/blog/tauri-board-elections-2024/) [Announcing Tauri 1.6.0](https://tauri.app/blog/tauri-1-6/) * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # Announcing Tauri 1.6.0 | Tauri [Skip to content](https://tauri.app/blog/tauri-1-6/#_top) Announcing Tauri 1.6.0 ====================== Feb 19, 2024  Lucas Nogueira Tauri Co-Founder The Tauri team is happy to announce the 1.6 release. This version includes several new features and important bug fixes such as improved code signing on macOS, updater enhancements and an event loop crash on all platforms. [Upgrading](https://tauri.app/blog/tauri-1-6/#upgrading) --------------------------------------------------------- [Section titled “Upgrading”](https://tauri.app/blog/tauri-1-6/#upgrading) Make sure to update both NPM and Cargo dependencies to the 1.6.0 release. You can update the dependencies with: * [npm](https://tauri.app/blog/tauri-1-6/#tab-panel-626) * [yarn](https://tauri.app/blog/tauri-1-6/#tab-panel-627) * [pnpm](https://tauri.app/blog/tauri-1-6/#tab-panel-628) * [cargo](https://tauri.app/blog/tauri-1-6/#tab-panel-629) npm install @tauri-apps/cli@latest @tauri-apps/api@latest yarn upgrade @tauri-apps/cli @tauri-apps/api --latest pnpm update @tauri-apps/cli @tauri-apps/api --latest cargo update [What’s in 1.6.0](https://tauri.app/blog/tauri-1-6/#whats-in-160) ------------------------------------------------------------------ [Section titled “What’s in 1.6.0”](https://tauri.app/blog/tauri-1-6/#whats-in-160) ### [Event loop crash](https://tauri.app/blog/tauri-1-6/#event-loop-crash) [Section titled “Event loop crash”](https://tauri.app/blog/tauri-1-6/#event-loop-crash) We finally got a good stack trace and got a fix for a long standing crash on all platforms. This crash was a challenge to fix since it only happened when the application is running for a long time, so we thank everyone that made sure the fix works. ### [Code signing improvements](https://tauri.app/blog/tauri-1-6/#code-signing-improvements) [Section titled “Code signing improvements”](https://tauri.app/blog/tauri-1-6/#code-signing-improvements) Tauri now detects nested dylib, app, xpc and frameworks inside your macOS app bundle and codesigns each of them. This ensures your app can use some external libraries and be codesigned and notarized. ### [Updater enhancement](https://tauri.app/blog/tauri-1-6/#updater-enhancement) [Section titled “Updater enhancement”](https://tauri.app/blog/tauri-1-6/#updater-enhancement) The auto updater now keeps the command line arguments on Windows. ### [Other changes](https://tauri.app/blog/tauri-1-6/#other-changes) [Section titled “Other changes”](https://tauri.app/blog/tauri-1-6/#other-changes) Check out the entire list of changes: * [tauri](https://github.com/tauri-apps/tauri/releases/tag/tauri-v1.6.0) * [tauri-cli](https://github.com/tauri-apps/tauri/releases/tag/tauri-cli-v1.5.10) * [tauri-bundler](https://github.com/tauri-apps/tauri/releases/tag/tauri-bundler-v1.5.0) [Rust Security Advisory CVE-2024-24576](https://tauri.app/blog/cve-2024-24576/) [Announcing the Tauri v2 Beta Release](https://tauri.app/blog/tauri-2-0-0-beta/) * * * [Support on Open Collective](https://opencollective.com/tauri) [Sponsor on GitHub](https://github.com/sponsors/tauri-apps) © 2026 Tauri Contributors. CC-BY / MIT --- # Unknown HTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri © Copyright James Rose 2024 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html1/270 Prerequisites Before embarking on your journey through this book, it's essential to ensure that your development environment is properly configured. This section will walk you through the necessary prerequisites for both Windows and Linux systems, ensuring you have a solid foundation to build upon. Windows Setting up your environment on a Windows system requires a few key components: Node.js: Download and install the LTS version of Node.js. This will provide you with a stable and reliable runtime for your JavaScript code. Rust: Install Rust using rustup, the recommended tool for managing Rust versions and associated tools. Visual Studio Build Tools: Ensure you have the Visual Studio Build Tools installed, with the C++ build tools selected. This is crucial for compiling native modules. Linux For those using a Linux system, the setup involves a few different steps: Node.js: Similar to Windows, you'll need the LTS version of Node.js. Follow the installation instructions specific to your distribution. Rust: Use rustup to install Rust, providing you with the necessary tools to compile and manage Rust projects. Build-essential tools: Ensure you have the essential build tools installed, such as gcc , g++ , and make . These are typically available through your distribution's package manager. By following these instructions and ensuring all dependencies are correctly installed, you'll be well-prepared to dive into the content of this book and start building your projects with confidence. 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html2/270 Windows Prerequisites Microsoft C++ Build Tools Tauri uses Microsoft C++ Build Tools for development. As such it is required that you install it before you begin making your app. It can be done by going to https://visualstudio.microsoft.com/visual-cpp-build-tools/. Once on the page, click Download Build Tools To begin the download. Once the download is finished click on the executable. Ensure that the "Desktop Development with C++" option is checked and begin the installation. Git Step 1. Go to https://git-scm.com/download/win and download the 64-bit installer Step 2. Click on the installer to start the wizard. Step 3. Go through the wizard selecting all of the recommended options. Step 4. Restart your computer. Step 5. Verify that it is installed by running the following command Common Commands Cloning A Repository git --help git clone https://github.com/RoseBlume/book.git 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html3/270 Making And Pushing Commits While in your projects main directory run these commands NodeJS NodeJs is a required dependency if you plan to use a JavaScript frontend. In order to install it, you must go to https://nodejs.org and click the Download button. Once the installer is done downloading, click on it to open the installation wizard. Go through all of the wizards installation steps and use all of the recommended options. Rust Step 1. Go to https://www.rust-lang.org/tools/install Step 2. Download the 64 bit Rustup-Init.exe script Step 3. Click The Downloaded Executable It is recommend to use the default installation. If you wish to use newer, less stable rust features, you can change your default toolchain to nightly. It is important to note that you can always change your toolchain later by running the following command. git add . git commit -m "First Commit" git push rustup default stable # Change 'stable' to either 'nightly' or 'beta' 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html4/270 Linux Prerequisites System Packages Before you begin developing your app, it is essential to install the necessary dependencies for your chosen Linux distribution. Debian/Ubuntu For Debian and Ubuntu users, you can install the required packages by running the following commands: Please note that these packages are available starting from Debian Bookworm and Ubuntu Noble suite. Arch Linux Arch Linux users can install the necessary packages with the following commands: sudo apt update sudo apt install libwebkit2gtk-4.1-dev \\ build-essential \\ curl \\ wget \\ file \\ libxdo-dev \\ libssl-dev \\ libayatana-appindicator3-dev \\ librsvg2-dev 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html5/270 Fedora/RHEL For Fedora and RHEL users, use the following commands to install the required packages: Gentoo Gentoo users can install the necessary packages by running: openSUSE For openSUSE users, the required packages can be installed with: sudo pacman -Syu sudo pacman -S --needed \\ webkit2gtk-4.1 \\ base-devel \\ curl \\ wget \\ file \\ openssl \\ appmenu-gtk-module \\ libappindicator-gtk3 \\ librsvg sudo dnf check-update sudo dnf install webkit2gtk4.1-devel \\ openssl-devel \\ curl \\ wget \\ file \\ libappindicator-gtk3-devel \\ librsvg2-devel sudo dnf group install "C Development Tools and Libraries" sudo emerge --ask \\ net-libs/webkit-gtk:4.1 \\ dev-libs/libappindicator \\ net-misc/curl \\ net-misc/wget \\ sys-apps/file 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html6/270 Node.js Node.js can be installed in various ways on Linux. The preferred method is to use your distribution's default package manager. If this fails, you can use other methods. 1. Installation Via Your Distribution's Default Package Manager Debian, Ubuntu, and Raspbian For Debian-based distributions, use the following commands: Verify the installation: Arch Linux For Arch Linux, use: sudo zypper up sudo zypper in webkit2gtk3-devel \\ libopenssl-devel \\ curl \\ wget \\ file \\ libappindicator3-1 \\ librsvg-devel sudo zypper in -t pattern devel\_basis sudo apt update # Only one or both of these packages may be required sudo apt install npm sudo apt install nodejs npm -v # 10.8.2 node -v # v22.6.0 sudo pacman -Syu sudo pacman -S --needed \\ npm \\ nodejs 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html7/270 Fedora and RHEL For Fedora and RHEL, use: Installation Via A Node Package Manager Node.js has package managers for managing installations and updates. FNM (Fast Node Manager) To install FNM and Node.js, run: NVM (Node Version Manager) To install NVM and Node.js, run: sudo dnf check-update sudo dnf install \\ nodejs \\ npm # installs fnm (Fast Node Manager) curl -fsSL https://fnm.vercel.app/install | bash # activate fnm source ~/.bashrc # download and install Node.js fnm use --install-if-missing 20 # verifies the right Node.js version is in the environment node -v # should print \`v20.17.0\` # verifies the right npm version is in the environment npm -v # should print \`10.8.2\` 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html8/270 Installing with Snap To install Node.js using Snap, ensure you have Snapcraft installed, then run: This snap also provides nodejs , npm , npx , and yarn . Rust Rust is a low-level programming language that compiles quickly and efficiently. It provides control and simplifies dependency management. Installation The recommended installation method is to use the provided script: Use the default installation. To use newer, less stable Rust features, change your default toolchain: # installs nvm (Node Version Manager) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash # download and install Node.js (you may need to restart the terminal) nvm install 20 # verifies the right Node.js version is in the environment node -v # should output something similar to \`v20.17.0\` # verifies the right npm version is in the environment npm -v # should output something similar to \`10.8.2\` sudo snap install node --channel=22/stable --classic curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh rustup default stable # Change 'stable' to either 'nightly' or 'beta' 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html9/270 Android 1. Download and install Android Studio from the Android Developer Website. 2. Set the JAVA\_HOME environment variable: 3. Open a project in Android Studio, click the settings icon, and select SDK Manager. Install the following: Android SDK Platform (API Level 24 and onwards) Android SDK Platform-Tools NDK (Side by side) Android SDK Build-Tools Android SDK Command-line Tools 4. Set the ANDROID\_HOME and NDK\_HOME environment variables: 5. Add the following targets with rustup : System Packages Before you begin developing your app it is imperative that you first install the proper dependencies for your chosen distro. export JAVA\_HOME=/opt/android-studio/jbr export ANDROID\_HOME="$HOME/Android/Sdk" export NDK\_HOME="$ANDROID\_HOME/ndk/$(ls -1 $ANDROID\_HOME/ndk)" rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86\_64-linux-android 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html10/270 Debian/Ubuntu As Debian distros use a point release system it is only possible to install these packages using Debian Bookworm and onwards. It is a similar situation with Ubuntu where you must be using the Noble suite and onwards. Arch Linux Fedora/RHEL sudo apt update sudo apt install libwebkit2gtk-4.1-dev \\ build-essential \\ curl \\ wget \\ file \\ libxdo-dev \\ libssl-dev \\ libayatana-appindicator3-dev \\ librsvg2-dev sudo pacman -Syu sudo pacman -S --needed \\ webkit2gtk-4.1 \\ base-devel \\ curl \\ wget \\ file \\ openssl \\ appmenu-gtk-module \\ libappindicator-gtk3 \\ librsvg sudo dnf check-update sudo dnf install webkit2gtk4.1-devel \\ openssl-devel \\ curl \\ wget \\ file \\ libappindicator-gtk3-devel \\ librsvg2-devel sudo dnf group install "C Development Tools and Libraries" 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html11/270 Gentoo openSUSE Node.js Node.js can be installed in many different ways for linux. The prefered method is to use your Linux Distributions default package manager to install Nodejs and NPM. If this fails it is possible to install using 2 other methods. 1. Installation Via Your Distributions Default Package Manager Debian, Ubuntu and Raspbian Afterwards run these commands to ensure that both npm and nodejs are installed sudo emerge --ask \\ net-libs/webkit-gtk:4.1 \\ dev-libs/libappindicator \\ net-misc/curl \\ net-misc/wget \\ sys-apps/file sudo zypper up sudo zypper in webkit2gtk3-devel \\ libopenssl-devel \\ curl \\ wget \\ file \\ libappindicator3-1 \\ librsvg-devel sudo zypper in -t pattern devel\_basis sudo apt update # Only one or both of these packages may be required sudo apt install npm sudo apt install nodejs 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html12/270 Arch Linux Fedora And Red Hat Enterprise Linux Installation Via A Node Package Manager While not as simple Nodejs has package managers meant for managing installations and updates for nodejs FNM (Fast Node Manager) Running this script will install FNM as well. If for some reason you do not want to install FNM, please try using another method. npm -v # 10.8.2 node -v # v22.6.0 sudo pacman -Syu sudo pacman -S --needed \\ npm \\ nodejs sudo dnf check-update sudo dnf install \\ nodejs \\ npm # installs fnm (Fast Node Manager) curl -fsSL https://fnm.vercel.app/install | bash # activate fnm source ~/.bashrc # download and install Node.js fnm use --install-if-missing 20 # verifies the right Node.js version is in the environment node -v # should print \`v20.17.0\` # verifies the right npm version is in the environment npm -v # should print \`10.8.2\` 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html13/270 Installation with NVM (Node Version Manager) Running this script will install NVM as well. If for some reason you do not wish to install NVM, please try using another method. Installing with Snap (Requires installation of Snap) Installation using Snap is simple, however it is imperative that you have completed the prerequisites for installing Snapcraft prior to running these commands as it will fail otherwise. This snap also provides nodejs , npm , npx , and yarn . Rust Rust is a low-level programming language that aims to compile to the smallest binary possible, very quickly, and with very little overhead. It provides the user with a large amount of control and simplifies dependency management. Installation The recommended installation method is to use the provided script. It is recommend to use the default installation. If you wish to use newer, less stable rust features, you can change your default toolchain to nightly. It is important to note that you can # installs nvm (Node Version Manager) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash # download and install Node.js (you may need to restart the terminal) nvm install 20 # verifies the right Node.js version is in the environment node -v # should output something similar to \`v20.17.0\` # verifies the right npm version is in the environment npm -v # should output something similar to \`10.8.2\` sudo snap install node --channel=22/stable --classic curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html14/270 always change your toolchain later by running the following command. Android 1. Download and install Android Studio from the Android Developer Website https://developer.android.com/studio 2. Set the JAVA\_HOME Environment variable in the terminal. The location may be different depending on your method of installation. 3. Open a Project in your newly installed version of Android Studio and click the settings icon in the top right corner. Click on SDK Manager which should appear in the dropdown after the settings button has been clicked. Install the following. Android SDK Platform (API Level 24 and onwards) Android SDK Platform-Tools NDK (Side by side) Android SDK Build-Tools Android SDK Command-line Tools 4. Set the ANDROID\_HOME and NDK\_HOME environment variables. The locations may be different depending on your installation 5. Add the following targets with rustup rustup default stable # Change 'stable' to either 'nightly' or 'beta' export JAVA\_HOME=/opt/android-studio/jbr export ANDROID\_HOME="$HOME/Android/Sdk" export NDK\_HOME="$ANDROID\_HOME/ndk/$(ls -1 $ANDROID\_HOME/ndk)" rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86\_64-linux-android 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html15/270 Getting Started 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html16/270 Project Structure Understanding the structure of your Tauri project is crucial for efficient development. Let's take a closer look at the various files and directories that make up a typical Tauri application. The package.json File The package.json file, located at the root of your project, contains essential information about your application, such as its name, version, and dependencies. It also includes scripts that can be executed using npm. C:. │ package.json │ ├───src │ index.html │ main.js │ styles.css │ └───src-tauri │ build.rs │ Cargo.toml │ tauri.conf.json │ └───src lib.rs main.rs { "name": "example", "private": true, "version": "0.1.0", "type": "module", "scripts": { "tauri": "tauri" }, "devDependencies": { "@tauri-apps/cli": ">=2.0.0-rc.0" } } 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html17/270 The src Directory This directory houses your frontend code, which is responsible for the user interface. It includes three main files: index.html , styles.css , and main.js . src/index.html The index.html file within the src directory contains the HTML structure of your application. Initially, it should look like this: src/styles.css The styles.css file contains the CSS rules that define the appearance of your application, including text alignment, image sizes, colors, and backgrounds.
: This tag defines a paragraph of text. Paragraphs are block-level elements, meaning they start on a new line and take up the full width available. : The anchor tag is used to create hyperlinks, which are clickable links that navigate to other web pages or resources. The href attribute specifies the URL of the linked resource. : This is an inline container element used to apply styles or manipulate text within a larger block of content. Unlike : This tag is used to embed images in a web page. It is a self-closing tag and requires the src attribute to specify the path to the image file, and the alt attribute to provide alternative text for accessibility. Lists
: Unordered list, which displays a list of items with bullet points.
: Ordered list, which displays a list of items with numbers.
or
to define individual list items. 1/23/25, 12:49 PMHTML, CSS, JavaScript, and Rust for Beginners: A Guide to Application Development with Tauri localhost:3000/print.html35/270 Containers
: This tag is used to create a table to display tabular data. It contains
for table rows, for table headers, and for table data cells. Forms