I built a small desktop calculator as a side project — nothing fancy, just wanted something where I could type stuff like 100 + 10% or time in Tokyo and get quick answers.
Chose Tauri because I didn't want another 150MB Electron app on my machine. Here's what I learned along the way.
Tauri is Great, But...
The good stuff first: my app ended up at ~5MB, uses barely any RAM, and starts instantly. Rust backend means actual native performance. No regrets there.
But I ran into some gotchas that nobody warned me about.
Percentage Math is Tricky
Spent an embarrassing amount of time wondering why 100 + 10% gave me 100.1 instead of 110.
Turns out I was treating 10% as 0.1 and just adding it. But that's not how humans think — when someone types $50 + 20% tip, they want 20% of $50 added, not 0.2 added.
Simple fix once I realized it, but it's the kind of thing you don't catch until you actually use your own app for real calculations.
Users Don't Think in Code
Built a timezone feature. time in tokyo worked great. time in New York? Nothing.
My regex only matched single words. Took me way too long to realize most major cities have spaces in their names.
Same thing with country names — people type time in germany, not time in Europe/Berlin. Had to add a bunch of mappings for common country names to their capital city timezones.
Helpful Fallbacks Can Bite You
I had this clever fallback: if parsing fails, just extract any number from the input and show that. Great for partial typing, terrible for actual errors.
5 / 0 was returning 5 because my "helpful" fallback extracted the 5 and showed it. Division by zero? What division by zero?
Lesson: be explicit about which errors should trigger fallbacks and which should just fail.
Check the Plugin Ecosystem First
Wasted time building my own window position persistence. Then discovered tauri-plugin-window-state does it in one line.
Same with single-instance handling (preventing multiple windows when you click the app twice). There's a plugin for that too.
Tauri 2's plugin ecosystem is solid — check it before building something yourself.
Three-State Booleans
Had a loading flash where the wrong screen showed for a split second before the real content appeared.
The problem: I initialized my state as false, then async-loaded the real value. During that async gap, false meant "show the wrong thing."
Fix: use null for "I don't know yet", true for yes, false for no. Show a loader when it's null.
## Was It Worth It?
Definitely. The final app is tiny, fast, and actually feels native. Rust is fun once you stop fighting the borrow checker.
Would I use Tauri again? Yes — but I'd check the plugin ecosystem first and test with real inputs earlier.
## The Project
Built this for myself but figured others might find it useful too:
It's a text calculator — type naturally, get answers. Works offline, runs on Mac/Windows/Linux.
Top comments (1)
That's awesome! It’s always great to see someone dive into a project like this, especially with Tauri and Rust. The challenges you faced are pretty common when building something from scratch, but it’s cool that you were able to troubleshoot and learn along the way. The small, fast, native feel of the app sounds really impressive, and I can definitely see the value in using it for everyday tasks. I’ll be checking out your project — I love the idea of a text-based calculator that works offline!