--- name: tauri2-mobile description: Expert guidance for developing, testing, and deploying mobile applications with Tauri 2. Use when working with Tauri 2 mobile development for Android/iOS, including project setup, Rust backend patterns, frontend integration, plugin usage (biometric, geolocation, notifications, IAP), emulator/ADB testing, code signing, and Play Store/App Store deployment. --- # Tauri 2 Mobile Development Build cross-platform mobile apps with Tauri 2 using web technologies (HTML/CSS/JS) for UI and Rust for native backend. ## Quick Reference | Task | Command | |------|---------| | Init mobile | `npm run tauri android init` / `npm run tauri ios init` | | Dev Android | `npm run tauri android dev` | | Dev iOS | `npm run tauri ios dev` | | Build APK | `npm run tauri android build --apk` | | Build AAB | `npm run tauri android build --aab` | | Build iOS | `npm run tauri ios build` | | Add plugin | `npm run tauri add ` | ## Workflow Decision Tree ### New Project Setup 1. Read [references/setup.md](references/setup.md) for environment configuration 2. Run `npm create tauri-app@latest` with mobile targets 3. Configure `tauri.conf.json` with app identifier ### Adding Features - **Native functionality**: Read [references/plugins.md](references/plugins.md) - **Rust commands/state**: Read [references/rust-patterns.md](references/rust-patterns.md) - **Frontend integration**: Read [references/frontend-patterns.md](references/frontend-patterns.md) - **Authentication/OAuth**: Read [references/authentication.md](references/authentication.md) - **In-app purchases**: Read [references/iap.md](references/iap.md) ### Testing - **Emulator/ADB debug**: Read [references/testing.md](references/testing.md) - Use `adb logcat | grep -iE "(tauri|RustStdout)"` for logs ### Building & Deployment - **Code signing & stores**: Read [references/build-deploy.md](references/build-deploy.md) - **CI/CD pipelines**: Read [references/ci-cd.md](references/ci-cd.md) ## Project Structure ``` my-app/ ├── src/ # Frontend ├── src-tauri/ │ ├── Cargo.toml │ ├── tauri.conf.json # Main config │ ├── src/ │ │ ├── main.rs # Desktop entry (don't modify) │ │ └── lib.rs # Main code + mobile entry │ ├── capabilities/ │ │ └── default.json # Permissions │ └── gen/ │ ├── android/ # Android Studio project │ └── apple/ # Xcode project ``` ## Essential Configuration ### tauri.conf.json ```json { "$schema": "https://schema.tauri.app/config/2", "productName": "MyApp", "identifier": "com.company.myapp", "bundle": { "iOS": { "minimumSystemVersion": "14.0" }, "android": { "minSdkVersion": 24 } } } ``` ### capabilities/default.json ```json { "identifier": "default", "windows": ["main"], "permissions": ["core:default"] } ``` ### lib.rs (Mobile Entry) ```rust #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_opener::init()) .plugin(tauri_plugin_deep_link::init()) .invoke_handler(tauri::generate_handler![greet]) .run(tauri::generate_context!()) .expect("error"); } #[tauri::command] fn greet(name: &str) -> String { format!("Hello, {}!", name) } ``` ## Common Issues | Problem | Solution | |---------|----------| | White screen | Check JS console, verify `devUrl`, check capabilities | | iOS won't connect | Use `--force-ip-prompt`, select IPv6 | | INSTALL_FAILED_ALREADY_EXISTS | `adb uninstall com.your.app` | | Emulator not detected | Verify `adb devices`, restart ADB | | HMR not working | Configure `vite.config.ts` with `TAURI_DEV_HOST` | | Shell plugin URL error | Use `opener` plugin instead (`openUrl()`) | | Google OAuth fails | Google blocks WebView; use system browser flow | | Deep link not received | Check scheme in tauri.conf.json, init plugin | | Safe area CSS fails on Android | `env()` not supported in WebView; use JS fallback | | Windows APK build symlink error | Enable Developer Mode or copy .so files manually | See [references/testing.md](references/testing.md) for detailed troubleshooting. ## Resources - Docs: https://v2.tauri.app - Plugins: https://v2.tauri.app/plugin/ - GitHub: https://github.com/tauri-apps/tauri