Almost everything Roam City shows you accumulates slowly. Coverage, countries, memories and territory progress are the result of weeks and months of ordinary movement. That is the point, and it is also a design problem: a thing that grows slowly is easy to forget.
The fix is not more notifications. It is letting the map exist somewhere you already look.
Three surfaces, one idea
The country presence widget is the smallest one. In the small and medium sizes it shows where you have been over the last year: a compact list of flags, country names and day counts, on the same night surface as the app.
The visited-world widget is the bigger gesture. It draws the countries you have explored, shaded in ember, on a world map. It uses the same projection as the in-app poster, so the widget and the screen you can share are the same shape, not two interpretations of it.
The Live Activity covers the opposite case: an exploration in progress. While a session is recording, the lock screen and the Dynamic Island show distance, time, new tiles and XP, updating as you move. It turns a walk into something you can check with a glance instead of unlocking the phone and navigating to the map.
Widgets without a network
A widget that needs a request every time it renders is a widget that is blank on a train. The timelines read from a shared snapshot the app writes to a shared container, refreshed on an interval. The widget does no networking of its own and does not need background location. It shows the last known truth, refreshed from the app when the app is running.
A widget is not a smaller app. It is the part of the app that should be true at a glance.
Looking like the app
The widget extension is a separate module and cannot import the app’s design system, so the few tokens it needs are mirrored for that target only. The result is deliberate: the same night background, the same ember accent, the same restrained type. A widget that looks like a different product is worse than no widget.
Why it matters
Roam City is quiet by design. There is no streak to protect, no feed to keep up with, and no reason to send a notification that is really about engagement. A widget fits that better than a push does: it is there when you choose to look, and invisible when you do not.
The map should not be locked inside an app you have to remember to open. Putting it on the home screen is a small decision that makes slow exploration feel real.