tauri-apps/tauri · critical

Unexpected target triple

Error message

Unexpected target triple {}

What it means

BundleSettings::arch() parses the Rust target triple to pick the bundle architecture. If the triple's prefix matches none of the known architectures (x86_64, x86, aarch64, riscv64, universal), the bundler panics with this message.

Solutions

  1. Build for a supported architecture: x86_64-*, x86_*/i?86-*, aarch64-*, riscv64-*, or universal-apple-darwin
  2. If you need a new arch, patch the bundler (crates/tauri-bundler/src/bundle/settings.rs) to map its prefix to an Arch variant
  3. Check for typos in --target and verify the triple with `rustup target list` / `rustc -vV`

Example fix

// before
cargo tauri build --target armv7-unknown-linux-gnueabihf
// after
cargo tauri build --target aarch64-unknown-linux-gnu  # supported triple
Defensive patterns

Strategy: validation

Validate before calling

const TARGET = process.env.TARGET;
const SUPPORTED = /^(x86_64|x86|aarch64|riscv64|universal)/;
if (!SUPPORTED.test(TARGET)) throw new Error(`unsupported target: ${TARGET}`);

Type guard

function isSupportedTarget(t: string): boolean {
  return /^(x86_64|x86|aarch64|riscv64|universal)/.test(t);
}

Prevention

When it happens

Trigger: cargo-tauri build/bundle invoked with --target set to an unsupported triple (or TARGET env in cross-compilation) whose prefix is not one of the recognized architecture prefixes in settings.rs.

Common situations: Cross-compiling to an exotic target (armv7, mips, loongarch64); typo'd or custom-built target triple; a newly used toolchain target the bundler version doesn't map yet.

Related errors


AI-assisted analysis of tauri-apps/tauri@460ec35447 (2026-09-18). Data as JSON: /api/errors/8b6a54c60017b483. Report an issue: GitHub.

Appendix: source

Thrown at crates/tauri-bundler/src/bundle/settings.rs:1051

  /// Returns the architecture for the binary being bundled (e.g. "arm", "x86" or "x86_64").
  pub fn binary_arch(&self) -> Arch {
    if self.target.starts_with("x86_64") {
      Arch::X86_64
    } else if self.target.starts_with('i') {
      Arch::X86
    } else if self.target.starts_with("arm") && self.target.ends_with("hf") {
      Arch::Armhf
    } else if self.target.starts_with("arm") {
      Arch::Armel
    } else if self.target.starts_with("aarch64") {
      Arch::AArch64
    } else if self.target.starts_with("riscv64") {
      Arch::Riscv64
    } else if self.target.starts_with("universal") {
      Arch::Universal
    } else {
      panic!("Unexpected target triple {}", self.target)
    }
  }

  /// Returns the file name of the binary being bundled.
  pub fn main_binary(&self) -> crate::Result<&BundleBinary> {
    self
      .binaries
      .iter()
      .find(|bin| bin.main)
      .context("failed to find main binary, make sure you have a `package > default-run` in the Cargo.toml file")
  }

  /// Returns the file name of the binary being bundled.
  pub fn main_binary_mut(&mut self) -> crate::Result<&mut BundleBinary> {
    self
      .binaries
      .iter_mut()
      .find(|bin| bin.main)

View on GitHub (pinned to 460ec35447)