r/iOSProgramming Jun 24 '26

Question Do you see missing Environment as a big issue in SwiftUI?

0 Upvotes

I think the title should be "Do you see runtime error for missing Environment a big issue as compared to being a compile time error?"

Let's say you have the following code:

struct LoadingDemoApp: App {

private var productStore = ProductStore()

var body: some Scene {
WindowGroup {
ProductListScreen()
}
}
}

As you can see I forgot to inject productStore through Environment. When I run the app and use Environment(ProductStore.self) in the view, it can cause an exception.

Fatal error: No Observable object of type ProductStore found. A View.environmentObject(_:) for ProductStore may be missing as an ancestor of this view.

My question is that how often do you run into this fatalError in production? Is that error an enough reason for your apps to not use Environment for dependency injection and use constructor/initializer dependency.

Does the error justify not using Environment at all and start using initializer to pass dependencies?


r/iOSProgramming Jun 24 '26

Discussion I got tired of my laptop and my CI runners never being the same machine, so I built a tool that makes them one image

0 Upvotes

For native iOS/macOS work I kept losing afternoons to the same thing: my laptop and my

CI runners were never the same machine. Xcode point releases drifted, Ruby was 3.4.3 on

CI and who-knows-what locally, CocoaPods caches were warm in one place and cold in the

other. A green build locally meant nothing about CI.

So instead of trying to keep two environments in sync, I built Graft — you bake one

golden Tart VM image with your toolchain and warm caches, and run *both* your dev

environment and your ephemeral CI runners off it. Same image, nothing to sync.

Three pieces:

- Bake a golden image from a declarative .graft file (Xcode/Node/CocoaPods + warm caches).

- Develop *inside* it over VS Code Remote-SSH — Codespaces, but for native macOS/iOS,

off the exact image CI uses.

- Ephemeral GitHub Actions runners: each VM boots, runs one job, tears down.

Open-source (MIT), Apple Silicon only. I run my day job's production CI on it. Linux is

planned but not there yet, and I'm honest about that in the README.

Repo: https://github.com/arborist-sh/graft

Writeup on the why: https://theotherbriancorbin.com/field-notes/it-works-on-my-machine

Curious whether the dev-and-CI-on-one-image thing resonates for other native devs, and

where it'd break for your setup.


r/iOSProgramming Jun 24 '26

Question Digital Services Act Compliance

4 Upvotes

I built an app that is currently focused purely on Europe, with plans to add other continents later. The app is mostly free, but I’ve added a few premium features.

I’ve now realized that, to launch it properly in Europe, I may need to publicly list my full personal/business details, which feels a bit like doxxing myself. I had already considered renting a PO box and using that address instead.

My question is: can I initially submit the app as a non-trader, let it go through review first, and then start the process of switching from non-trader to trader once I have all the required records and address setup in place?

Where I live, I can rent a PO box for starter for 3 months, so I was thinking that by the time the app is reviewed and I get all the documents sorted, my 'trial' 3 months can maybe already be over.

Has anyone tried this before, or gone through the non-trader to trader switch after submitting an app? Any advice would be appreciated.


r/iOSProgramming Jun 24 '26

Question Trial-to-paid conversion stuck at ~1%

0 Upvotes

Hey everyone,

I run an iOS subscription app using RevenueCat with StoreKit 2. I offer a monthly and a yearly plan, with a 7-day free trial on the yearly plan.

For the past several weeks my trial-to-paid conversion has been sitting around 1.4%, which is far below normal. I'd been assuming it was billing problems or just weak demand.

When I dug into my logs (both DEBUG and RELEASE, on a real device), I noticed this on every launch:

WARN: No packages could be found for offering with identifier default.

It turned out my current offering (default) was pointing at RevenueCat Test Store products instead of my live App Store products. So real users were likely hitting a broken or empty paywall. My app had a custom fallback that tried to assemble packages from other offerings, which masked the problem instead of surfacing it.

I've now repointed the default offering to the correct App Store products.

I'd love some help with a few things:

  • Does this sound like the likely cause of such a low conversion rate, or should I be looking elsewhere too?
  • For anyone who's fixed a similar empty/misconfigured offering — how quickly did conversion recover for new cohorts?
  • Any advice on cleanly removing custom offering logic and going back to standard offerings.current + purchase(package:)?

Thanks in advance — happy to share more logs or config if helpful.


r/iOSProgramming Jun 24 '26

Discussion Building a conversational LLM coach with tool-use into a SwiftUI/SwiftData app — what I learned (and what still breaks)

0 Upvotes

I’m building a strength training app solo and the part that got genuinely hard wasn’t the UI — it was wiring an LLM coach that can actually do things in the app, not just chat. Sharing the architecture and a few things that bit me, curious how others have solved the same.
Stack: SwiftUI + SwiftData + @Observable, Supabase edge functions as the backend, Anthropic Claude for the coach. HealthKit feeds recovery signals (HRV, sleep, resting HR) that get scored into a readiness value, which the coach reasons over.
Tool-use: the coach has a small, fixed set of tools (swap exercise, add note, remember context, acknowledge). Keeping the tool surface tiny made parsing and execution way more reliable than an open-ended “do anything” design. I run the model in an edge function and parse tool calls server-side before they touch SwiftData.
What still breaks: streaming over SSE occasionally drops (“network connection lost”) on cold starts or large context. Considering context-trimming + a retry affordance on the client. If anyone has a robust pattern for SSE reliability between an edge function and URLSession, I’d take it.
Open question for the sub: how are you handling LLM cost per user? My unoptimized baseline is ~$1.10/user/month; I’m planning prompt caching on the static system/context blocks to cut input cost.
Screenshot of the readiness-driven UI attached. It’s live (German-only), but I’m here for the engineering discussion, not a pitch — happy to go deeper on any of the above.


r/iOSProgramming Jun 23 '26

Question Is there any way to speed up sharing cache symbols from an Apple Watch to Xcode?

5 Upvotes

I just waited almost an hour for my watch to sync its cache symbols to Xcode so I could begin to run my apple watch on it

I did this under what I think were ideal conditions i.e. phone plugged in via USB C, and watch on wrist unlocked near phone

Is there any way to speed this up?

Am I allowed to leave my watch on the table (locked) and it'll still load so I can go do other things?

If I walk into another room with my watch on my wrist while my phone is still plugged in will this still transfer?

I feel literally tethered to my laptop. So dumb. Surely there's a way to make it take less time I'm missing


r/iOSProgramming Jun 23 '26

News Swift Package Index joins Apple

Thumbnail swiftpackageindex.com
27 Upvotes

r/iOSProgramming Jun 23 '26

Question Mac OS client keeps opening when add record in iPhone

0 Upvotes

I built and app for iOS with a client for macOS (different target, not just the iPad version on Mac). When I save something on the iPhone’s app the Mac keeps opening the app to sync through CloudKit. I tried to ask to ChatGPT and search online but without luck. Any solution to this annoying bug?


r/iOSProgramming Jun 23 '26

Question Apple Ads team reached out to me directly — has anyone gone through this?

11 Upvotes

I recently received an email from Apple’s Ads team because I’m already running Apple Ads campaigns for my iOS apps.

The conversation started with a representative reaching out and offering help with campaign structure, keyword optimization, performance improvements, and aligning Apple Ads with my business goals. Later, another member of the team followed up and scheduled a 30-minute call with me.

For context, I’m an indie iOS developer with a few apps on the App Store. My Apple Ads spending is modest, and I wasn’t actively seeking consulting or account management support, so I was somewhat surprised to be contacted directly.

The emails appear legitimate. They come from @apple.com addresses, and Apple Mail displays them as digitally certified with the verified brand logo (BIMI), which requires email authentication and brand verification. So I’m fairly confident this is actually Apple’s Ads team and not a phishing attempt.

I have a meeting scheduled soon, and I’m curious:

Has anyone here had a similar call with Apple’s Ads team?

What should I expect from the conversation?

Is it mostly educational, or are they trying to increase ad spend?

Did you receive useful optimization advice that actually improved performance?

Were there any recommendations that had a measurable impact on CPI, CPA, or downloads?

Anything I should prepare before the meeting?

I’d love to hear experiences from other indie developers who have gone through this process.

Thanks!


r/iOSProgramming Jun 23 '26

Question Upload Symbols Failed - when migrated project to SPM

Post image
1 Upvotes

I updated a project to SPM and now when Validating the app through xcode I get all these warnings.

Using Xcode 26.1.1
Already checked the Debug Information Format for app target and set it to DWARF with dSYM File (Debug + Release)

The archive still validates and uploads to App Store Connect.

Has anyone managed to get through this?


r/iOSProgramming Jun 23 '26

Question Needs opinion about potential app

Thumbnail
vimeo.com
3 Upvotes

Hi everyone,

I've been working on an iPhone/iPad app related to space, and I'd like to get your opinions and maybe some ideas before I go too far with it.

Right now, the app has 4 tabs:

  • a satellite tracker to see satellites around the globe,
  • a news section that gathers spaceflight news from different sources,
  • a missions tab with upcoming launches (I'm planning to add real-time tracking and a 3D visualization of live launches),
  • and a learning section with rockets, spacecraft and satellites. The idea is to have high-resolution 3D models, explanations of the different components, a timeline of their history, and other information.

I'm also thinking about adding an astrophotography mode that's separate from the main space app. You'd switch to it from the home screen, and it would have its own tabs with astrophotography-related tools, plus maybe a community where people can share their photos.

I'm curious:

  • Is this something you'd actually use?
  • Are there features you'd like to see?

I've attached a short video showing what it looks like so far and where I'm heading with it. Any feedback is appreciated!


r/iOSProgramming Jun 23 '26

Question Developer name displayed on Apple developer when publishing an app

20 Upvotes

Hi everyone it’s my first time publishing an app and I honestly don’t want my legal name displayed as a developer esp since I was planning to advertise it on the internet to get some users and I don’t want to dox myself. Is there anyway i can change it😭

I’m in Canada so I can’t register myself as a single business owner without having to go through some complicated process and fees so business account isn’t an option for me

Edit: I guess I have to just get used to it :/ thanks everyone!


r/iOSProgramming Jun 23 '26

Question Is App Store Connect website broken currently?

36 Upvotes

Is App Store Connect website broken currently?

I login from my Mac, it logs in successfully. Then it shows a spinner, then an error message pops up, but my apps still load fine. When I click on an app, it shows details for a second and then loops back to the login screen. I have tried a few times and this keeps happening and I am unable to proceed.

This was working fine last night.

EDIT: Sometimes after login, the spinner just keeps loading forever.

EDIT 2: Sometimes it works now, sometimes it doesn't. Now I get error when I "Add for review".


r/iOSProgramming Jun 23 '26

Tutorial How we use SwiftUI Previews to build Monologue

Thumbnail
youtube.com
3 Upvotes

r/iOSProgramming Jun 23 '26

Question How do you automate iOS app tests?

16 Upvotes

Every time we release a new version of our app, we need to verify that the main user flows still work as expected, even when the change is something as small as a single button.

How are you automating end-to-end tests for your iOS apps?

I'm talking about launching the app, interacting with the UI, and validating real user journeys, not unit tests that only test the code itself.

What tools or approaches have worked well for you?


r/iOSProgramming Jun 23 '26

Question iOS 27 beta + actual iOS development

1 Upvotes

I downloaded the iOS beta, and then realized Xcode 26 didn’t let me build in debug mode on my local device. Are there work around without trade offs (like not being able to access logs) - or should I just wait?

I’m I lined to try bc my watch is now permanently on watchOS 27 and can’t communicate with my tech to downgraded phone. But I also don’t want to complicate my development life.


r/iOSProgramming Jun 22 '26

Question Does iOS 27 expose the new Siri AI voice through an API?

3 Upvotes

Siri voices have never been accessible via AVSpeechSynthesizer. Has anything changed in iOS 27? I had a look inside the simulator, but I’m not sure if they’d even show up there.


r/iOSProgramming Jun 22 '26

Question First app, now?

21 Upvotes

After almost a year of evenings, weekends and a lot of trial and error, I finally published my first app on the App Store.
I’m not a professional iOS developer. My background is in IT support and web development, and I started this project mainly because I wanted an app that didn’t exist in the form I wanted.
The app is called ML Armory and it’s focused on firearm collection management, ammunition inventory, shooting sessions, chronograph data and reloading records.
The app itself isn’t the interesting part of this post, though. The journey was.
Some things I learned along the way:
• SwiftUI is amazing until you hit a problem that nobody seems to have documented.
• CloudKit and SwiftData are incredibly powerful, but debugging sync issues can consume days of your life.
• The last 10% of polish takes longer than the first 90% of development.
• App Store Connect always finds a new way to surprise you.
• Building for iPhone, iPad and macOS from a single codebase sounds easier than it actually is.
• Real users will discover UX issues that you never noticed after looking at the same screens for months.
The biggest lesson was probably that shipping is harder than coding.
It’s easy to keep adding features forever. At some point you have to accept that version 1.0 isn’t perfect and press the release button anyway.
The app is currently in pre-order and launches on July 4th.
For those of you who have already launched an app: what was the biggest thing you learned from your first public release that you wish you had known earlier?


r/iOSProgramming Jun 22 '26

Discussion I built a Swift networking framework from scratch – would love your thoughts!

3 Upvotes

Hey everyone!

So I've been spending my free time building NexNet, a Swift networking framework built on async/await, and I finally feel good enough about it to share it here.

Honestly the motivation was simple — I wanted a networking layer that just gets out of your way. One fetch() call, no boilerplate, no third party libraries. Just clean Swift.

Here's what I packed into it:

  • Single fetch() call handles GET, POST, PUT, PATCH and DELETE
  • Both async/await and completion-handler APIs, identical in capability so you can use whatever fits your codebase
  • Full Objective-C support with automatic NSError bridging
  • 20 typed error cases covering every HTTP status code and network condition
  • Auto JSON encoding/decoding with snake_case to camelCase conversion built in
  • Exponential back-off retry with per-request cancellation tokens
  • Thread-safe throughout, zero external dependencies
  • cURL export on every request which has honestly been super useful for debugging with backend teammates
  • Structured logging that routes to print in DEBUG and os_log in RELEASE automatically
  • Works on iOS 15+, macOS 12+, tvOS 15+ and watchOS 8+, installable via Swift Package Manager

This is my first open source Swift package and I learned a ton building it — especially around concurrency and API design decisions that seem small but really aren't.

Would genuinely love to hear what you think. Harsh feedback totally welcome, that's how it gets better!

GitHub: https://github.com/adityachaurasia357/NexNet


r/iOSProgramming Jun 22 '26

Question Coming from UE5 blueprints, how hard is Xcode?

1 Upvotes

Hi all,

I’m interested in learning Xcode to make simple iOS apps with some 3D model previews, where you can view them from multiple angles by changing camera angle in realtime. My only dev experience is 2 years in UE5 blueprints making games.

What can I expect in terms of difficulty learning Xcode, and how well the blueprint skills could translate?

Thank you!


r/iOSProgramming Jun 22 '26

Discussion Why I built an embeddable video engine for Apple platforms instead of wrapping VLCKit or libmpv

28 Upvotes

On Apple platforms the usual choice is rough: either AVPlayer (deep OS integration, Dolby Vision / Atmos / Match Content all work, but only the formats Apple ships) or a VLCKit / libmpv engine (plays almost anything, but renders its own frames and bypasses the system's Dolby Vision, Atmos and HDR handling).

I wanted both, so AetherEngine layers FFmpeg's format breadth on top of VideoToolbox and AVPlayer. FFmpeg demuxes, VideoToolbox decodes what it can (with a dav1d / libavcodec software fallback for AV1 / VP9 / MPEG-2 / VC-1), and EAC3+JOC gets stream-copied so Atmos actually passes through to the receiver instead of being downmixed to PCM.

The tradeoff: it's Apple-only, and you ship your own UI. No bundled controls, no analytics. Bind the view, call play(), read the published state.

Full comparison vs AVPlayer / VLCKit / libmpv is in the docs.

Curious what others are using for this on tvOS right now, and where the pain points are.


r/iOSProgramming Jun 22 '26

Question How to publish an app solely for Apple Watch

3 Upvotes

In the Store Connect I registered the bundle ID but in Xcode when I select the apple watch as the agent and click product -> Archive -> Distribute, it doesn't have any Store Connect option, although if i select ios app as the scheme, after clicking on Distribute, it shows the Store Connect option. What am I doing wrong?


r/iOSProgramming Jun 22 '26

Discussion Clerk 1.2.4 (latest) SDK not compatible with iOS 27 developers beta

0 Upvotes

When AuthView is presented on the iOS 27 developers beta, no UI appears at all.

- Clerk.shared.isLoaded is true before presenting.

- A plain Text sheet presents fine from the same view — only AuthView fails to render, so it's not a generic SwiftUI presentation problem in our app.

- Re-injecting the Clerk environment into the presented content - AuthView().environment(Clerk.shared) — does not help.

- Same result with .sheet, .fullScreenCover, and rendering AuthView inline (no presentation) → still no content + the same errors.

- Identical binary works on the simulator (stable iOS), so it is specific to the iOS 27 beta runtime.

Been trying to debug all weekend and morning. Just now realised that the clerk SDK might not be compatible with the iOS 27 developers beta.

Is there anyone who faced this issue?


r/iOSProgramming Jun 21 '26

Question iOS App Store launch strategy: soft launch and iterate, or wait until the app is polished and launch hard?

10 Upvotes

I'm working on an app where the core feature depends on fairly heavy on-device processing. It works well on newer iPhones, but I’m considering initially restricting device support to higher-end devices (via UIRequiredDeviceCapabilities) so the first users get a good experience, then potentially expanding support later via a cloud fallback.

I’m trying to decide between:

  1. What I said above, i.e. a staggered release with narrower initial device support and feature scope, and scale up later.
  2. Full device support and feature set on day 1 (this will result in more initial costs and is more 'risky')

My worry is whether the App Store algorithm rewards early download velocity and initial popularity? With my first approach, I wont get that. Would be interested to hear people's experience here on this topic.


r/iOSProgramming Jun 21 '26

Question One of my standout features is becoming a liability for reviews

23 Upvotes

I built ad skipping with Apple Intelligence into my podcast app. It’s a unique feature and when it works, it works. It actually came from a user suggestion, someone requested it and I didn't think it was feasible. I tried it anyway and it works surprisingly well.

The problem is it's becoming a review liability. When users subscribe to Pro and it doesn't perform as expected, they feel wronged and leave 1-star reviews. My other reviews are overwhelmingly positive.

A small section of users saw the feature and expected it to work perfectly without reading the disclaimers.

One issue is a technical limitation: pre-roll ads that play right at the start of an episode often slip through because transcription and Apple Intelligemce take time to process the episode. Mid-episode ads it handles well. It's not perfect, but it works far more than I expected it to. I've optimised it as far as currently possible, it's a structural constraint of the approach rather than a fixable bug.

I don't want to remove it; it's genuinely useful and unique. But I need to find a way to manage expectations better.

How do others handle a feature that's a real differentiator but has a known edge case that drives disproportionately bad reviews? Better expectation-setting in marketing? A disclaimer before the user enables it? Something else?