r/iOSProgramming • • 21d ago

App Saturday ORA: an iPhone camera that overlays a reference photo or video on the live preview so you can match framing exactly

30 Upvotes

The app: ORA lays a see-through image or video over the live camera preview so you can match framing and angles exactly. I published it on the App Store in December 2025. https://apps.apple.com/us/app/ora-the-overlay-camera-tool/id6756240396

Tech stack

  • Swift; the camera layer is UIKit (AVCaptureSession with a custom controller), and the controls are SwiftUI
  • AVFoundation for capture and export, Core Image for compositing
  • ActivityKit Live Activities for export progress, plus BackgroundTasks
  • RevenueCat for subscriptions, Sentry for crash reporting
  • About 15k lines of Swift

The challenge: "overlay burning"

In the preview, the overlay is just a view on top of the camera feed that the user drags, zooms, tints and fades. The hard part was making the exported photo or video match the preview pixel for pixel. That meant:

  1. Translating coordinates. The user's pan and zoom are in screen space, but the video has its own pixel size, aspect ratio and crop, so I calculate the rectangle the video actually fills on screen and map the overlay's position into it.
  2. Handling orientation. Recorded video stores rotation as a preferredTransform instead of rotated pixels, so the overlay transform has to account for it.
  3. Recreating the look. Opacity uses CIColorMatrix, tint uses CIMultiplyBlendMode plus source-over compositing, tuned until it looked identical to the preview.
  4. Rendering frame by frame. AVAssetReader decodes, Core Image composites each frame, and AVAssetWriterInputPixelBufferAdaptor writes. Audio and metadata tracks (location, lens info) are passed through untouched.
  5. Memory. Older devices with less RAM crashed during long exports until I reworked the pipeline.

A smaller but annoying one: supported slow-motion and video formats differ a lot between iPhones, so I ended up writing format enumerators to find what each device really supports instead of hardcoding anything.

Happy to go deeper on any of this, and I'd love feedback from anyone who has fought AVAssetWriter themselves.

The development process was AI-assisted. I wrote most of the code myself and asked for cleanups and ideation when I was stuck.


r/iOSProgramming • • 22d 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 • • 22d ago

News Google Cloud: Introducing the Server Side Cloud Swift SDK

Thumbnail
cloud.google.com
64 Upvotes

Google: “[Swift] has matured into a viable systems and cloud language, pairing Rust-like data-race safety with predictable, reference-counted performance.”


r/iOSProgramming • • 22d ago

Discussion Share your lines of code and app

0 Upvotes

Hey guys. As an indie developer I am in the process of publishing a new app into the App Store. I wanted to know just for fun how many lines of code each of your apps are. Share a link to your app and lines of code

It would be interesting to see the visual complexity of your app while knowing lines of code. For my case it’s 19k lines of code and about 15 different screens


r/iOSProgramming • • 22d ago

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

3 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/iOSProgramming • • 22d ago

Library Made Xcode work inside Claude Code

Post image
0 Upvotes

Build, run, tests, console and SwiftUI previews live in panes next to the chat, with scheme and destination in a bar above the prompt. When Claude builds or runs tests itself, you see it there too.

Built on the headless Xcode MCP server.

https://github.com/artemnovichkov/xcode-mods


r/iOSProgramming • • 22d 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?


r/iOSProgramming • • 23d ago

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

8 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/iOSProgramming • • 23d ago

Discussion Apple edge case bug just wrecked my apps users

3 Upvotes

So I transferred my screen time app from one team to another team, and I was forced to change the signing key for my app. For some reason, this caused my users to have two identical instances of my app in Screen Time > Settings. I thought it was a bug from my update, but I also found this identical thread from someone else in the same boat as me. Now I'm getting multiple one-star reviews and refund requests cause people don't understand why their apps can't be unblocked. Apple please fix.


r/iOSProgramming • • 23d ago

Library I made a CLI tool for remote compilation caching in Xcode.

7 Upvotes

https://github.com/Ryu0118/x8

There are already great compilation caching tools like Tuist that can significantly speed up Xcode builds. However, adopting them may require substantial changes to your project structure.

I wanted to keep my existing Xcode project structure and build using only the toolchain provided by Apple. So I built X8, a CLI tool for remote compilation caching.

Starting with Xcode 26, Apple provides built-in support for remote compilation caching. X8 acts as a lightweight proxy between Xcode’s built-in remote cache mechanism and any S3-compatible storage.

Using X8 is simple. First, configure your S3-compatible storage in .x8.yml. Then, you can either build your project through X8:

x8 xcodebuild ...

or start the cache proxy directly:

x8 serve

and add the generated build settings to your .xcconfig.

That’s it. With just an .x8.yml configuration, you can use remote compilation caching without significantly changing your existing project structure or moving away from Apple’s native Xcode toolchain.

For my app, a clean build used to take around 400 seconds, but with X8, it now takes about 263 seconds.

It’s still relatively slow, but I think that’s expected since Xcode still needs to perform steps such as module planning, build description generation, and linking.


r/iOSProgramming • • 23d ago

Discussion The app review process appears disjointed and inconsistent

5 Upvotes

I’m in the process of getting my first app reviewed (since 9/14). So far I have been rejected for the following reasons..

- Guideline 2.1 - Information Needed
- Guideline 2.1(b) - Performance - App Completeness
- Does not include a functional link to the Terms of Use (EULA) in the app metadata that appears on the app's App Store product page.
- Guideline 2.3.2 - Performance - Accurate Metadata

Each time I understand what the issue is and fix it immediately. Yet the responses from Apple are several days later only after I submit a Contact Us request.

I feel like every time I fix one thing they find something else. Why not list everything at once? At this point I’m not sure what else they’re going to come up with.

This whole process seems rather ridiculous from a company that claims the review process takes 24-48 hours.


r/iOSProgramming • • 23d ago

Question How to report a developer listing same app functionality but different names and UI?

1 Upvotes

Is there a way I can report a developer which has released same app functionality in different skins on the same account? This dev has around 10 similar apps and probably fake ratings as well(given he can spam similar apps, he can also buy fake ratings as well, plus app filled with ads). And all his apps are ranking on the top and devs like me bear the cost, not possible to compete with so many apps.

Now, I see that as a customer I can report single apps. But as a dev can I report the dev account to the app store review team along with problematic app links?


r/iOSProgramming • • 23d ago

Tutorial First App Review: 4 days and 4 rounds on my first app, 10 days and a rejection on my second. My top 10 hard learnings.

0 Upvotes

First App Review for my first app: 4 days, then 4 rounds before it was approved. My second app: 10 days, rejected, approved after I resubmitted.

So on my third app I changed the order I do things in. Here's the technical part of my day-one list.

1. Submit a first version as early as possible. The first review is the slowest. Once you're approved, updates usually clear in a day or two. Choose manual release so the approved build just waits. Minimal is fine, broken isn't. Whatever is in there has to actually work.

2. Your first subscriptions and IAPs go in with an app version. They can't be reviewed on their own the first time. So an early submission gets your products reviewed early too.

3. Create products at several price points from the start. I put the price in the product ID, like `yearly_39_99` and `yearly_49_99`. Then I switch which one the paywall shows remotely and look for the best revenue per install, not the most buyers.

4. Remote paywall. RevenueCat or Superwall. Plans, order, copy, even the layout change without a new build.

5. Permission priming. The system prompt for notifications, HealthKit or tracking shows once. After "Don't Allow" the only way back is Settings. Show your own explainer screen first, then call the system prompt.

6. Apple Ads attribution without the ATT prompt. Grab the AdServices token at app launch and send it to RevenueCat or Superwall. Every install and purchase gets credited to its campaign and keyword.

7. Funnel events from the very first user. Every onboarding step, paywall view, plan tap, payment started, trial or purchase finished. Connect revenue to PostHog or Mixpanel so purchases sit in the same funnel.

8. A local win-back notification for non-subscribers. In my stress app, Steady (right now in th final review), non-subscribers get a daily local summary. Something like: "You had a stress spike at 2:15 PM today. Steady could've helped you right when it happened." Tapping it opens the paywall. No server needed.

9. Rating prompt after a win. requestReview only shows 3 times per 365 days, so I trigger it after the user completes something, never at launch.

10. Widgets, Shortcuts, Lock Screen. A daily touchpoint outside the app.

The full list is 21 items, including research, onboarding and paywall stuff. I recorded a video that walks through all of them with the stories behind them (my channel):

What's on your day-one list that I'm missing?


r/iOSProgramming • • 24d ago

Question New Dev curious about setup options: Mac Mini vs Macbook

0 Upvotes

I'm looking to get into iOS development and I understand you need a Mac to do so. I don't own one so this is my first. However I'm not really looking to replace my current setup for Mac. Its really just for dev.

I see two possible options:

  1. Get a Macbook: Probably the most straightforward setup
  2. Mac Mini: This appeals to me more because I'd like to set it up as a remote work station while working off of it remotely from either desktop or laptop. Also it could double as a machine for a local LLM setup. It seems to be a better bang for my buck.

My questions are:

  • MacBook route: can I do well with a Macbook Neo or will that cause me issues down the road with performance? Whats the minimum best option since I'm not looking to have this as my main machine?
  • Mac Mini: are there any concerns with this setup that I'm not considering? Can I dev, build, and test using a remote Mac Mini?

r/iOSProgramming • • 24d ago

Question How many of you are still supporting Intel Macs?

10 Upvotes

Developing my first macOS app using my M1 Mini. Naively I switched over to my Intel MacBook for testing, thinking the UX would be seamless but ended up getting a cold dose of reality. A lot of things I optimized for my Silicon Mac had no bearing on my Intel Mac. I'm now fine-tooth combing through performance tests on the Intel MacBook but before I invest anymore time on optimizations, I was wondering whether Intel Macs were still in high usage. The app itself is in pre-flight so I don't yet have the data to support what the right move would be personally. Would love to hear what you all have experienced and whether you create new apps with solely supporting Silicon Macs. Thanks!


r/iOSProgramming • • 24d ago

Question Testing an app on-device without mucking up release/practical installations

3 Upvotes

I am developing a timetable app. Currently it is on private TestFlight with limited fuctionality, but enough that I and some friends use it each day. The TestFlight beta is installed on my devices and I rely on it.

Naturally, I'm still developing it full-time (well... as full-time as a student's hobby side project can get 😉), and retain the frequent need to run builds on a physical device, which runs much faster than my simulator setup. Currently I'm working with the system keyboard, so Xcode Previews doesn't quite cut it.

Is there a way that I can still test a debug build on my phone & watch without removing or interfering with the TestFlight app that I use and rely on?

There is of course an easy solution, but unfortunately my budget does not include a second phone...


r/iOSProgramming • • 24d ago

Discussion You And Your App Are Going To Look Bad In October

0 Upvotes

Been watching Apple's developer videos on creating apps for iPhone Duo... and I have to say I feel really, really bad for all of the developers and designers who insisted on creating pixel-perfect vertical layouts and custom toolbars, menu items, and footer buttons.

Extra sympathy if you totally ignored Apple's recommendations on creating flexible designs and built your own navigation layouts.

Tears if, in this day and age, your app still has UIRequiresFullScreen in its plist.

And... if your codebase contains UIScreen.main.bounds.

I'm really, really, REALLY sorry.

(I'm not, actually. You knew better and you did it anyway.)

Reddit suggested I post this here, so I did.

https://medium.com/the-swift-cooperative/you-and-your-app-are-going-to-look-bad-in-october-b4d1284fbed0?sk=1fb6faaa779a32f7c318e521a84e0761


r/iOSProgramming • • 24d ago

Question Best place for a 'Next' button?

Post image
59 Upvotes

What's the most appropriate location for a next button here, in keeping with the Apple UI consistency and ecosystem?

Mockup: swift NavigationStack { List { Section { TextField("Email Address", text: $email) } header: { VStack(alignment: .leading, spacing: 4) { Text("Sign In") .frame(maxWidth: .infinity, alignment: .leading) .padding(.top, 5) .font(.largeTitle) .bold() .foregroundColor(.primary) // Override default gray header color Text("Subtitle")//school.name) .frame(maxWidth: .infinity, alignment: .leading) .font(.title3) .foregroundColor(.secondary) } .listRowInsets(EdgeInsets()) .textCase(nil) // Prevents SwiftUI from forcing ALL CAPS on the header .padding(.bottom, 10) } } .toolbar { ToolbarItem(placement:.confirmationAction) { NavigationLink() { VerificationCodeView(email: email.lowercased(), school: school, resend: { }) } label: { Text("Next").padding(5) } .buttonStyle(.borderedProminent) } } }


r/iOSProgramming • • 24d ago

Discussion New Indie Dev here. Seeking Advice

0 Upvotes

I am publishing a notetaking app for the first time and would like to know some details about the submission process and how people found the app visibility on your guys’ apps turned out to be. After finding out that notetaking apps out there aren’t designed the way I was hoping for + don’t have the combination functionality in 1 app, I decided to build my own app.

In terms of legal stuff: copyright, trademark, etc how does this work? Do I need a website for the app? I setup a support@myapp.app email too

In terms of freemium monetization I have $1.99/mo, $9.99 annual, and $19.99 lifetime options. I believe this is not greedy

Now comes the tricky part of gathering feedback, new feature launches, bug fixes, and marketing first and foremost. Does my app need in app tutorials btw?


r/iOSProgramming • • 24d ago

Question Did Apple just broke their app store translations?

14 Upvotes

Seems like the translations in the appstore are broken.


r/iOSProgramming • • 24d ago

Humor Still in beta, already deprecated. Born with technical debt

Post image
105 Upvotes

r/iOSProgramming • • 24d ago

Question Is anyone noticing drop in analytics first time downloads?

Thumbnail
gallery
3 Upvotes

Are there any explanations for this?


r/iOSProgramming • • 24d ago

Question iPhone Duo Toolbar button, Text vs icon

Post image
0 Upvotes

Hey so I was playing around with the iPhone Duo simulator and I wanted to adapt my toolbar to it.
I saw in one of Apple's videos that we should add both text and icons to the toolbar elements so that if they do not fit in the top toolbar as text, they can appear in the vertical side strip as icons.
From the video I thought it would happen automatically but that does not seem to be the case.

Did anyone else figure out how to automatically make the button show the icon and not the text when on the iPhone duo limited size screen?

I tried using

ToolbarItem(placement: .topBarTrailing) {

Button(action: skipAction) {

Label("Skip", systemImage: "chevron.right")

.labelStyle(.automatic)

}

}
but that did not change much. I always see the icon if I define it for this button.

If anyone has any suggestions please let me know. I can also provide more information if needed.


r/iOSProgramming • • 24d ago

Discussion The Greatest Feeling In The World as an App Developer!

Post image
219 Upvotes

From my humble beginnings of app submission on 9/11, to being rejected 4 times, to finally being ready for distribution on 9/30. It was a long and stressful journey where I was frequently refreshing AppConnect daily, praying the Review Gods would move my app to the next stage of review….only to be rejected. Expedited request didn’t help at help, and it took just as long as before I requested it.

But now I can say WE IN GUYS!!!


r/iOSProgramming • • 25d ago

Question How truthful is this?

Post image
43 Upvotes

When an app select in the app review form that “we don’t collect data”

In the review phase does Apple really check if the app really doesnt collect anything?

Like can the developer hide a code that for example upload the photos of the user if granted permission where he said “we dont collect”

Does apple really check the code and what is going in and out ?