Inspiration

Almost every map app starts full. Every street is already drawn, and the app's job is to tell you where to go.

We wanted the opposite: a map that is completely white until you walk it. Open PlainWalk for the first time and there is nothing on the screen. Go out for a walk and only the streets you actually walked appear, one line at a time. The streets you take every day slowly grow thicker, and the corners you have never turned stay blank, quietly asking to be explored.

It is a small nudge to take a different street home tonight.

What it does

  • Draws only where you walked. Your trail appears on a blank map in real time. Streets you walk often become thicker (three weights), so the map ends up showing the shape of your everyday life.
  • Pioneered distance. The first time you walk a street, that distance counts as ground you've pioneered. The world is split into 12 m cells to absorb GPS noise and road width, so walking the same street again doesn't count twice.
  • Keeps recording in the background, with a Live Activity on the Lock Screen and Dynamic Island, Home Screen widgets, and an Apple Watch remote.
  • Real map view. Overlay your trail on Apple Maps to see where you actually went.
  • Destination flags, not directions. Plant a flag on a place and PlainWalk only shows its direction and straight-line distance. There is no turn-by-turn route: you choose how to get there.
  • Someday places. Save places you want to visit one day. They show up as small open circles on your white map, so you notice them on the way.
  • Spots. Take a photo of a place you like during a walk; it is pinned to the map and shown as a card later.
  • Replay and timelapse. Replay a single walk, or export a video of your whole map growing over the months.
  • Area badges. Every municipality you walk in becomes a badge, filled in 500 m tiles as you explore it (Japan and Korea today; the US, Taiwan and the UK are in the next update).
  • Shared blank maps. Make a map with family or friends and see all of your lines on the same sheet.
  • A cat walks with you. Your location marker can be a 3D cat that walks while you walk, sits when you stop, and lies down if you rest for a while. Tap it and it reacts.
  • Private by default. Walks are stored on the device. No account is needed.

The app is available in English, Japanese and Korean.

How we built it

  • SwiftUI, iOS 17+, with the project generated by XcodeGen. The white map is not a map SDK: it is drawn by hand in a SwiftUI Canvas on a flat metre plane projected from the first point you ever recorded. MapKit is only used for the real-map view and place search.
  • Core Location / Core Motion for recording and steps. Background location is only enabled while you are recording, and PlainWalk only asks for "While Using" permission.
  • WidgetKit, ActivityKit and watchOS for the widgets, the Live Activity and the Watch remote.
  • SceneKit for the 3D cat. The cats are rigged in Blender and exported as USDZ; walk, sit-down, sit, lie-down and stand-up clips are blended by a small posture state machine, and the head turn is layered on top every frame. Extra coats are downloaded on demand (On-Demand Resources) to keep the app small.
  • RevenueCat powers PlainWalk Plus (monthly and yearly). We use Offerings to build our own paywall, purchase(package:), customerInfoStream and entitlements to unlock Plus features instantly across the app, and restore purchases.
  • Cloudflare Workers + D1 for shared maps.
  • The App Store release pipeline (metadata in three languages, screenshots, builds, review submission, TestFlight) is automated with scripts on the App Store Connect API, which let us ship 12 App Store releases since the first one in August 2026.

Challenges we ran into

  • GPS noise. Raw GPS makes a mess of a white map. We drop points worse than 40 m accuracy, ignore jitter under 4 m, and break the line on jumps over 300 m. Deciding what counts as "the same street" took several iterations before we settled on 12 m cells.
  • App Review. Background location got the first versions rejected three times. We kept the permission at "While Using" only and documented exactly when and why location runs in the background.
  • Making a 3D cat feel alive. Our first cat was a flipbook of pre-rendered frames, and rotating it looked like moving a board-game piece. We moved to SceneKit so the cat only turns its body while walking, turns its head first, and never spins in place while sitting.
  • Never losing a walk. After a user lost their records when the battery died mid-walk, we rewrote saving so every write keeps the previous copy and is flushed to storage, and unreadable files are kept and salvaged instead of overwritten.

What we learned

The blank map is the product. Every button, texture or label we add competes with the lines people draw with their own feet, so we turned down a lot of ideas to keep the map white. We also learned how much a pricing screen says through order and visual weight: when the one-time "remove ads" purchase sits next to Plus at the same price and looks just as important, the cheaper-looking option wins. We redesigned the section so Plus clearly carries what it includes.

What's next

An Android version (in closed testing on Google Play), dark mode and 3D area badges (in TestFlight now), more countries for area badges, and eventually a shared world map drawn by everyone who walks.

Built With

Share this project:

Updates

Submission history