Every letter in Letterway is somewhere. Because travel time is a function of distance, the app always knows exactly how far along a letter is, and it would be a waste not to show you.
The obvious way to show it is to drop a marker on a map SDK. We tried that, and the problem is not technical.
A stock map makes your app look like everyone else's
Open the equivalent screen in any app that shows a location and you will see the same grey roads, the same beige parks, the same little red pin. It is instantly legible, which is the argument for it, and instantly forgettable, which is the argument against.
Letterway is a paper-and-ink app. A basemap designed by a mapping company for driving directions is not that, and no amount of surrounding chrome makes it that.
So there are two kinds of map in the app, and they solve different problems.
The small ones are drawn
The card for a letter in transit is a map of that specific journey, filling the whole card. It is not tiled. It is Natural Earth 110m land — public domain — delta-decoded from TopoJSON and simplified with Ramer–Douglas–Peucker at ε = 0.55°. Ninety-six paths, about 2,900 coordinates, 17 KB, rendered as vectors in the app's own paper and ink.
Three reasons, and only the first is about money:
- No key, no tiles, no network. It renders offline and instantly. There is no loading state because there is nothing to load.
- A map view is a GL surface. Putting one behind every row of a scrolling list is how you get a stuttering list.
- At 186 pixels tall, a tiled basemap is a smear of grey. A coastline silhouette with five or six country names is legible; street data at that scale is noise.
The route drawn on it is a true great circle, interpolated over 96 points rather than a straight line between two, because a straight line on a Mercator projection from Islamabad to Dakar is wrong by hundreds of kilometres — and wrong in the direction anyone who has watched a route map on a seatback will recognise.
And they are turned, not flipped
Incoming post should read as coming towards you and outgoing as leaving. On a north-up map that is decided by the compass instead: Dakar is west of Islamabad, so a letter from there runs left to right regardless of which way it is actually going.
So the plate is rotated until the route lies flat and points the right way — leftwards when it is coming to you, rightwards when it is leaving. This is an ordinary convention; every car navigation system in the world is heading-up rather than north-up.
What it is not is mirrored. Rotating a map preserves every distance, every angle and the handedness of the world — it is the same map, turned. Flipping it would put Africa west of South America. A map that is wrong is worse than no map, however tidy the arrows.
The big ones are real
When you tap through to a letter's detail screen, or open your stamp collection, you get an actual map: MapLibre rendering OpenStreetMap vector tiles.
That choice had a constraint attached. Google's mobile Maps SDK is free and unmetered, but it will not serve a single tile until a billing account with a card on it is attached to the project, and we did not want the app's map to depend on that. MapLibre with OpenFreeMap tiles needs no key, no account and no billing at all, and it renders the same map on iOS and Android — which the native SDKs cannot do, because Apple Maps refuses to be restyled.
That last point turned the constraint into an advantage. With Google we could only have restyled Android. With MapLibre the style is the map: five layers, and nothing exists that we did not ask for. No roads, no buildings, no business pins, no city labels. Land, sea, coastlines, country names — an atlas plate, in the same colours as the rest of the app, with a real dark variant.
The one genuine risk is availability. OpenFreeMap is donation-funded and offers no SLA. The mitigation is structural rather than a promise: the tile source is two constants in one file, and every host that speaks the OpenMapTiles schema is a drop-in replacement. And since these maps only ever render at world zoom, they only need tiles for zoom levels 0 to 6 — a small enough slice of the planet to self-host on any static bucket for pennies, if it ever comes to that.
The point
None of this is exotic. Natural Earth, a great-circle formula and a style sheet are all boring, well-documented things. But the alternative — an SDK, a key, a billing account and somebody else's design language — was the default, and the default would have produced a screen you have already seen.
Letterway is in development. Join the waitlist to be told when it opens.