"tauri build is two jobs wearing one command: compile a release binary, then wrap it in installers people can actually double-click."
The Two Phases
Running tauri build first executes your beforeBuildCommand to produce the static frontend, then compiles the Rust core in release mode (optimized, slow to compile, small and fast to run), embeds the frontend into the binary, and finally hands off to the bundler, which produces the OS-native installer formats. The result isn't a loose executable you email — it's proper installers under src-tauri/target/release/bundle/.
Release Is a Different Animal
Everything you measured in tauri dev was a debug build. Release applies real optimization: the binary shrinks dramatically and runs faster, which is where Tauri's 'tiny app' reputation actually lives. The flip side is compile time — a clean release build can take minutes. This is why people cache the Rust target/ directory in CI and why you only judge size/performance from release output, never dev.
Build Knobs You'll Use
Two flags matter early. --no-bundle compiles the binary without producing installers — perfect for a CI 'does it build?' check where you don't need the packaged output. --bundles <format> limits which installer formats are produced (e.g. just dmg) instead of everything configured. And --debug bundles a debug build when you need to package something for testing without full release optimization.