All tests run on an 8-year-old MacBook Air. All results from shipping 7 Mac apps as a solo developer. No sponsored opinion.
Not a listicle of everything possible. Just what I actually open every day.
rust-analyzer: non-negotiable. Inline type hints, error detection, jump to definition. Rust without rust-analyzer is painful.
Continue: local LLM autocomplete via Ollama. Handles boilerplate and repetitive patterns without API calls.
Even Better TOML: Cargo.toml syntax and validation. Small but useful.
Tauri: official Tauri extension with command palette integration.
Ollama + qwen2.5-coder:1.5b: autocomplete. Runs locally. Never leaves the machine.
Gemini: quick questions, syntax lookups, anything where speed matters more than depth. Free tier covers daily use.
Claude: hard Rust bugs, architecture decisions, anything where being wrong is expensive. Free tier for targeted use.
Default macOS Terminal works. iTerm2's split panes are useful when running npm run tauri dev
alongside a shell for ADB commands.
Commit before handing off to AI tools. This saved me twice when AI tools made silent regressions — I could diff against the last commit and see exactly what changed.
The rule: never let AI touch code that isn't committed.
Tauri apps have a WebView. Cmd+Option+I
opens DevTools in dev mode. Frontend bugs debugged exactly like a web app.
Backend: RUST_LOG=debug npm run tauri dev
shows Rust log output in the terminal.
I'm not a designer. For UI, I use Tailwind CSS utility classes and reference existing Mac app conventions. I don't use Figma.
For app icons — my weakest point — I iterate on simple concepts and accept "good enough." The icon isn't the product. Solo dev means every tool has to justify its overhead. Most don't.
TL;DR: My daily stack as a solo Rust + Tauri dev: VS Code with rust-analyzer, three-tier AI (Ollama locally, Gemini for quick lookups, Claude for hard bugs), iTerm2, and Git with a strict "commit before AI" rule. No Figma, no CI/CD, no project management tool — if it can't justify its overhead, it's out.
If this was useful, a ❤️ helps more than you'd think — thanks!
[HiyokoAutoSync](https://hiyokomtp.lemonsqueezy.com/checkout/buy/20c922f1-ca45-4f77-aeb2-04e34aad2fb4) | X → [@hiyoyok](https://x.com/hiyoyok)