tauri-apps/tauri · error

You must change the bundle identifier in `{bundle_identifier

Error message

You must change the bundle identifier in `{bundle_identifier_source} identifier`. The default value `com.tauri.dev` is not allowed as it must be unique across applications.

What it means

Before building or devving, the CLI validates `config.identifier` and rejects the scaffold default `com.tauri.dev`, because bundle identifiers must be unique across applications (it is used for app IDs, macOS bundle IDs, and Android application IDs). The message names the config file that actually supplies the identifier (`find_bundle_identifier_overwriter`, e.g. a platform-specific `tauri.conf.json` override).

Source

Thrown at crates/tauri-cli/src/build.rs:173

  // TODO: Maybe optimize this to run in parallel in the future
  // see https://github.com/tauri-apps/tauri/pull/13993#discussion_r2280697117
  log::info!("Looking up installed tauri packages to check mismatched versions...");
  if let Err(error) = check_mismatched_packages(dirs.frontend, dirs.tauri) {
    if options.ignore_version_mismatches {
      log::error!("{error}");
    } else {
      return Err(error);
    }
  }

  set_current_dir(dirs.tauri).context("failed to set current directory")?;

  let bundle_identifier_source = config
    .find_bundle_identifier_overwriter()
    .unwrap_or_else(|| "tauri.conf.json".into());

  if config.identifier == "com.tauri.dev" {
    crate::error::bail!(
      "You must change the bundle identifier in `{bundle_identifier_source} identifier`. The default value `com.tauri.dev` is not allowed as it must be unique across applications.",
    );
  }

  if config
    .identifier
    .chars()
    .any(|ch| !(ch.is_alphanumeric() || ch == '-' || ch == '.'))
  {
    crate::error::bail!(
      "The bundle identifier \"{}\" set in `{bundle_identifier_source:?} identifier`. The bundle identifier string must contain only alphanumeric characters (A-Z, a-z, and 0-9), hyphens (-), and periods (.).",
      config.identifier,
    );
  }

  if config.identifier.ends_with(".app") {
    log::warn!(
      "The bundle identifier \"{}\" set in `{bundle_identifier_source:?} identifier` ends with `.app`. This is not recommended because it conflicts with the application bundle extension on macOS.",

View on GitHub (pinned to 52e4b6e71d)

Solutions

  1. Edit the file named in the error and set a unique reverse-DNS identifier, e.g. `"identifier": "com.mycompany.myapp"`
  2. If a platform-specific config (e.g. `tauri.windows.conf.json`) overwrites `identifier`, change it there — that is the file the error points to
  3. Use your domain reversed plus the app name; any alphanumeric/hyphen/period string that is not `com.tauri.dev` passes this check

Example fix

// before (tauri.conf.json)
{ "identifier": "com.tauri.dev" }

// after
{ "identifier": "com.mycompany.myapp" }
Defensive patterns

Strategy: validation

Validate before calling

#!/usr/bin/env bash
# fail fast on the scaffold default before building
id=$(jq -r '.identifier' src-tauri/tauri.conf.json)
[ "$id" = "com.tauri.dev" ] && { echo 'identifier is still com.tauri.dev' >&2; exit 1; }

Prevention

When it happens

Trigger: Running `tauri build`/`tauri dev` on a freshly scaffolded project (or one copied from a template) whose `identifier` was never changed from `com.tauri.dev`.

Common situations: First build after `tauri init`; duplicating a template project and forgetting the identifier; the identifier being set only in a platform override file such as `tauri.macos.conf.json` while the base config still carries the default.

Related errors


AI-assisted analysis of tauri-apps/tauri@52e4b6e71d (2026-08-20). Data as JSON: /api/errors/c0d1696e6a3382da. Report an issue: GitHub.