Common Errors
Permission Denied For Plugin Call
| Symptom | Likely cause | Fix |
|---|---|---|
| Frontend plugin call fails with denied permission | Capability file missing permission | Add the exact plugin permission to the capability for the relevant window |
| Works in one window but not another | Capability attaches only to one window label | Add or split capability intentionally |
| Works after broad permission added | Scope was too narrow or wrong | Keep the narrow permission and fix the scope instead of broadening blindly |
Command Not Found
| Symptom | Likely cause | Fix |
|---|---|---|
invoke rejects command name | Rust command not registered | Add it to tauri::generate_handler! |
| Command works in desktop but not mobile | Conditional cfg registration differs | Check desktop/mobile handler lists |
| Payload deserialization fails | Frontend shape differs from Rust struct | Test wrapper with mockIPC and align names |
Sidecar Missing
| Symptom | Likely cause | Fix |
|---|---|---|
| Sidecar works in dev but not release | Binary not bundled for target triple | Verify bundle.externalBin and release artifact contents |
| Spawn denied | Missing shell permission | Add narrow shell:allow-spawn or execute permission with args scope |
| Dynamic arg rejected | Validator does not match | Tighten frontend input or update validator intentionally |
| Process hangs on exit | Cleanup path missing | Add shutdown cleanup and test app exit |
WebView2 Runtime Missing
| Symptom | Likely cause | Fix |
|---|---|---|
| Windows app fails on clean machine | WebView2 Runtime missing and installer skipped it | Choose a WebView2 install mode and rebuild installer |
| Store package rejected or fails install | Offline/silent installer expectations unmet | Use offline installer mode and silent install settings |
Updater Fails
| Symptom | Likely cause | Fix |
|---|---|---|
| Update rejected | Missing or invalid updater signature | Regenerate signed artifacts with the correct private key |
| Check finds no update | Endpoint JSON wrong or unreachable | Validate static JSON or update server response |
| Future updates impossible | Private key lost | Treat as release incident; users may need a new install path |
| Signed app still cannot update | OS signing confused with updater signing | Configure both signing paths separately |
Mobile Build Fails
| Symptom | Likely cause | Fix |
|---|---|---|
| Android build fails | SDK, NDK, env vars, or Rust targets missing | Recheck Tauri Android prerequisites |
| iOS build fails | Not on macOS, Xcode/CocoaPods missing, or signing unavailable | Use macOS with required iOS setup |
| Plugin missing on mobile | Plugin has no mobile implementation | Add Kotlin/Swift plugin path or choose another stack |
| App freezes on Android | Long plugin work on main thread | Move work to background dispatcher |