tauri-build-v2.7.0

tauri-apps/tauritauri-build-v2.7.0Sep 26, 2026by github-actions[bot]

Upgrading?

AI Summary

This build script release adds configuration path customization and static VC runtime control. It also fixes resource directory watching and target directory resolution issues.

Key Highlights

  • Added `Attributes::config_path` to customize the config path
  • Added `WindowsAttributes::static_vc_runtime` for MSVC static runtime linking
  • Fixed resource directory watching to detect added files
  • Fixed target directory resolution by walking up from `OUT_DIR`
  • Fixed capabilities directory path resolution

New Features

  • `Attributes::config_path`
  • `WindowsAttributes::static_vc_runtime`
  • enhanced resource directory watching
  • fixed target directory resolution
  • fixed capabilities directory path emission

Full Release Notes

<details>
<summary><em><h4>Cargo Audit</h4></em></summary>

```
Fetching advisory database from `https://github.com/RustSec/advisory-db.git`
      Loaded 1271 security advisories (from /home/runner/.cargo/advisory-db)
    Updating crates.io index
    Scanning Cargo.lock for vulnerabilities (1091 crate dependencies)
Crate:     fxhash
Version:   0.2.1
Warning:   unmaintained
Title:     fxhash - no longer maintained
Date:      2025-09-05
ID:        RUSTSEC-2025-0057
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0057

Crate:     paste
Version:   1.0.15
Warning:   unmaintained
Title:     paste - no longer maintained
Date:      2024-10-07
ID:        RUSTSEC-2024-0436
URL:       https://rustsec.org/advisories/RUSTSEC-2024-0436

Crate:     rustls-pemfile
Version:   2.2.0
Warning:   unmaintained
Title:     rustls-pemfile is unmaintained
Date:      2025-11-28
ID:        RUSTSEC-2025-0134
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0134

Crate:     rustybuzz
Version:   0.20.1
Warning:   unmaintained
Title:     `rustybuzz` is unmaintained
Date:      2026-07-11
ID:        RUSTSEC-2026-0206
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0206

Crate:     ttf-parser
Version:   0.25.1
Warning:   unmaintained
Title:     `ttf-parser` is unmaintained
Date:      2026-06-28
ID:        RUSTSEC-2026-0192
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0192

warning: 5 allowed warnings found
```

</details>

## [2.7.0]

### New Features

- [`4e36f6725`](https://www.github.com/tauri-apps/tauri/commit/4e36f67251ec63a81fee23a524bf2c8b61064dea) ([#15306](https://www.github.com/tauri-apps/tauri/pull/15306)) Added `Attributes::config_path` to customize config path, deprecated `CodegenContext::config_path` in favor of this
- [`f6c1eb253`](https://www.github.com/tauri-apps/tauri/commit/f6c1eb2533a0445e081c334931d67fee3e354c6f) ([#15401](https://www.github.com/tauri-apps/tauri/pull/15401)) Added `tauri_build::WindowsAttributes::static_vc_runtime` to control MSVC static runtime linking from build scripts.

### Enhancements

- [`19215f638`](https://www.github.com/tauri-apps/tauri/commit/19215f638a5889afef4333b2e5a402051f21b891) ([#15629](https://www.github.com/tauri-apps/tauri/pull/15629)) Emit a `cargo:rerun-if-changed` for each resource directory (and glob base directory), so that adding or removing a file inside a resource directory re-runs the build script and copies the new files. Previously only the individual files present at build time were watched, so newly added files were silently ignored until an unrelated rebuild.
- [`459fc315e`](https://www.github.com/tauri-apps/tauri/commit/459fc315eb790d9aa2d2cea693c20c8978f4b1b0) ([#15711](https://www.github.com/tauri-apps/tauri/pull/15711)) Fix different build and runtime debug assertion profiles on the tauri-utils crate can resulting in compilation errors.

### Bug Fixes

- [`d203f74a2`](https://www.github.com/tauri-apps/tauri/commit/d203f74a2359b8839e0eb7376118fb20af3b807c) ([#15274](https://www.github.com/tauri-apps/tauri/pull/15274)) The `.ico` from `bundle > icon` (or the `icons/icon.ico` fallback) embedded as the Windows application icon is now resolved relative to the config file directory instead of the build script's working directory, so it works with `Attributes::config_path`.
- [`dd6befda9`](https://www.github.com/tauri-apps/tauri/commit/dd6befda925845fc74ca595d6d42de6c49580dd8) ([#15918](https://www.github.com/tauri-apps/tauri/pull/15918)) Emit an absolute path for the capabilities directory `cargo:rerun-if-changed`. Cargo resolves a relative watch path against the package owning the build script, while the capabilities glob is resolved against the process working directory, so callers that change the current directory before `try_build`/`try_build_context` ended up watching a non-existent directory — which is always dirty and re-ran the build script (and recompiled everything downstream) on every build.
- [`c0bd0d5a6`](https://www.github.com/tauri-apps/tauri/commit/c0bd0d5a61eedba5c4783add24455c5028c6f390) ([#15831](https://www.github.com/tauri-apps/tauri/pull/15831)) Resolve the target directory by walking up from `OUT_DIR` to the `build` directory instead of assuming it is exactly three levels up. Recent nightly toolchains add another level to `OUT_DIR`, which made sidecars and resources land in `target/debug/build` instead of `target/debug`.
- [`fc3a8108e`](https://www.github.com/tauri-apps/tauri/commit/fc3a8108e9e942982f8d4809af43b238e4f97a3f) ([#16074](https://www.github.com/tauri-apps/tauri/pull/16074)) Validate the capabilities inlined in the `app > security > capabilities` configuration value, which previously skipped the build script validation and only failed later with a generic `failed to resolve ACL` panic when a permission identifier was unknown.

### What's Changed

- [`2e6e33c85`](https://www.github.com/tauri-apps/tauri/commit/2e6e33c8501c66c9a49aad861048d39345cfb26f) ([#16029](https://www.github.com/tauri-apps/tauri/pull/16029)) Moved to edition 2024
- [`ce3f13b91`](https://www.github.com/tauri-apps/tauri/commit/ce3f13b91a75cb723f229f56a3e82eb5f2d3f644) ([#15887](https://www.github.com/tauri-apps/tauri/pull/15887)) Lock unstable tauri crates to minor versions.
- [`1cffb01da`](https://www.github.com/tauri-apps/tauri/commit/1cffb01da55f5fcd5a0f74ef3281b5a715513e4d) ([#13221](https://www.github.com/tauri-apps/tauri/pull/13221)) Set MSRV to 1.90.

### Dependencies

- Upgraded to `tauri-utils@2.10.0`
- Upgraded to `tauri-codegen@2.7.0`
- [`e2e585ad1`](https://www.github.com/tauri-apps/tauri/commit/e2e585ad1196c9572f86ef39aae01ef4c3b1a762) ([#15828](https://www.github.com/tauri-apps/tauri/pull/15828)) On Android, updated the template to use Gradle v9.6.1 (`com.android.tools.build:gradle` v9.3.1) and Kotlin v2.2. Use `tauri android init` to apply the change.
- [`2bb4fdbd0`](https://www.github.com/tauri-apps/tauri/commit/2bb4fdbd0252ca414e28bdc9f0284ac4ff108f26) ([#15592](https://www.github.com/tauri-apps/tauri/pull/15592)) Updated `cargo_toml` crate to `1`

<details>
<summary><em><h4>Cargo Publish</h4></em></summary>

```
Updating crates.io index
   Packaging tauri-build v2.7.0 (/home/runner/work/tauri/tauri/crates/tauri-build)
    Updating crates.io index
    Packaged 15 files, 153.0KiB (42.0KiB compressed)
   Verifying tauri-build v2.7.0 (/home/runner/work/tauri/tauri/crates/tauri-build)
 Downloading crates ...
  Downloaded cargo_toml v1.0.0
  Downloaded embed-resource v3.0.9
  Downloaded tauri-winres v0.3.6
   Compiling find-msvc-tools v0.1.6
   Compiling shlex v1.3.0
   Compiling rustc_version v0.4.1
   Compiling tauri-utils v2.10.0
   Compiling cc v1.2.51
   Compiling cargo_toml v1.0.0
   Compiling embed-resource v3.0.9
   Compiling tauri-winres v0.3.6
   Compiling tauri-build v2.7.0 (/home/runner/work/tauri/tauri/target/package/tauri-build-2.7.0)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.13s
   Uploading tauri-build v2.7.0 (/home/runner/work/tauri/tauri/crates/tauri-build)
    Uploaded tauri-build v2.7.0 to registry `crates-io`
note: waiting for tauri-build v2.7.0 to be available at registry `crates-io`
help: you may press ctrl-c to skip waiting; the crate should be available shortly
   Published tauri-build v2.7.0 at registry `crates-io`
```

</details>

Related Repositories