## 1. Project Overview & Quickstart (tauri-apps/tauri)

## File: README.md

[](https://github.com/tauri-apps/tauri/tree/dev)
[](https://opencollective.com/tauri)
[](https://github.com/tauri-apps/tauri/actions/workflows/test-core.yml)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)
[](https://discord.com/invite/tauri)
[](https://tauri.app)
[](https://good-labs.github.io/greater-good-affirmation)
[](https://opencollective.com/tauri)

## Introduction

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

The user interface in Tauri apps currently leverages [`tao`](https://docs.rs/tao) as a window handling library on macOS, Windows, Linux, Android and iOS. To render your application, Tauri uses [WRY](https://github.com/tauri-apps/wry), a library which provides a unified interface to the system webview, leveraging WKWebView on macOS & iOS, WebView2 on Windows, WebKitGTK on Linux and Android System WebView on Android.

To learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.

## Getting Started

If you are interested in making a tauri app, please visit the [documentation website](https://tauri.app).

The quickest way to get started is to install the [prerequisites](https://v2.tauri.app/start/prerequisites/) for your system and create a new project with [`create-tauri-app`](https://github.com/tauri-apps/create-tauri-app/#usage). For example with `npm`:

```sh
npm create tauri-app@latest
```

## Features

The list of Tauri's features includes, but is not limited to:

- Built-in app bundler to create app bundles in formats like `.app`, `.dmg`, `.deb`, `.rpm`, `.AppImage` and Windows installers like `.exe` (via NSIS) and `.msi` (via WiX).
- Built-in self updater (desktop only)
- System tray icons
- Native notifications
- Native WebView Protocol (tauri doesn't create a localhost http(s) server to serve the WebView contents)
- GitHub action for streamlined CI
- VS Code extension

### Platforms

Tauri currently supports development and distribution on the following platforms:

| Platform   | Versions                                                                                                        |
| :--------- | :-------------------------------------------------------------------------------------------------------------- |
| Windows    | 7 and above                                                                                                     |
| macOS      | 10.15 and above                                                                                                 |
| Linux      | webkit2gtk 4.0 for Tauri v1 (for example Ubuntu 18.04). webkit2gtk 4.1 for Tauri v2 (for example Ubuntu 22.04). |
| iOS/iPadOS | 9 and above                                                                                                     |
| Android    | 7 and above (currently 8 and above)                                                                             |

## Contributing

Before you start working on something, it's best to check if there is an existing issue first. It's also a good idea to stop by the Discord server and confirm with the team if it makes sense or if someone else is already working on it.

Please make sure to read the [Contributing Guide](./.github/CONTRIBUTING.md) before making a pull request.

Thank you to everyone contributing to Tauri!

### Documentation

Documentation in a polyglot system is a tricky proposition. To this end, we prefer to use inline documentation in the Rust & JS source code as much as possible. Check out the hosting repository for the documentation site for further information: <https://github.com/tauri-apps/tauri-docs>

## Partners



|  |
| --- |



For the complete list of sponsors please visit our [website](https://tauri.app#sponsors) and [Open Collective](https://opencollective.com/tauri).

## Organization

Tauri aims to be a sustainable collective based on principles that guide sustainable free and open software communities. To this end it has become a Programme within the [Commons Conservancy](https://commonsconservancy.org/), and you can contribute financially via [Open Collective](https://opencollective.com/tauri).

## Licenses

Code: (c) 2015 - Present - The Tauri Programme within The Commons Conservancy.

MIT or MIT/Apache 2.0 where applicable.

Logo: CC-BY-NC-ND

- Original Tauri Logo Designs by [Alve Larsson](https://alve.io/), [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)

[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_large)

---

## File: .devcontainer/README.md

# VS Code Devcontainer for Tauri

## Overview

Please note that most of these instructions are derived from Microsoft's VS Code documentation: [Developing inside a Container](https://code.visualstudio.com/docs/remote/containers). Check the official documentation if you encounter problems and submit a PR with any corrections you find for the instructions below.

The development container included in this repository is derived from [Microsoft's default Ubuntu development container](https://github.com/microsoft/vscode-dev-containers/tree/master/containers/ubuntu). Contents of the Ubuntu Docker image can be in the [VS Code devcontainer Ubuntu base Dockerfile](https://github.com/microsoft/vscode-dev-containers/blob/main/containers/ubuntu/.devcontainer/base.Dockerfile). The contents of the container used for development can be found in the [Dockerfile](./Dockerfile) located in the same directory as this README.

## Usage

1. Ensure you have all [Devcontainer Prerequisites](#devcontainer-prerequisites)
2. Open the directory containing your [`tauri-apps/tauri`](https://github.com/tauri-apps/tauri) code.
3. Install the [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extension pack for VS Code. This will be included if you install recommended workspace extensions upon opening this repository.
4. Ensure Docker is running
5. [Open your workspace in the provided devcontainer](https://code.visualstudio.com/docs/remote/containers#_open-an-existing-workspace-in-a-container): Open this repository in VS Code and run **Remote-Containers: Reopen in Container...** from the Command Palette (<kbd>F1</kbd>).

### Devcontainer Prerequisites

Prerequisites are mainly derived from VS Code's instructions for usage of development containers, documented here: [Developing inside a Container: Getting Started](https://code.visualstudio.com/docs/remote/containers#_getting-started).

1. Docker (Docker Desktop recommended)
2. VS Code
3. X window host - required if you want to be able to interact with a GUI from your Docker host

### A note on filesystem performance

Due to limitations in how Docker shares files between the Docker host and a container, it's also recommended that developers [clone Tauri source code into a container volume](https://code.visualstudio.com/remote/advancedcontainers/improve-performance#_use-clone-repository-in-container-volume). This is optional, but highly advised as many filesystem/IO heavy operations (`cargo build`, `pnpm install`, etc) will be very slow if they operate on directories shared with a Docker container from the Docker host.

To do this, open your project with VS Code and run **Remote-Containers: Clone Repository in Container Volume...** from the Command Palette (<kbd>F1</kbd>).

### Accessing a Tauri application running you the devcontainer

Docker Desktop provides facilities for [allowing the development container to connect to a service on the Docker host](https://docs.docker.com/desktop/windows/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host). So long as you have an X window server running on your Docker host, the devcontainer can connect to it and expose your Tauri GUI via an X window.

**Export the `DISPLAY` variable within the devcontainer terminal you launch your Tauri application from to expose your GUI outside of the devcontainer**.

```bash
export DISPLAY="host.docker.internal:0"
```

---

## File: .changes/README.md

# Changes

##### via https://github.com/jbolda/covector

As you create PRs and make changes that require a version bump, please add a new markdown file in this folder. You do not note the version _number_, but rather the type of bump that you expect: major, minor, or patch. The filename is not important, as long as it is a `.md`, but we recommend that it represents the overall change for organizational purposes.

When you select the version bump required, you do _not_ need to consider dependencies. Only note the package with the actual change, and any packages that depend on that package will be bumped automatically in the process.

Use the following format:

```md
---
'package-a': 'patch:enhance'
'package-b': 'patch:enhance'
---

Change summary goes here
```

Summaries do not have a specific character limit, but are text only. These summaries are used within the (future implementation of) changelogs. They will give context to the change and also point back to the original PR if more details and context are needed.

Changes will be designated as a `major`, `minor` or `patch` as further described in [semver](https://semver.org/).

Given a version number MAJOR.MINOR.PATCH, increment the:

- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards compatible manner, and
- PATCH version when you make backwards compatible bug fixes.

Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format, but will be discussed prior to usage (as extra steps will be necessary in consideration of merging and publishing).

Additionally you could specify a tag for the change file to group it with other changes by prefixing the bump with `:<tag>`, for example:

```md
---
'package-a': 'patch:enhance'
---

Change summary goes here
```

which will group this change file with other changes that specify the `bug` tag.

For list of available tags, see the `changeTags` key in [./config.json](./config.json)

---

## File: bench/README.md

# Tauri Bench

 

[](https://github.com/tauri-apps/tauri)
[](https://opencollective.com/tauri)
[](https://github.com/tauri-apps/tauri/actions/workflows/test-core.yml)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)
[](https://discord.gg/SpmNs4S)
[](https://tauri.app)
[](https://good-labs.github.io/greater-good-affirmation)
[](https://opencollective.com/tauri)

## About Tauri

Tauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.

Tauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.

## This module

This rust module run on CI, provides internal metrics results of Tauri. To learn more see [benchmark_results](https://github.com/tauri-apps/benchmark_results) repository.

**\*_Internal use only_**

## Semver

**tauri** is following [Semantic Versioning 2.0](https://semver.org/).

## Licenses

Code: (c) 2015 - 2021 - The Tauri Programme within The Commons Conservancy.

MIT or MIT/Apache 2.0 where applicable.

Logo: CC-BY-NC-ND

- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)

---

## File: crates/tauri-utils/README.md

# tauri-utils

 

[](https://github.com/tauri-apps/tauri/tree/dev)
[](https://opencollective.com/tauri)
[](https://github.com/tauri-apps/tauri/actions/workflows/test-core.yml)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)
[](https://discord.gg/SpmNs4S)
[](https://tauri.app)
[](https://good-labs.github.io/greater-good-affirmation)
[](https://opencollective.com/tauri)

| Component   | Version                                                                                                    |
| ----------- | ---------------------------------------------------------------------------------------------------------- |
| tauri-utils | [](https://crates.io/crates/tauri-utils) |

## About Tauri

Tauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.

Tauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.

## This module

This is common code that is reused in many places and offers useful utilities like parsing configuration files, detecting platform triples, injecting the CSP, and managing assets.

To learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.

## Semver

**tauri** is following [Semantic Versioning 2.0](https://semver.org/).

## Licenses

Code: (c) 2021 - The Tauri Programme within The Commons Conservancy.

MIT or MIT/Apache 2.0 where applicable.

Logo: CC-BY-NC-ND

- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)

---

## File: crates/tauri-schema-worker/README.md

# schema.tauri.app worker

Source code for `https://schema.tauri.app` cloudflare worker.

---

## File: crates/tauri-schema-generator/README.md

# tauri-schema-generator

This crate is part of the tauri monorepo workspace and its sole purpose is to generate JSON schema for various tauri config files.

---

## File: crates/tauri-runtime-wry/README.md

# tauri-runtime-wry

 

[](https://github.com/tauri-apps/tauri)
[](https://discord.gg/SpmNs4S)

[](https://github.com/tauri-apps/tauri/actions/workflows/test-core.yml)
[](https://tauri.app)

[](https://good-labs.github.io/greater-good-affirmation)
[](https://opencollective.com/tauri)

| Component         | Version                                                                                                                |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
| tauri-runtime-wry | [](https://crates.io/crates/tauri-runtime-wry) |

## About Tauri

Tauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.

Tauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.

## This module

This crate opens up direct systems-level interactions specifically for WRY, such as printing, monitor detection, and other windowing related tasks. `tauri-runtime` implementation for WRY.
None of the exposed API of this crate is stable, and it may break semver
compatibility in the future. The major version only signifies the intended Tauri version.

To learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.

## Semver

**tauri** is following [Semantic Versioning 2.0](https://semver.org/).

## Licenses

Code: (c) 2021 - The Tauri Programme within The Commons Conservancy.

MIT or MIT/Apache 2.0 where applicable.

Logo: CC-BY-NC-ND

- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)

---

## File: crates/tauri-runtime/README.md

# tauri-runtime

 

[](https://github.com/tauri-apps/tauri)
[](https://discord.gg/SpmNs4S)

[](https://github.com/tauri-apps/tauri/actions/workflows/test-core.yml)
[](https://tauri.app)

[](https://good-labs.github.io/greater-good-affirmation)
[](https://opencollective.com/tauri)

| Component     | Version                                                                                                        |
| ------------- | -------------------------------------------------------------------------------------------------------------- |
| tauri-runtime | [](https://crates.io/crates/tauri-runtime) |

## About Tauri

Tauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.

Tauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.

## This module

This is the glue layer between tauri itself and lower level webview libraries.
None of the exposed API of this crate is stable, and it may break semver
compatibility in the future. The major version only signifies the intended Tauri version.

To learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.

## Semver

**tauri** is following [Semantic Versioning 2.0](https://semver.org/).

## Licenses

Code: (c) 2021 - The Tauri Programme within The Commons Conservancy.

MIT or MIT/Apache 2.0 where applicable.

Logo: CC-BY-NC-ND

- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)

---

## File: crates/tauri-macros/README.md

# tauri-macros

 

[](https://github.com/tauri-apps/tauri/tree/dev)
[](https://opencollective.com/tauri)
[](https://github.com/tauri-apps/tauri/actions/workflows/test-core.yml)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)
[](https://discord.gg/SpmNs4S)
[](https://tauri.app)
[](https://good-labs.github.io/greater-good-affirmation)
[](https://opencollective.com/tauri)

| Component    | Version                                                                                                      |
| ------------ | ------------------------------------------------------------------------------------------------------------ |
| tauri-macros | [](https://crates.io/crates/tauri-macros) |

## About Tauri

Tauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.

Tauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task.

## This module

Create macros for the context, handler, and commands by leveraging the `tauri-codegen` crate.

To learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.

## Semver

**tauri** is following [Semantic Versioning 2.0](https://semver.org/).

## Licenses

Code: (c) 2021 - The Tauri Programme within The Commons Conservancy.

MIT or MIT/Apache 2.0 where applicable.

Logo: CC-BY-NC-ND

- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)

## 2. Official Technical Reference & Guides (tauri-apps/tauri-docs)

## File: README.md

[](https://app.netlify.com/sites/tauri-docs-starlight/deploys)

Welcome to the home for Tauri 2.0 documentation - we're excited to have you! ✨

This repo is used to build the docs for Tauri at https://tauri.app.

If you are looking for the old v1 docs, see [here](https://github.com/tauri-apps/tauri-docs/tree/v1).

[](https://gitpod.io/#https://github.com/tauri-apps/tauri-docs/tree/v2)
[](https://codespaces.new/tauri-apps/tauri-docs/tree/v2)

## Get Involved

- [Join us on Discord](https://discord.com/invite/tauri) in the [`#docs` channel](https://discord.com/channels/616186924390023171/662624589037436928) to ask any questions or give feedback
- Check out the [Tauri 2.0 Documentation Roadmap](https://github.com/tauri-apps/tauri-docs/issues/1344) and see if there's anything you'd like to get involved in
- Read the [contributing guidelines](.github/CONTRIBUTING.md) to learn how to get up and running

## Partners



|  |
| --- |



For the complete list of sponsors please visit our [website](https://tauri.app#sponsors) and [Open Collective](https://opencollective.com/tauri).

## License

MIT License

Copyright (c) 2020-2023 Tauri Programme within The Commons Conservancy

---

## File: src/content/docs/_fragments/cta.mdx

---
title: 'Create Tauri app'
---

import { Tabs, TabItem } from '@astrojs/starlight/components';

<Tabs syncKey="cmd">
<TabItem label="Bash">
```sh frame=none
sh <(curl https://create.tauri.app/sh)
```
</TabItem>
<TabItem label="PowerShell">
```sh frame=none
irm https://create.tauri.app/ps | iex
```
</TabItem>
<TabItem label="Fish">
```sh frame=none
sh (curl -sSL https://create.tauri.app/sh | psub)
```
</TabItem>
<TabItem label="npm">
```sh frame=none
npm create tauri-app@latest
```
</TabItem>
<TabItem label="Yarn">
```sh frame=none
yarn create tauri-app
```
</TabItem>
<TabItem label="pnpm">
```sh frame=none
pnpm create tauri-app
```
</TabItem>
<TabItem label="deno">
```sh frame=none
deno run -A npm:create-tauri-app
```
</TabItem>
<TabItem label="bun">
```sh frame=none
bun create tauri-app
```
</TabItem>
<TabItem label="Cargo">
```sh frame=none
cargo install create-tauri-app --locked
cargo create-tauri-app
```
</TabItem>
</Tabs>

---

## File: src/content/docs/about/book.md

---
title: The Tauri Book
i18nReady: true
---

:::note[Progress Update]

We're actively working on authoring and writing The Tauri Book. We've encountered delays due to the immense growth of Tauri but have recently re-prioritized this project. While we don't yet have details on the timelines of a release, you can keep an eye on this page for updates.

We'd like to apologize for this being delayed beyond the originally communicated publish date. If you've donated through GitHub Sponsors or Open Collective and would like to request a refund you may do so via Open Collective: [Contact Tauri on Open Collective](https://opencollective.com/tauri/contact).

:::

### Overview

The Tauri Book will guide you through the history of Tauri and the design decisions we've made. It will also talk in depth about why privacy, security and sustainability are important and fundamental discussions you can apply to any modern software project.

Topics included are:

- The method and reasoning behind the design of Tauri
- The options you have when building with Tauri
- That you don't have to choose between shipping fast and being sustainable and responsible
- Why we chose the Rust language as a binding and application layer for Tauri
- Why a binary review is important

### History

In 2020, the manufacture of native-apps has become easier and more accessible than ever before. All the same, beginners and seasoned developers alike are confronted with tough choices in a rapidly changing landscape of security and privacy. This is especially true in the semi-trusted environment of user devices.

Tauri takes the guesswork out of the equation, as it was designed from the ground up to embrace new paradigms of secure development and creative flexibility that leverage the language features of Rust and lets you build an app using any frontend framework you like. Find out how you can design, build, audit and deploy tiny, fast, robust, and secure native applications for the major desktop and mobile platforms, all from the exact same codebase and in record time - without even needing to know the Rust programming language.

Authors and Tauri co-founders Daniel and Lucas take you on a journey from theory to execution, during which you will learn why Tauri was built and how it works under the hood. Together with guest insights that specialize in Open Source, DevOps, Security and Enterprise Architecture, this book also presents discourse-formatted philosophical discussions and open-source sustainability viewpoints from which your next-gen apps will profit - and your users will benefit.

---

## File: src/content/docs/about/governance.md

---
title: Tauri Governance
i18nReady: true
---

One of the main goals of the organizational structure of Tauri is to guarantee we stay true to our open source values and do so sustainably while respecting the health and well-being of contributors. [The Tauri Programme within the Commons Conservancy](https://dracc.commonsconservancy.org/0035/) was established to commit to those values, and facilitate an open, transparent and efficient governance process throughout the future development of the Tauri and its auxiliary materials.

## Tauri Working Group

The Tauri Working Group is the collective framework created to enable this governance process. It's composed of the following components:

- Working Group Members
- Tauri Board & Board Directors
- Domains & Domain Leads
- Teams



### Working Group Members

All of the individuals that make up the Tauri Working Group.

### Tauri Board & Board Directors

The Tauri Board is the central decision making body for the Tauri Programme and is responsible for the overall health and stability of the Tauri Programme. The Board votes on major decisions within the Programme and issues raised by the Working Group.

An individual Board Director may be a technical contributor, be a stakeholder in Tauri's future, share experience from the industry, or have a passion for regulatory and legal aspects within Open Source.

### Domains & Domain Leads

Domains are organizational units that represent an area of interest within Tauri.

Domain Leads are trusted contributors within the Tauri community with expertise in the Domain they are leading. They are responsible for setting direction, overseeing and supporting the activities within that Domain.

The current Domains and Domain leads are outlined in the [Governance and Guidance repo on GitHub](https://github.com/tauri-apps/governance-and-guidance).

### Teams

Teams are small groups of contributors that support or maintain specific areas of the Tauri Programme. They are a means for Tauri to execute its longer-term tasks and goals, especially when ad-hoc contributions cannot achieve the same results.

## Get Involved

If you're interested in becoming a Tauri Board Director or a Domain Lead, elections for those positions are run throughout the year. For Domain Leads those take place in both the spring and fall and for Board Directors in the summer. Instructions for how to apply are posted to the [Tauri Blog](https://tauri.app/blog) leading up to the respective election.

## Additional Resources

- [Governance and Guidance Repository](https://github.com/tauri-apps/governance-and-guidance): More detailed information about Tauri's Governance and the current Domains and Domain Leads
- [Social Contract](https://github.com/tauri-apps/governance-and-guidance/blob/main/SOCIAL_CONTRACT.md): The social contract informs our decision making and organization
- [Code of Conduct](https://github.com/tauri-apps/governance-and-guidance/blob/main/CODE_OF_CONDUCT.md)
- [Tauri Programme Statutes](https://dracc.commonsconservancy.org/0035/)

---

## File: src/content/docs/about/index.mdx

---
title: About Tauri
i18nReady: true
---

:::tip

If you're looking for a quick technical overview and to start building an app then visit the [What is Tauri page](/start/). If you'd like to learn more about the project's philosophy then keep reading.

:::

import { LinkCard, CardGrid } from '@astrojs/starlight/components';

<CardGrid>
  <LinkCard
    title="Tauri Philosophy"
    href="/about/philosophy/"
    description="Learn more about the approach behind Tauri"
  />
  <LinkCard
    title="Governance"
    href="/about/governance/"
    description="Understand how the Tauri governance structure is setup"
  />
  <LinkCard
    title="Trademark"
    href="/about/trademark/"
    description="Guidelines for using the Tauri trademark"
  />
</CardGrid>

---

## File: src/content/docs/about/philosophy.md

---
title: Tauri Philosophy
i18nReady: true
---

Tauri is a toolkit that helps developers make applications for the major desktop platforms - using virtually any frontend framework in existence. The core is built with Rust, and the CLI leverages Node.js making Tauri a genuinely polyglot approach to creating and maintaining great apps.



## Security First

In today's world, every honest threat model assumes that the user's device has already been compromised. This puts app developers in a complicated situation because if the device is already at risk, how can the software be trusted?

Defense in depth is the approach we've taken. We want you to be able to take every precaution possible to minimize the surface area you present to attackers. Tauri lets you choose which API endpoints to ship, whether or not you want a localhost server built into your app, and it even randomizes functional handles at runtime. These and other techniques form a secure baseline that empowers you and your users.

Slowing down attackers by making static attacks crushingly difficult and isolating systems from one another is the name of the game. And if you are coming from the Electron ecosystem - rest assured - by default Tauri only ships binaries, not ASAR files.

By choosing to build Tauri with security as a guiding force, we give you every opportunity to take a proactive security posture.

## Polyglots, not Silos

Most contemporary frameworks use a single language paradigm and are therefore trapped in a bubble of knowledge and idiom. This can work well for certain niche applications, but it also fosters a kind of tribalism.

This can be seen in the way that the React, Angular, and Vue development communities huddle on their stacks, ultimately breeding very little cross-pollination.

This same situation can be seen in the Rust vs. Node vs. C++ battlefields, where hardliners take their stances and refuse to collaborate across communities.

Today, Tauri uses Rust for the backend - but in the not too distant future, other backends like Go, Nim, Python, Csharp, etc. will be possible. This is because we are maintaining the official Rust bindings to the [webview](https://github.com/webview) organization and plan to let you switch out the backend for your needs. Since our API can be implemented in any language with C interop, full compliance is only a PR away.

## Honest Open Source

None of this would make any sense without a community. Today software communities are amazing places where people help each other and make awesome things - open source is a very big part of that.

Open source means different things to different people, but most will agree that it serves to support freedom. When software doesn't respect your rights, then it can seem unfair and potentially compromise your freedoms by operating in unethical ways.

This is why we are proud that FLOSS advocates can build applications with Tauri that are "certifiably" open source and can be included in FSF endorsed GNU/Linux distributions.

## The Future

Tauri's future depends on your involvement and contributions. Try it out, file issues, join a working group or make a donation - every contribution is important. Please, at any rate, do get in touch!!!

---

## File: src/content/docs/about/trademark.md

---
title: Trademark Guidelines
i18nReady: true
---

This trademark policy was prepared to help you understand how to use the TAURI trademarks, service marks and logos owned by the Tauri Programme within the Commons Conservancy.

While our software is available under a free and open source software license, that copyright license does not include a license to use our trademark, and this Policy is intended to explain how to use our marks consistent with background law and community expectation.

**This Policy covers:**

- Our word trademarks and service marks: TAURI, TAO, WRY
- Our logos: The TAURI, TAO, WRY logos (and all visual derivatives)

This policy encompasses all trademarks and service marks, whether they are registered or not.

## General Guidelines

Whenever you use one of our marks, you must always do so in a way that does not mislead anyone about what they are getting and from whom. For example, you cannot say you are distributing TAURI software when you’re distributing a modified version of it (aka a Fork), because recipients may not understand the differences between your modified versions and our own.

You also cannot use our logo on your website in a way that suggests that your website is an official website or that we endorse your website.

You can, though, say you like TAURI software, that you participate in the TAURI community, that you are providing an unmodified version of the TAURI software.

You may not use or register our marks, or variations of them as part of your own trademark, service mark, domain name, company name, trade name, product name or service name.

Trademark law does not allow your use of names or trademarks that are too similar to ours. You therefore may not use an obvious variation of any of our marks or any phonetic equivalent, foreign language equivalent, takeoff, or abbreviation for a similar or compatible product or service. We would consider the following too similar to one of our Marks:

- TAURIMAGE
- Tauri Wallet App

## Acceptable Uses

### Applications

TAURI is a framework for making applications for computing devices. You may claim that your application uses TAURI, but care should be taken to avoid giving the impression that your application is approved by The Tauri Programme within the Commons Conservancy, or is an official application. Care must be taken, not to ship your application with the default ICON.

### Plugins & Templates

You may publish the code for plugins and templates using the appropriate naming conventions, but please mention that these works are not officially approved. Only such codebases that are managed by the organization within the GitHub organization `tauri-apps` are considered official.

## Core Modifications (Forks)

If you distribute a modified version of our software (TAURI CORE), you must remove all of our logos and naming from it. You must retain our original license in SPDX format. You may use our word marks, but not our logos, to truthfully describe the origin of the software that you are providing. For example, if the code you are distributing is a modification of our software, you may say, “This software is derived from the source code for TAURI software.”

### Statements About Compatibility

You may use the word marks, but not the logos, to truthfully describe the relationship between your software and ours. Any other use may imply that we have certified or approved your software. If you wish to use our logos, please contact us to discuss license terms.

### Naming Compatible Products

If you wish to describe your product with reference to the TAURI software, here are the conditions under which you may do so. You may call your software XYZ (where XYZ is your product name) for TAURI only if:

- All versions of the TAURI software you deliver with your product are the exact binaries provided by us, or manufactured by the core software and tooling we provide.
- Your product is fully compatible with the APIs for the TAURI software.
- You use the following legend in marketing materials or product descriptions: “TAURI is a trademark of The Tauri Programme within the Commons Conservancy. https://tauri.app/ ”

### User Groups

You can use the Word Marks as part of your user group name provided that:

- The main focus of the group is our software
- The group does not make a profit
- Any charge to attend meetings are to cover the cost of the venue, food and drink only

You are not authorized to conduct a conference using our marks.

### No Domain Names

You must not register any domain that includes our word marks or any variant or combination of them.

### Other For Profit Usage of the TAURI Marks

If you are making a video, tutorial series, book, or other educational material, for which you are receiving payment through subscriptions, sales, advertising or the like, then you must acquire explicit licensing permission from The Tauri Programme within the Commons Conservancy.

## How to Display Our Marks

When you have the right to use our mark, here is how to display it.

### Trademark Marking and Legends

The first or most prominent mention of a mark on a webpage, document, or documentation should be accompanied by a symbol indicating whether the mark is a registered trademark (“®”) or an unregistered trademark (“™”). If you don’t know which applies, contact us. (TAURI itself is a registered trademark.)

Place the following notice at the foot of the page where you have used the mark: TAURI is trademark of [The Tauri Programme within the Commons Conservancy].”

### Use of Trademarks in Text

Always use trademarks in their exact form with the correct spelling, neither abbreviated, hyphenated, or combined with any other word or words.

- Unacceptable: TAUREE
- Acceptable: TAURI

Don’t pluralize a trademark.

- Unacceptable: I have seventeen TAURIs running on my computer.
- Acceptable: I am running seventeen TAURI applications on my computer and have ram to spare.

Always use a trademark as an adjective modifying a noun.

- Unacceptable: This is a TAURI.
- Acceptable: This is a TAURI software application.

### Use of Logos

You may not change any logo except to scale it. This means you may not add decorative elements, change the colors, change the proportions, distort it, add elements, or combine it with other logos.

We have a high-contrast version of the logo, which you can download below in the assets section.

## Assets

- Here you may download the entire [Brand Guidelines](/assets/brand_guidelines.pdf) - (PDF, 74.3 MB)
- Here you may download SVG and PNG formats of the LOGO and Wordmark in the [Logopack](/assets/logopack.zip) - (ZIP, 203 KB)

---

The Tauri Programme within the Commons Conservancy retains all rights to the modification of these trademark guidelines at any time. If you have a question or enquiry, please send an email to `trademark@tauri.app`.

These guidelines are based on the Model Trademark Guidelines, available at http://www.modeltrademarkguidelines.org, used under a Creative Commons Attribution 3.0 Unported license: https://creativecommons.org/licenses/by/3.0/deed.en_EU. Version 1.0 dated 20th, August 2022

---

## File: src/content/docs/blog/create-tauri-app-version-3-released.md

---
title: create-tauri-app Version 3 Released
date: 2023-03-01
authors: [amrbashir]
excerpt: create-tauri-app Version 3 is released with support for alpha versions of Tauri, mobile project support and DX improvements
image: ./create-tauri-app-version-3-released/header.jpg
---



A new major version of [create-tauri-app](https://github.com/tauri-apps/create-tauri-app) has been released. This version adds support for the alpha version of Tauri 2.0, the ability to initialize iOS and Android projects and removes some less commonly used templates to make the project more maintainable.

## Tauri 2.0 Alpha & Mobile Support

The [first alpha version of Tauri 2.0 was published almost 3 months ago](https://tauri.app/blog/2022/12/09/tauri-mobile-alpha) which brought initial mobile support for Android and iOS. Previously there wasn't an easy way to create a new project to test either the changes in the alpha version nor the mobile support. Well, that ends now!

Starting with version 3 of [create-tauri-app](https://github.com/tauri-apps/create-tauri-app), you can now pass `--beta` flag and it will bootstrap an app that uses `tauri@2.0.0-beta`. When adding the `--beta` flag it will automatically prompt you if you'd like to add mobile support. You can also use the `--mobile` flag to automatically make it mobile compatible.

To get started:

```bash
# pnpm
pnpm create tauri-app --alpha

# yarn
yarn create tauri-app --alpha

# npm
npm create tauri-app -- --alpha

# Cargo
cargo install create-tauri-app --locked
cargo create-tauri-app --alpha

# Bash
sh <(curl https://create.tauri.app/sh) --alpha

# Powershell
$env:CTA_ARGS="--alpha";iwr -useb https://create.tauri.app/ps | iex
```

## Prompt Improvements

With version 2 of create-tauri-app we also focused on improving the flow and experience of the prompted questions.

Previously the second prompt would ask "Choose your package manager". This was a bit vague and could leave some with unanswered questions:

- What is `cargo`?
- Is it a new Node.js package manager?
- Why choose it over `pnpm` or `yarn`?

This would be even more vague if we decided to add a new frontend language (such as a webassembly Golang web application). We added a prompt asking to choose the package manager to ask which language would you prefer. It looks something like this:

```
? Choose which language to use for your frontend ›
  Rust
❯ TypeScript / JavaScript  (pnpm, yarn, npm)
```

After choosing the frontend language create-tauri-app will then prompt for package manager to use if the language has multiple (such as Node.js with npm, yarn, and pnpm).

Another prompt that we felt problematic was the template selection prompt. It contained a lot of templates to choose from and was only growing with time:

```
✔ Choose your package manager · pnpm
? Choose your UI template ›
  vanilla
  vanilla-ts
  vue
❯ vue-ts
  svelte
  svelte-ts
  react
  react-ts
  solid
  solid-ts
  next
  next-ts
  preact
  preact-ts
  angular
  clojurescript
  svelte-kit
  svelte-kit-ts
```

We decided to split this up into 2 prompts. The first will ask which UI template to use:

```
✔ Choose your package manager · pnpm
? Choose your UI template ›
  Vanilla
❯ Vue
  Svelte
  React
  Solid
  Angular
  Next
  SvelteKit
  ClojureScript
  Preact
```

And then the second will then ask any additional choices that are specific to that template (such as choosing between TypeScript or JavaScript for Vue):

```
✔ Choose your package manager · pnpm
✔ Choose your UI template · Vue - (https://vuejs.org)
? Choose your UI flavor ›
❯ TypeScript
  JavaScript
```

Even with these refinements the list of templates was still quite large and would only grow over time. The next thing to look at was the list of templates themselves.

## Removing Templates

When create-tauri-app version 2 was launched it quickly received PRs to add additional templates beyond what it originally launched with. While it was exciting to receive so much support from the community, it did bring up a couple of new challenges:

- It made it almost impossible to fit them in a single prompt
- Maintaining all the templates was becoming more difficult

It was a hard balance between showing how flexible Tauri is but also making sure that the project was maintainable and had the DX that we wanted.

We decided to focus on the most popular frontend frameworks and used guidance from community surveys like [The State of JS](https://2022.stateofjs.com/en-US/libraries/front-end-frameworks/) and our own Tauri community feedback. With this we removed the `next`, `next-ts`, `preact`, `preact-ts`, `clojurescript`, `svelte-kit` and `svelte-kit-ts` templates and also closed PRs which aimed to add more templates.

## Community-Maintained Templates & Previous Versions

We want to make sure that we offer a place for the Tauri community to provide their own templates for the frameworks they love. The templates section of [awesome-tauri](https://github.com/tauri-apps/awesome-tauri#templates) is just the place for that. We invite the community to submit a PR to the awesome-tauri repo with their templates so that they can be shared with the Tauri community. We'll also be creating a section on the Tauri website to highlight and showcase these community templates.

If you'd still like to use the previous templates from version 2 of create-tauri-app they are still published to npm and crates.io. Here's how you can use a previous version:

```bash
# pnpm
pnpm create tauri-app@2

# yarn
yarn create tauri-app@2

# npm
npm create tauri-app@2

# Cargo
cargo install create-tauri-app --version 2.8.0 --locked
cargo create-tauri-app

# Bash
sh <(curl https://create.tauri.app/v/2.8.0/sh)

# Powershell
iwr -useb https://create.tauri.app/v/2.8.0/ps | iex
```

However, as time goes, these templates will become out of date as Tauri and the frontend frameworks move forward. We'd recommend you look at the community templates in the [awesome-tauri](https://github.com/tauri-apps/awesome-tauri) repo and welcome submissions if something is missing.

---

We hope that these changes make it easier for the community to try out the alpha and beta versions of Tauri 2.0 and also make the process to create a new Tauri app easier for everyone! We'd love to hear your feedback and invite you to join the conversation on the [GitHub Discussion for this post](https://github.com/tauri-apps/tauri-docs/discussions/1137).

---

## File: src/content/docs/blog/cve-2024-24576.md

---
title: Rust Security Advisory CVE-2024-24576
date: 2024-04-10
authors: [tweidinger, chip]
excerpt: Recent Rust Security Advisory CVE-2024-24576.
---

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?

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?

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

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.