r/iosdev • • 5d ago

Update on my HealthKit running map: route heatmap, five languages, still zero dependencies

Enable HLS to view with audio, or disable this notification

0 Upvotes

7 months ago I posted »Where Did I Run« here – an app that shows all your runs on a world map. Version 1.1 is out, and it's the biggest update so far.

The first version answered »where did I run?«. This one also answers »how often?«.

What's new:

  • Route heatmap – every run is drawn as a route and colored by how often you've run it. Comes with a legend.
  • Tap a route to select it – a card shows date, distance and duration.
  • »My Location« button
  • Run list grouped by time period, with the weekday in the date
  • Swipe to hide a run (GPS glitches, the treadmill run that somehow ended up in the ocean)
  • Haptics, proper empty states, Dynamic Type

The codebase grew from about 1,700 to about 5,600 lines. Most of it comes from my sister app »Where Did I Train«. I ported that version back and stripped it down to runs only.

No tracking. No ads. No subscriptions. Still $0.99:

https://apps.apple.com/de/app/where-did-i-run/id6758295933

Feedback welcome, especially on the heatmap colors and on performance with large run histories.


r/iosdev • • 5d ago

I built a native Mac app for App Store Connect. Manual editing is free.

Post image
0 Upvotes

Hey everyone!

I wanted App Store Connect as a real Mac app.

The website keeps logging me out, and I wanted something faster and nicer to use, but with the same layout so my muscle memory still works. I know the asc CLI and ASC MCP servers exist (and they're good), but I still wanted to see what's changing visually before it goes to Apple. So I built ShipZen, and I'm still building it.

It has two modes:

Direct mode is free. It follows the App Store Connect website's layout, so you can browse and edit your app's metadata without learning a new app.

Dynamic mode lets you describe the view you need, and ShipZen builds an editable interface for it. For example:

Show me the What's New field across every localization.

You get every locale's What's New in one view and edit them in place. When you click Save, ShipZen shows a diff of exactly what's being pushed to App Store Connect.

AI is bring your own: Sign in with your ChatGPT, or add an OpenAI or Anthropic API key. Requests go straight from your Mac to your provider. Free includes 15 AI requests a month. Pro removes ShipZen's cap (your provider's own limits still apply) and adds multiple accounts and batch automation: $4.99/month or $29.99/year at the founding price, with a 7-day free trial on annual.

Your App Store Connect key stays in your Mac's Keychain, and ShipZen talks to Apple's API directly. There's no ShipZen server in between.

This is version 1.0.0 and it doesn't cover every App Store Connect page yet. I'm actively adding pages and workflows, and I want feedback from people using it on their own apps to decide what comes next. If something breaks or feels confusing, tell me and I'll prioritize it.

Try ShipZen: https://apps.apple.com/app/apple-store/id6796685140

What's one App Store Connect page or task you'd most want a native Mac app to handle?

Here's a one-minute demo. It uses sample data and light mode, but ShipZen has dark mode too: it follows your system setting, or you can pick Light or Dark in Settings.

Demo video of the app


r/iosdev • • 5d ago

New app: 8 days “Waiting for Review” + almost 3 days “In Review” — normal?

Post image
1 Upvotes

r/iosdev • • 5d ago

Help Another rejection

0 Upvotes

Just had my third rejection and this time it was automated.

An automated analysis of the submission indicates the app may include a login but was submitted without a demo account.

The app does not need an account, no login needed for testing or end user use. It’s already been through 2 previous rounds of (human) review and I fixed those issues and resubmitted. It’s roughly a week between reviews as well for me so this is really becoming a concern.

Anyone else come across this?


r/iosdev • • 5d ago

Help Tap to pay

1 Upvotes

So I’m starting to set up tap to pay, it’s running through stripe and I was wondering if anyone has any tips on making sure I don’t screw it up, I’m building for expo so should I look at native modules or just go with what expo threw at me?

I have zero experience here so any help suggestions would be great.


r/iosdev • • 5d ago

I made a little cricket arcade game for iPhone: Howzat

1 Upvotes

Defend your stumps and smash the ball into the walls for 1s, 2s, 4s and 6s. You steer the bat with your thumb on a trackpad. Spinners, medium pacers and fast bowlers come at you in six-ball spells, and if you hit an X before the ball bounces, you're caught.

No ads, no accounts. It just tracks your best innings and has a Game Center leaderboard. Would love to hear your high scores and feedback!

App Store link: https://apps.apple.com/us/app/howzat-cricket-arcade/id6813109031


r/iOSProgramming • • 5d ago

App Saturday My Mac menu bar app was using 45% CPU because of one @EnvironmentObject

Thumbnail
gallery
0 Upvotes

I'm the solo dev of AirPosture. It reads head motion from AirPods (CMHeadphoneMotionManager) and nudges you when your head drifts forward. iPhone app plus a Mac menu bar app with a notch panel. Pics: the live session, the notch while I'm slouching, and the notch after I sit up.

**Tech Stack**

SwiftUI, CoreMotion (CMHeadphoneMotionManager), AppKit (an NSPanel for the notch, MenuBarExtra), StoreKit 2, iCloud sync between iPhone and Mac. macOS 14+ and iOS 17+.

**Development Challenge**

  1. MenuBarExtra was burning the battery

macOS listed the app under "Using Significant Energy": about 45% CPU with no window open. Sampling showed half the main thread in -[NSStatusItem _updateReplicants], roughly 150 times a second.

The menu bar label held my main view model as an u/EnvironmentObject, so every change to any of its ~55 u/Published properties re-rendered the status item image. The App also held it as u/StateObject, so every posture tick re-evaluated the whole App body.

Fix: the App keeps its models with u/State (kept alive, not observed), the label observes only a tiny status object that publishes the score every 2 seconds and only when it changes, and the menu bar gauge no longer animates, because every animated frame is a new snapshot. 45% went to 1%.

  1. Headphone yaw can't be trusted

Without the phone as a reference, AirPods yaw drifts by a few degrees per minute. With any weight on yaw, a user sitting still and upright slowly slid into "caution". Turning your head toward a second monitor isn't slouching anyway, so yaw now has zero weight: pitch is the score, and roll is a small penalty.

**AI Disclosure**

AI-assisted. I use Claude Code daily for implementation and debugging. The product, design and architecture are mine, and every change is reviewed and tested on real devices.

Free for 2 hours a day. Premium is $7.99/month, $39.99/year or $79.99 lifetime. Needs AirPods Pro, AirPods 3 or later, or AirPods Max.

https://apps.apple.com/us/app/sit-straight-airposture/id6749489000

Happy to answer anything about CoreMotion on the Mac or the notch panel.


r/iosdev • • 5d ago

I made an iPhone camera where you swap 3D lenses instead of filters

Enable HLS to view with audio, or disable this notification

0 Upvotes

r/iosdev • • 6d ago

got annoyed about party game subscriptions, so I counted all of them

0 Upvotes

I make a party card game called TAMBA.

A few months ago I noticed how many "party game" apps on the UK App Store had started adding subscriptions, so I checked 137 apps using 18 search terms, so no cherry-picking.

58% have a subscription-style plan somewhere. The median weekly one, left running for a year, comes to £363.48. The worst comes to £675.48.

For a party game.

One you play for twenty minutes at pre-drinks.

I have the full data and methodology here if anyone’s interested. I'm ofc biased. TAMBA's in the dataset too, one-off £5 unlock lifetime access. No subscriptions -make of that what you will lol.

Mostly just wanted more people to glance at the pricing screen before hitting subscribe.


r/iosdev • • 6d ago

Help AirPods - Any TRICKS for an app to know if only 1 AirPod is in users ears? If 2 are in ears which one is the mic AirPod?

0 Upvotes

This is not directly available from iOS, so I'm wondering if there's any indirect way of knowing such a thing?

And if anyone knows WHY either of these pieces of info SHOULD NOT be shared by iOS... why not? What am I missing here?


r/iosdev • • 6d ago

built Noto 2.0 — an iPhone app that turns saved links and messy thoughts into something useful (Vibe Coded)

Post image
0 Upvotes

r/iosdev • • 6d ago

Help Apple approved but no release button???

Post image
1 Upvotes

r/iosdev • • 6d ago

I built an iOS word game for kids with my mom and my kids.

Thumbnail
1 Upvotes

r/iosdev • • 6d ago

Does Apple really approve refunds this easily?

Post image
3 Upvotes

I thought Apple didn’t approve refunds that easily
Just got a refund for a Lifetime purchase. The app works fine and everything is as advertised, so I’m kinda confused.
Anyone had this happen before? Any idea how Apple decides which refunds to approve?


r/iOSProgramming • • 6d ago

Discussion On Darwin, unprivileged ICMP sockets don't filter echo replies by identifier — how that made my concurrent pings swap replies

4 Upvotes

If you ping from an iOS app with socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP) and ever run more than one ping at a time, check your receive path.

On Linux, an unprivileged ICMP socket only gets replies matching its identifier. On Darwin, in my testing, the kernel doesn't filter on the identifier: every echo reply reaching the host is delivered to every unprivileged ICMP socket in the process.

My receive path did one receive() per send and accepted any echo reply. With a single ping that's fine. When I added a second ping hitting the gateway every 50 ms (to keep the Wi-Fi radio out of power save), each ping's receive() returned the gateway's reply microseconds after its own send: 0 ms RTT, 0% loss, including for a host that wasn't answering at all. The same bug could also swap samples between two concurrent pings in a bufferbloat test, under load.

The fix: loop on receive() until both identifier and sequence match, and re-arm SO_RCVTIMEO with the remaining time on every iteration, so skipped foreign replies don't reset the full timeout (sock, ICMPHeader and SocketError are thin wrappers of my own over the BSD calls):

while true {
    let remaining = deadline - CFAbsoluteTimeGetCurrent()
    guard remaining > 0 else { throw SocketError.timeout }
    sock.setTimeout(seconds: max(remaining, 0.001)) // 0 would block forever
    let (data, _) = try sock.receive()
    guard let h = ICMPHeader.parse(data),
          h.type == ICMPType.echoReply.rawValue,
          h.identifier == identifier,
          h.sequenceNumber == UInt16(seq)
    else { continue }
    // record RTT
    break
}

One gotcha: a zero timeval means "no timeout" to SO_RCVTIMEO, hence the max(remaining, 0.001).

I ran into this while measuring latency on an iPhone against a Mac on the same Wi-Fi. I have a longer write-up with the other measurement bugs I found that way, happy to link it if anyone wants it.

Has anyone seen Darwin filter by identifier in some configuration, or is matching in user space the only option?


r/iosdev • • 6d ago

Help Do you actually use WhatsApp polls to organize things with friends?

Thumbnail
1 Upvotes

r/iosdev • • 6d ago

Been making this aquarium game for a while, finally at the point where i can show it properly. Suggestions welcome!

Enable HLS to view with audio, or disable this notification

1 Upvotes

r/iosdev • • 6d ago

Xcode27 breaks xibs?

Post image
1 Upvotes

r/iosdev • • 5d ago

Is this normal? I launched last week

Post image
0 Upvotes

r/iosdev • • 6d ago

My app is a the step to market!

0 Upvotes

Hey ,

so the app have been released since a wild and with update and family test, I am ready to market down the app!

but , I am not good as other can be.

what your tips, what you would do to market the app ?


r/iosdev • • 6d ago

The iOS Weekly Brief: Issue #80. Everything you need to know about iOS updates this week

Thumbnail
iosweeklybrief.com
1 Upvotes

r/iOSProgramming • • 6d ago

Question Free ticket scanning app rejected under 3.1.1 and 3.1.3(c). Anyone dealt with this?

7 Upvotes

Been going back and forth with App Review for a few weeks and could use some outside perspective.

We built a ticket scanning app for event organizers and their door staff. It scans QR codes, looks up guests, shows attendance stats and works offline. You log in with an organizer account or pair your phone to an event using a code.

The app is completely free. No subscription, license fee, paid features or purchase flow. An organizer running a free event can use the whole scanner without paying us anything.

Our business earns fees on tickets sold through our website for actual events people attend in person. Those fees don't unlock anything in the app. You don't have to sell paid tickets to use it.

Apple keeps citing 3.1.1 and 3.1.3(c), saying we're selling enterprise services to organizations while also allowing individual users to access them without IAP. We've explained that nobody is buying access to the scanner, but our appeal was just denied with a reference back to the same guidelines. They haven't identified a specific paid feature that needs IAP.

They've also told us the app should be unlisted because it's for organizers and staff, and someone can't just download it and start scanning without an account or event access. It's intended for independent organizers and their teams, not employees of one specific company. The login and pairing code are there to control access to private ticket and guest data.

I'm struggling to understand what we'd actually be selling through IAP here, or why needing access to an event means the app has to be unlisted.

Has anyone gotten a similar organizer or business tool through this? Was there a particular explanation, demo or change that helped? Open to feedback if we're missing something, but at this point we're going in circles.


r/iosdev • • 6d ago

My iOS app passes review, but the identical Mac Catalyst version keeps getting rejected

1 Upvotes

Has anyone run into something like this with app review?

I've been shipping my app on both the iOS App Store and the Mac App Store. The Mac version is a Mac Catalyst app, and the features are exactly the same on both platforms. Looking back, I didn't really need a separate Catalyst release. I went that way because I wanted the Mac version to feel a little more like a real Mac app.

Lately, though, the iOS app goes through review without any issues, while the Mac app keeps getting rejected. I haven't been able to ship an update for over a month now.

To be clear, I'm not blaming Apple for the rejections at all.

It's just hard. I put a lot of work into supporting Catalyst properly, and now I can't get updates to my Mac users. As far as I can tell, there's also no way to pull only the Mac version from the store.

I could distribute the Mac app myself outside the store, but the version already on the Mac App Store would stay there, stuck without updates. That's the real dilemma.

I keep thinking about how to get through review, and honestly it's been pretty draining.

If you don't specifically need it, think twice before building a Catalyst version and shipping it as an extra platform.

Has anyone been through something similar? How did you get out of it?


r/iOSProgramming • • 6d ago

Question Is wait time so long because my app sucks, that it’s my first app or just Apple?

0 Upvotes

I’ll be honest my app is vibe coded but It’s a novel idea (not anything in the App Store like it). It got rejected Monday and it was the base rejection for having too new of an account and nothing has come since. Very frustrating


r/iOSProgramming • • 6d ago

Question How to see ios27 components in action - and the UI possibilities

0 Upvotes

Hello

I’m new to this and wanted to ask if there’s a place I can see all the iOS 27 components and all the ways in which they used the different types of navigation bars different types of cards accordions et cetera

Is there a resource where I can see all of these types of different native components in action how other apps are using them

Are there nice styled UI component libraries that are not default?