Building FXPad: one React codebase, five platforms
Why I'm building a currency converter that's also a calculator, and how one React app becomes a web, desktop and mobile app.

Most currency converters make you convert one number at a time. When I'm working out a price, I'm usually adding things up first: a hotel plus two nights of dinners, a few line items on a quote. So FXPad is a calculator first. You type the whole sum in one currency, and every other currency on your list updates as you type.
The calculator part
Money maths needs exact decimals. JavaScript numbers are floating point, so 0.1 + 0.2 comes out as 0.30000000000000004. FXPad's calculator engine uses big.js for exact decimal arithmetic, and supports brackets and percentages. It evaluates as you type, so there's always an answer on screen, even halfway through an expression.

One app, five platforms
I didn't want to build the same app five times. The whole app is React 19 and TypeScript in one src/ folder, and each platform gets a thin wrapper:
- Web: an installable web app that works offline.
- macOS and Windows: Tauri 2, which wraps the web app in a small native window instead of shipping a whole browser.
- iOS and Android: Capacitor 8, which turns the same build into native projects for Xcode and Android Studio.
Every new feature lands in src/ once, and all five platforms get it on the next build.
Rates you can trust
Exchange rates come from a small Cloudflare Worker rather than straight from a rate provider. Every hour it fetches fresh rates, checks them, and serves a single latest.json file to the apps. If a major currency moves more than 10% in an hour, the worker treats it as bad data and keeps the last good rates.
The apps also ship with a snapshot of rates, so FXPad works on its very first launch, even with no connection.

No account, no tracking
FXPad has no sign-in, no ads and no analytics. Your currency list lives on your device. The only thing it downloads is the rates file.
What's next
FXPad isn't in the app stores yet. Next up is signing the desktop builds and submitting the mobile apps. After that, the ideas list includes crypto and gold, calculation history, rate charts, and home-screen widgets.
I'll post updates here as it ships. You can follow along on the FXPad project page.
- fxpad
- react
- tauri
- capacitor