"Tauri already won the big size battle for you by not shipping Chromium. The rest is fine-tuning a binary that's tiny to begin with."
The Biggest Win Is Already Free
Keep perspective: the reason a Tauri app is megabytes instead of hundreds is that it doesn't bundle a browser engine. That structural decision is the 95% win, and you got it for free by choosing Tauri. Everything below is squeezing the last bit out of an already-small binary — worth doing for a polished release, but don't mistake it for the main event.
The Cargo Release Profile
The biggest remaining lever is the Rust [profile.release] in Cargo.toml. Turning on link-time optimization (lto = true), reducing codegen units to one (slower compile, smaller/faster output), stripping symbols (strip = true), optimizing for size (opt-level = "s" or "z"), and aborting on panic (panic = "abort") together can meaningfully shrink the binary. These trade compile time for a leaner release — fine, since you build releases rarely.
Don't Forget the Frontend
Your bundled web assets count toward app size too. The same frontend discipline from your web work applies: let Vite tree-shake and code-split, drop unused dependencies, compress images, and ship only what the app uses. And keep the deny-by-default plugin habit — every plugin and feature you pull in adds to the binary, so the lean capabilities file you maintained for security doubles as a size benefit. Tight grants, tight binary.