# Tauri State Events

> Tauri State & Events

- Skill: `comeonoliver/tauri-state-events` (Agent Skill)
- Install (CLI): `npx skillmds@latest add comeonoliver/tauri-state-events`
- Raw SKILL.md: https://api.skillmd.com/api/skills/comeonoliver/tauri-state-events/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ComeOnOliver (https://skillmd.com/u/comeonoliver)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/comeonoliver/tauri-state-events

---

# Tauri State & Events

## Shared State
```rust
use std::sync::Mutex;
use tauri::State;

struct AppState { counter: Mutex<i32> }

#[tauri::command]
fn increment(state: State<AppState>) -> i32 {
    let mut c = state.counter.lock().unwrap();
    *c += 1; *c
}

// Register: .manage(AppState { counter: Mutex::new(0) })
```

## Events (Rust → Frontend)
```rust
use tauri::{AppHandle, Emitter};
#[tauri::command]
async fn long_task(app: AppHandle) {
    for i in 0..100 {
        app.emit("progress", i).unwrap();
        tokio::time::sleep(std::time::Duration::from_millis(50)).await;
    }
}
```

```typescript
import { listen } from "@tauri-apps/api/event";
await listen<number>("progress", (e) => console.log(e.payload));
```

## Error Handling
```rust
#[tauri::command]
fn risky_op() -> Result<String, String> {
    Err("Something failed".into()) // Reaches frontend as error
}
```

