All tests run on an 8-year-old MacBook Air.
All results from shipping 7 Mac apps as a solo developer. No sponsored opinion.
The first Tauri app I shipped had inconsistent error handling. Some commands returned strings. Some panicked. Some silently swallowed errors.
Here's the pattern I settled on after 7 apps.
The problem with naive error handling
Tauri commands return Result where E must implement serde::Serialize. The temptation is to just return String for errors:
rust#[tauri::command]
fn do_something() -> Result {
some_operation().map_err(|e| e.to_string())
}
This works. It's also a mess at scale. The frontend gets an untyped string. You can't match on error types. Logging is inconsistent.…