# A currency converter that still works on a plane

> Smart Currency Converter is used most when the network is worst. Designing offline-first changed how we store rates and what we show on screen.

- Author: Tina, Team Lead · Mobile & Web
- Published: 2026-04-24
- Canonical: https://www.nexateam.dev/blog/currency-converter-on-a-plane
- About: [Smart Currency Converter](https://www.nexateam.dev/work/smart-currency-converter.md)

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.

1.  **Converter and bill-split screens**What the traveller sees
    
    `Convert``Split``History`
2.  **Local conversion maths**Runs on the device, no request needed
    
    `convert``split``round`
3.  **Stored rates**Saved together with the time they were fetched
    
    `rates``updatedAt`
4.  **Network refresh**Only when a connection is available
    

Conversion only ever reads local data. The network just keeps that data fresh.

## 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.

1.  #### Enter the bill
    
    In the currency it was paid in.
    
2.  #### Choose people and target currency
    
    Defaults to your home currency.
    
3.  #### 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.
