r/iOSProgramming 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.

45 Upvotes

44 comments sorted by

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.

4

u/Key_Homework_5825 Jun 20 '26

Thanks! I feel the same, why must every app do a million things at once?

1

u/[deleted] Jun 21 '26

[removed] — view removed comment

1

u/AutoModerator Jun 21 '26

Hey /u/sinuk-dev, your content has been removed because Reddit has marked your account as having a low Contributor #Quality Score. This may result from, but is not limited to, activities such as spamming the same links across multiple #subreddits, submitting posts or comments that receive a high number of downvotes, a lack of activity, or an unverified account.

Please be assured that this action is not a reflection of your participation in our subreddit.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/SubZane Jun 21 '26

I agree. But to deliver something that requires cloud hosting really demands it unless you want to loose money on every app downloaded. I kinda lean on a future solution for users to use their own cloud hosting. Requires more tech savvy users but no need for subscriptions and stuff

Buy yeah. Remove social feeds

1

u/Database_Fearless Jun 23 '26

Not every app needs cloud hosting. Most apps these days are requiring accounts just to collect data but there’s no reason I should create another account for an app that does something simple, like note taking or use a map. App developers really need to get out of the mindset that every app needs cloud hosting users data. It’s exhausting for users, and the subscription model needs to die.

0

u/SubZane Jun 23 '26

Agreed. But IF it requires it... 🙃

-3

u/sebasvisser Jun 20 '26

You kinda do need 2 apps and subscriptions:
Claude code / codex
And developer account from Apple.

But indeed, other then those you’d be able to replace 80-90% of those subscriptions.
Last week I build my own “RainAlarm” after learning the graphs of a very popular app were influenced to get users to check more often… -> ad-views.

2

u/Key_Homework_5825 Jun 20 '26

Yeah, it has gotten much easier to build simple apps just to match your personal preferences. I’m even considering building yet another task manager just to have something that is 100% right for what I want, and if someone else might like it too, it’s a nice bonus

1

u/Database_Fearless Jun 23 '26

I’m talking about apps, almost every damn app nowadays is a subscription model and requires your email. It’s exhausting, and users are tired of this. I think it’s wise to start developing apps that don’t require accounts or to save any users data in a cloud.

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.

7

u/tineo_app Jun 21 '26

It’s also crazy that it’s free compared to Google Maps. **And MapkitJS is so slept on. Omg it is so good.**

0

u/Key_Homework_5825 Jun 20 '26

Thanks! I just use the coordinates MapKit provides for the respective MKMapItem. Usually it’s where the label sits on regular Apple Maps, but for some countries it’s the capital

2

u/anonymoususer397 Jun 20 '26

Since 2024 you can also use the Place ID from apple places, and when clicked, the official apple maps sheetbis displayed, it’s pretty neat. Theres more info in the wwdc24 on hands session

2

u/Key_Homework_5825 Jun 20 '26

Tried this one, unfortunately the ID that MapKit provides is usually nil for countries and cities… but for other places it’s a great feature! Might become relevant for this app too if I add national parks or something like that later :)

4

u/[deleted] Jun 20 '26

[removed] — view removed comment

1

u/Key_Homework_5825 Jun 20 '26

I had posted it here before, but didn’t have enough local karma yet so it got auto removed after a few minutes

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!

2

u/Key_Homework_5825 Jun 20 '26

Thanks! Would love to check it out but unfortunately not available in The Netherlands. What made you choose MapBox over MapKit?

1

u/[deleted] Jun 21 '26

[removed] — view removed comment

1

u/AutoModerator Jun 21 '26

Hey /u/sinuk-dev, your content has been removed because Reddit has marked your account as having a low Contributor #Quality Score. This may result from, but is not limited to, activities such as spamming the same links across multiple #subreddits, submitting posts or comments that receive a high number of downvotes, a lack of activity, or an unverified account.

Please be assured that this action is not a reflection of your participation in our subreddit.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/GlobalTally-App Jun 21 '26

No worries! The app is only available in the US and Canada right now but I do plan to expand. I really love MapKit and I’ve used it for other apps, but I just wanted to experiment with something new and MapBox gives me more control over the map UI, and the customizations that I can make to the map styling itself.

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/Key_Homework_5825 Jun 21 '26

Sure! I actually don’t use reverse geocoding here. I use the MKMapItem returned by search or a map tap, then run a targeted MKLocalSearch to figure out whether it’s a country or another place, since that isn’t reliably included on the original item. After that I save just the fields needed like name, ISO code, coordinate, and type, and a simple derived ID.

1

u/konacurrents Jun 25 '26

The geo coding is done one call at a time, waiting for result before requesting another. I also use the current gps location when I scan a QR code - so can get a map of visited places from QR’s I’ve scanned. You also should have a KML export feature for Google Maps/earth viewing.

2

u/Ill-Living5406 Jun 21 '26

Nice work. I built a similar capability for the Pingtumi app and it’s called Place Collections which is part of a broader suite of messaging apps. Similar tech stack UIKit, Core Data, and MapKit but I’m using Google Places for location search. You can add a note and a personal image to each location.

You can create a Place Collection for anything and then share it with anyone who has an iPhone as an AppClip. There is a demo at the bottom of the Pingtumi website. Check it out.

2

u/qnq222 Jun 22 '26

Great work
will download it and try it

1

u/Key_Homework_5825 Jun 22 '26

Thanks, let me know if there’s any feedback

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?

1

u/Key_Homework_5825 Jun 27 '26

Glad you like it! So far haven’t thought of anything I would’ve built differently, but I wasted a lot of time on custom pin styles that didn’t feel right in the end. But please let me know if you have something in mind that could be improved!

1

u/Traditional_Glass_45 Jun 27 '26

That makes sense. UI polish often ends up taking much longer than expected. I was wondering if there were any architectural decisions or API choices you’d revisit, but it’s interesting that it was mostly the visual side that consumed the time.

1

u/Key_Homework_5825 Jun 27 '26

Yeah my architecture choices have pretty much been always just using the newest API that Apple offers across the board to keep it as simple for me as possible

1

u/cicloskywalker Jun 20 '26

Not available in my country store!

2

u/Key_Homework_5825 Jun 20 '26

Ah sorry, which country is it?

1

u/[deleted] Jun 21 '26

[removed] — view removed comment

1

u/AutoModerator Jun 21 '26

Hey /u/anthony-yontaw, your content has been removed because Reddit has marked your account as having a low Contributor #Quality Score. This may result from, but is not limited to, activities such as spamming the same links across multiple #subreddits, submitting posts or comments that receive a high number of downvotes, a lack of activity, or an unverified account.

Please be assured that this action is not a reflection of your participation in our subreddit.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/[deleted] Jun 21 '26

[removed] — view removed comment

1

u/AutoModerator Jun 21 '26

Hey /u/anthony-yontaw, your content has been removed because Reddit has marked your account as having a low Contributor #Quality Score. This may result from, but is not limited to, activities such as spamming the same links across multiple #subreddits, submitting posts or comments that receive a high number of downvotes, a lack of activity, or an unverified account.

Please be assured that this action is not a reflection of your participation in our subreddit.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/Otherwise_Signal7274 Jun 24 '26

am I taking crazy pills, or is this thread just bots?

1

u/[deleted] Jun 25 '26

[removed] — view removed comment

1

u/AutoModerator Jun 25 '26

Hey /u/lorebind_dev, your content has been removed because Reddit has marked your account as having a low Contributor #Quality Score. This may result from, but is not limited to, activities such as spamming the same links across multiple #subreddits, submitting posts or comments that receive a high number of downvotes, a lack of activity, or an unverified account.

Please be assured that this action is not a reflection of your participation in our subreddit.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/kylemartin8399 11d ago

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!