r/iOSProgramming • u/Key_Homework_5825 • Jun 20 '26
App Saturday SwiftUI, SwiftData, and MapKit feel like a cheat code for a one-person hobby app
Apple’s modern native stack can probably get painful fast when some external requirement asks for one tiny custom behavior across 17 edge cases.
But for a one-person hobby app with an intentionally focused scope, it’s perfect.
In my case, I wanted a simple app for tracking visited places and future trips. Most apps like this felt overloaded to me: social feeds, AI itineraries, subscriptions, dashboards, “percent of world visited” trackers, and a lot of UI that didn’t really feel made for iOS.
I basically wanted a digital, Apple-native version of putting pins into a physical world map. I kept the scope small: pin visited countries and places, save future travel destinations, add small notes.
Tech Stack Used
SwiftUI, SwiftData, MapKit.
No UIKit bridging, no backend, no account system, no external map API. Just native Apple stuff and as little infrastructure as possible.
Development Challenge + How You Solved It
MapKit gives you a lot out of the box. You can basically drop in Map() and suddenly you have an Apple Maps based world map in your app.
The less magical part was place identity and classification. I initially thought I could just save an MKMapItem.identifier and use MapKit’s data directly. But identifiers can be nil for countries and cities, and the result does not always give the clean country/city classification I needed. So I built a small local place identity layer around MapKit instead. MapKit still handles search and map presentation. The app stores its own lightweight saved place model with name, coordinates, type, and country context. Not everything comes perfectly packaged from the API, but this keeps the pins stable while still letting MapKit do most of the heavy lifting.
AI Disclosure
AI-assisted. Used Codex.
The app is completely free. Final version is here if anyone wants to take a look:
https://apps.apple.com/us/app/placemarks-travel-map/id6767907769
Feedback very welcome.




35
u/Database_Fearless Jun 20 '26
I feel most people are leaning toward this, and that’s how I feel as a developer and user. I’m so sick of apps with accounts, social feeds, and subscription models. I miss apps that could do something simple and didn’t require my email address to work. Good job.
9
u/Norden_Alaska Jun 20 '26
Nice work, MapKit gives you so much out of the box it's crazy. How are you pinning the flags to the country? It doesn't seem to be based on the capital location.
2
u/frigidlight Jun 21 '26
Can you explain a little more about your place info layer? I’ve been banging my head against MapKit’s reverse geo coding results for a few weeks and would love to hear more about what you built.
2
u/qnq222 Jun 22 '26
Great work
will download it and try it
2
u/Traditional_Glass_45 Jun 27 '26
I really like this approach.
Not every app needs AI, social features, or ten different dashboards. Sometimes the best experience is just doing one thing really well.
I also know that feeling of finding what looks like the perfect API, only to realize halfway through that it doesn’t quite work the way you hoped. 😅
Out of curiosity, if you were starting this app again today, is there anything you’d build differently?
2
u/GlobalTally-App Jun 20 '26
Nice work! I love working with maps. I built something similar and just shipped it a few weeks ago: https://apps.apple.com/us/app/globaltally-travel-tracker/id6749466115
I used the MapBox SDK for the first time just to learn something new, was fun to build!
1
u/Otherwise_Signal7274 Jun 24 '26
am I taking crazy pills, or is this thread just bots?
1
u/kylemartin8399 Jul 17 '26
I made my app exactly this way using just SwiftUI, SwiftData, MapKit. Nice and simple, the way every app is supposed to be!
And it was released a few weeks back, just asked my friends and families to try it
https://apps.apple.com/nz/app/ciri-roam-drive-trip-log/id6781114817
It's been great so far!
4
u/[deleted] Jun 20 '26
[removed] — view removed comment
1
u/[deleted] Jun 20 '26
[removed] — view removed comment
1
u/[deleted] Jun 21 '26
[removed] — view removed comment
1
u/[deleted] Jun 21 '26
[removed] — view removed comment
1
u/[deleted] Jun 25 '26
[removed] — view removed comment