People open a currency converter at the worst moments for connectivity: landing with roaming off, standing in a market with one bar of signal, splitting a bill in a basement restaurant. Smart Currency Converter was designed around that. This post is organised as the questions we asked ourselves while building it.
What happens when there is no network?
Everything still works. That was the starting assumption, not a fallback. The network is a bonus that keeps rates fresh; it is never required to show a number.
- Converter and bill-split screensWhat the traveller sees
ConvertSplitHistory - Local conversion mathsRuns on the device, no request needed
convertsplitround - Stored ratesSaved together with the time they were fetched
ratesupdatedAt - Network refreshOnly when a connection is available
How do people know if a rate is too old?
Offline rates are only useful if you know their age. A rate from this morning is fine for a coffee; a rate from three weeks ago may not be fine for rent. The app always shows when rates were last updated, in plain words, next to the result.
| Situation | What the app shows |
|---|---|
| Online | Converts with fresh rates, quietly updates the stored copy |
| Offline, recent rates | Converts normally, with "Updated this morning" style label |
| Offline, old rates | Still converts, with the age made more prominent |
The number matters, but so does how much you should trust it.
Why does it feel instant even online?
Because conversion never waits on a request. Reading local rates and doing the maths on the device is faster than any round trip, so the online and offline experience feel the same.
How does splitting a bill work across currencies?
One person pays in the local currency; everyone else wants to know what they owe in theirs. The split screen takes a total, a number of people and a target currency.
Enter the bill
In the currency it was paid in.
Choose people and target currency
Defaults to your home currency.
Read each share
Rounded to amounts people can actually pay, with the total shown in both currencies so nobody has to trust the maths blindly.
What else did we decide?
Why support so many currencies offline?
Travellers rarely know in advance which currencies they will need. Refreshing all supported rates whenever there is a connection means the one you need is already there when there is not.
Why keep history?
Settling up after a trip happens days later. A short history of conversions and splits saves everyone reconstructing the numbers.
What did we learn?
None of this needed clever engineering. It needed us to design for a bad connection first and treat a good one as the exception.



