Pitfalls
Stale Tauri 1 Allowlist Examples
Tauri 2 uses capabilities, permissions, and scopes. Old snippets that edit a v1-style allowlist are suspect.
Fix:
Find the Tauri 2 permission identifier.
Attach it to the correct capability file.
Scope it to the smallest paths, URLs, commands, or arguments.
Attach the capability only to the windows/webviews that need it.
SSR Confusion
Tauri’s frontend layer works best as static output. SSR-first frameworks can work only when configured for static or client-server behavior appropriate for the app.
Fix:
Use Vite SPA/SSG output first.
Set `frontendDist` to built static assets.
Do not assume an in-app Node server exists.
Broad Capabilities
Broad permissions are easy to copy from production apps. They are hard to defend in a new starter.
Fix:
Start with `core:default`.
Add one plugin permission at a time.
Use scopes for files, URLs, and shell args.
Review merged boundaries when a window matches multiple capabilities.
Unsafe Sidecar Args
Sidecars turn webview input into native process execution if you are careless.
Fix:
Prefer exact argument lists.
Use validators for dynamic values.
Reject free-form shell strings.
Never pass user input through a shell interpreter.
Log process starts and exits without logging secrets.
Target-Triple Mistakes
Each sidecar binary needs a platform-specific target-triple suffix. A dev machine can hide missing release binaries.
Fix:
List every target OS and architecture.
Verify each sidecar binary exists before release build.
Smoke the packaged artifact, not only the dev command.
WebView2 Assumptions
Windows users need the WebView2 Runtime. Microsoft Edge Stable is not the production runtime for your app.
Fix:
Choose Evergreen bootstrapper, embedded bootstrapper, offline installer, Fixed Version, or skip intentionally.
Do not skip installation for public distribution.
Use offline installer mode for Microsoft Store EXE/MSI flow.
Smoke on a clean Windows machine or VM.
Linux WebKitGTK Differences
Linux uses WebKitGTK. CSS, media, font, GPU, sandbox, and package dependencies can differ from WebView2 and WKWebView.
Fix:
Install documented Linux prerequisites.
Run a Linux release smoke.
Record distro, package versions, and display server.
Mobile Parity Claims
Tauri 2 supports mobile, but plugin support, permissions, Kotlin/Swift bridge code, store signing, and device behavior are not automatic.
Fix:
Check each plugin for Android and iOS support.
Run Android/iOS build and smoke separately.
Treat sidecars and updater behavior as platform-specific until proved.
Updater Key Loss
The Tauri updater uses signed update artifacts. Losing the private key prevents installed users from receiving future updates signed by that key.
Fix:
Store private keys in approved secrets infrastructure.
Document recovery and rotation before launch.
Do not commit signing keys.
Do not rely on `.env` files for build-time updater signing.