r/iOSProgramming • • 1h ago

Question App Store Orientation Requirements for iOS 27

• Upvotes

We have a landscape-only application that is intened for use by a specific corporate client. Until recently, all apps were Enterprise signed and distributed with an MDM. Now, the client wants to use the "Custom App Store" and mark the apps as only being available to their orientation. I warned that in doing so, we would be incorporating all of the requirements for the App Store into our app. The client wants to proceed. I am reading through the screen orientation requirements. Can someone validate if the following understanding is correct:

The app must support and render proper;y in any possible aspect ratio or screen size that could occur on an iPad (this app is only for the iPad). Despite the client's ask to lock the app to landscape, this isn't something that can be done by the app. If a person puts the device in portrait mode or windowed mode and the app's rendering gets mangled, that is a reason to fail certification.

The client asked if I could just make the portrait view of the app a full screen call-to-action telling the user to turn their device to landscape mode (I personally think this is an awful solution).


r/iOSProgramming • • 1d ago

Discussion Apple is still massive, but how come IOS jobs are shrinking and people are devaluing the skill/domain knowledge?

82 Upvotes

I find it interesting how apple just seems to be getting bigger and bigger yet the job and ecosystem surrounding developers is shrinking. It seems like recently companies like shopify (prev react native) are going back to native app development in the age of AI. Recently even sean allen has closed his courses site because it was no one was buying his courses anymore. Is everyone really just vibe coding IOS apps to the point where they don't need to experienced or even hire juniors to maintain native apps?


r/iOSProgramming • • 2h ago

Question Ex-manager threatening legal action if I don't send github links and credentials, shall I do it?

2 Upvotes

I joined a startup about one year ago where I was slacked the credentials of our repositories, and the messages were then deleted to avoid some 3rd parties from getting them, and the url and credentials are not anywhere in our documentation.

Since the new manager joined, I've seen people being laid off pretty quickly. The QA tester goes, and the manager claims that we as a company are having the same output as before the number of bugs didn't raise (because the QA tester doesn't find bugs anymore). We told him many times that without a QA tester we are slower but the ceo/cto don't know, he probably lied to them and they base the whole performance on a metrics chart where every indicator looks green even if we are not doing well.

Then he laid off also the digital marketer and an intern who was doing a bit of everything. No visible signs of performance decline in the short run, so for the ceo/cto every indicator still looks green. The manager claims that AI will take over the job of the marketer but I'm not sure how.

The following phase was the most difficult phase: he laid off first the backend developer, which left me and the android developer as the only technical people, unable to do any meaningful backend work. Even if we begged many times and explained in detail that this will negatively affect productivity, that customers are angry and we could be in the position of not being able to ship features, it looks like he either doesn't get it or he deceived the ceo and cto to think that it was fine.

We worked like crazy, even in the weekend to ship features with nothing working and we were even handling calls with angry customers, and all what this manager does is bragging that he's able to make us go at the same speed with less employees. We go insane, 50, 60, 70 hours per week and by a tiny bit we are able to hit a deadline which saves us from being fired from a customer.
We worked until 4 AM to make it and this piece of **** you know what he does? He lays off even the android developer!

He wants to play with my ego and he tells me that I'm good and skilled enough and he trusts me to be able to cover also for his job because of AI. I ironically ask if that's how he got a new car, by getting a raise as a reward to layoff almost the entire company to the points there's only one developer (other non-technical roles I didn't mention were laid off too and we were left in 3 excluding him and the ceo and cto). He says I can do it, I burst into tears screaming, angry and sad at the same time saying that I will not keep working 80 hours for his new car, and I fired myself on the spot

I claimed being sick afterwards and cut every contact (I was supposed to give a one month notice but I'm too burned out to stay there).

Turns out that the manager didn't have the url and the credentials of our repositories containing basically everything: visual assets, android + ios project + backend, there are undocumented. He sent me an agry message claiming that he will be able to go on with the help of AI and vibe coding just to send me another (strangely polite) message asking me for information like repository urls and credentials. And I believe he doesn't even know how to clone it even if he had the credentials.

What should I do? He threatened legal action and I didn't answer, but I think that since I don't work there anymore I don't have the obligation to provide any information. Plus, considering thr fact that all this guy did was basically getting richer to lay off almost all of us, I don't think it would be nice to make him succeed. Maybe more developers have higher chances of getting hired if he's fired when the ceo/cto will manage that he lost everything because of his delusions.

What do you think? Could the company sue me?


r/iOSProgramming • • 2h ago

Question What’s the best way for an AI agent to interact with the iOS Simulator?

1 Upvotes

Hey everyone,
I’m looking for a way to let an AI agent interact with the iOS Simulator programmatically

The goal is to let the agent tap buttons, swipe, enter text, navigate between screens, inspect UI elements, etc...

What tools would you recommend for this? Does MCP work well for this use case, or are there better alternatives?

I’d love to hear about your setups and experiences. Thanks!


r/iOSProgramming • • 3h ago

Article Building resilient mobile apps: A layered testing strategy for long-term stability

Thumbnail
engineering.gusto.com
1 Upvotes

r/iOSProgramming • • 11h ago

Discussion 5 things my first StoreKit 2 code got wrong (one non-consumable IAP)

0 Upvotes

My game has one non-consumable IAP. Before launch I rewrote the purchase code, because the first version had five problems. None of them crashed, they just quietly did the wrong thing.
1) The purchase result was a Bool.
Success, pending (Ask to Buy) and cancelled all looked the same, the card just stayed open like the tap didn't register. Now it's an enum, and cancel shows nothing, because cancelling is not an error.
2) No `Transaction.updates` listener.
Without it an Ask to Buy approval an hour later never reaches the app, and the transaction never gets finished, so it comes back on every launch. I start the listener in the AppDelegate, not in the scene. My scene gets rebuilt during the game, so a listener there would run twice or not at all.
3) I only ever turned Premium on.
So a refund never took it away. Now every launch recounts it from `Transaction.currentEntitlements` and skips anything with a `revocationDate`. That list is on the device, so a new phone restores by itself, no password. I kept a Restore button anyway, but `AppStore.sync()` asks for the password, so it only runs on tap.
4) A placeholder price.
The button said "$4.99" until the real price loaded. Looks fine, until someone in Europe sees dollars. Now there's no price until `displayPrice` comes back, and the last one is cached for the next launch. Side effect: when I dropped the price to $0.99 last week, the app didn't need an update.
5) One try at loading the product.
The first `Product.products` call at launch sometimes fails or comes back empty, the network isn't ready yet. Now it tries 3 times, 2 s apart. Also good to know: if the product ID doesn't match App Store Connect exactly, you get an empty array, not an error.
Small extra for the iPhone Duo: on iOS 17+ there's `purchase(confirmIn: scene)`, which tells the system which screen to put the payment sheet on.
Anything I'm still missing?


r/iOSProgramming • • 12h ago

Question TestFlight builds made with Xcode 27.1 won’t install: “The requested app is not available or doesn’t exist”

1 Upvotes

Hi all, is anyone else seeing this since switching to Xcode 27.1?

Since Oct 20, none of my new TestFlight builds will install. TestFlight shows the “Update” button, then fails with “Could not install [app]. The requested app is not available or doesn’t exist” (sometimes “Try again later” first).

What I’ve checked:

  • Upload from Xcode 27.1 (27A9275) succeeds, no ITMS warnings, build status “Valid”, and I get the “ready to test on iOS and watchOS” email
  • The exact same archive installs and runs fine when installed directly from Xcode on the same device (development signing)
  • Device: iPhone 15, iOS 27.0.1
  • Agreements are active, export compliance answered (ITSAppUsesNonExemptEncryption = NO)
  • Entitlements and Info.plist are identical to my last build made with Xcode 26.5, which installed fine through TestFlight
  • Tried bumping the build number, closing TestFlight, waiting a few hours: same result

The only real difference is the toolchain (Xcode 26.5 / iOS 26.5 SDK → Xcode 27.1 / iOS 27.1 SDK). The app also embeds a watchOS app.

Has anyone hit this with Xcode 27.x? Did you find a fix, or did Apple support resolve it on their side?

Thanks!

https://developer.apple.com/forums/thread/763655


r/iOSProgramming • • 12h ago

Discussion Claude is using Combine in the code base but it forgets to import it.

0 Upvotes

Can someone explain why the Ai is like this?


r/iOSProgramming • • 2d ago

Discussion Saddest email I got today

Post image
614 Upvotes

r/iOSProgramming • • 1d ago

Library AutoLog library: One Macro logs all decision points. And more!

1 Upvotes

I was really tired of missing, incomplete and sporadic logging in our apps. So this macro injects structured logging into each decision point and collects all context automatically. See this walkthrough.

You can completely map the flow of your app from user interaction to VM to API and beyond.

Before: console messages your team wrote

For an offline request, a fuller example with a caller, cache, and API might produce:

[Profile] Refresh requested for profile 42.
[Profile] Loading profile 42.
[Cache] Looking for a saved profile.
[Cache] No cached profile found.
[Network] Requesting profile from the server.
[Network] Request failed: no internet connection.
[Profile] Could not refresh the profile.

After: the button origin and its execution trace

Illustrative compact output with the origin column enabled (the badge and timings vary):

👆🏼-🧵A1B - 👆🏼 Reload profile [ProfileView:8]
👆🏼-🧵A1B │ main │         │ --> 🔵 ProfileViewModel.reload(id: 42)
👆🏼-🧵A1B │ main │         │ ---> 🔵 ProfileService.load(id: 42)
👆🏼-🧵A1B │ main │         │ ----> 🔵 ProfileCache.lookup(id: 42)
👆🏼-🧵A1B │ main │   1.6µs │ ----> 🟢 ProfileCache.lookup(id: 42) → nil
👆🏼-🧵A1B │ main │         │ ----> 🔵 ProfileAPI.fetch(id: 42)
👆🏼-🧵A1B │ main │  14.1µs │ ----> 🔴 ProfileAPI.fetch(id: 42) → offline [NetworkError]
👆🏼-🧵A1B │ main │   852µs │ ---> 🔴 ProfileService.load(id: 42) → offline [NetworkError]
👆🏼-🧵A1B │ main │   1.1ms │ --> 🔴 ProfileViewModel.reload(id: 42) → offline [NetworkError]

The first line identifies the SwiftUI button and its source location. The same👆🏼-🧵A1B flow badge appears on each downstream logged call, tying the button tap to the cache lookup, API request, and failure. Each interaction gets its own ID, so overlapping flows can be followed separately.

Now you can follow the nested calls, see the cache miss, locate the failing function, and see the error propagate. Failure events also carry recent log context to help trace what led to them.

It also captures supported early-exit conditions. With hasAccess: false, the service returns:

main │   1.9µs │ -> 🟢 ProfileService.load(id: 42) → nil
╰─ ↘️ !hasAccess

So you get both the result and the guard that stopped the work, without adding a logging statement inside it.

Before: manual logging with OSLog

import OSLog

struct ProfileService {
    private static let logger = Logger(
        subsystem: "com.example.app",
        category: "ProfileService"
    )

    let hasAccess: Bool

    func load(id: Int) throws -> String? {
        Self.logger.info("Loading profile \(id).")
        guard hasAccess else {
            Self.logger.info("Skipping profile: access denied.")
            return nil
        }
        do {
            let profile = try ProfileAPI().fetch(id: id)
            Self.logger.info("Loaded profile \(id).")
            return profile
        } catch {
            Self.logger.error("Failed to load profile: \(String(describing: error), privacy: .public)")
            throw error
        }
    }
}

After: annotate the type and keep the business logic

import AutoLog

@AutoLog
struct ProfileService {
    let hasAccess: Bool

    func load(id: Int) throws -> String? {
        guard hasAccess else {
            return nil
        }
        return try ProfileAPI().fetch(id: id)
    }
}

Tie the flow to the SwiftUI button with Button.log

import SwiftUI
import AutoLogSwiftUI

struct ProfileView: View {
    let viewModel: ProfileViewModel

    var body: some View {
        Button.log("Reload profile") {
            do {
                try viewModel.reload(id: 42)
            } catch {
                // Present the error to the user.
            }
        }
    }
}

Button.log logs the tap and supplies its origin context to the instrumented ProfileViewModel, service, cache, and API. You do not pass an ID through every method. An async overload also preserves the context across await.

See the full before-and-after, error backtrack, and SwiftUI examples on Anciltech. For installation, source, and tests, head to the Swift AutoLog GitHub repo.

I would welcome feedback on the output, generated code, and integration with existing logging setups.


r/iOSProgramming • • 19h ago

Question Duo for developers

0 Upvotes

Since the Duo is a new platform for Apple and all iOS devs, and the backlog for preorders is at least three months long here - can developers get access to loaners or other physical devices when the simulator isn't enough to sanity check apps targeting the platform?


r/iOSProgramming • • 1d ago

Question Device Hub capturing

0 Upvotes

I had the wild idea to upgrade from MacOS 18 to MacOS 27, since I needed more modern iOS simulators. Great experience, since the Simulator being gone forced an Expo upgrade so that it can handle Device Hub...

But there's one thing about the Device Hub: this app is not "capturable"? I can't switch to it via cmd+tab, nor can I select it for screen share (which is the bigger issue, since we do show development progress via screen share every sprint).

Anyone knows how I can fix that?


r/iOSProgramming • • 2d ago

Discussion what's the biggest thing xcode is hoarding on your mac? deriveddata, simulators, device support?

8 Upvotes

was cleaning up my mac and a surprising chunk of it was xcode stuff i didn't need anymore. the usual suspects for me were ~/Library/Developer/Xcode/DerivedData which is safe to delete and just rebuilds next time you build, old simulators where xcrun simctl delete unavailable clears out the ones for runtimes you don't have anymore, and ~/Library/Developer/Xcode/iOS DeviceSupport which quietly keeps a copy for every ios version you've ever plugged a phone in with

the one i'd be careful with is ~/Library/Developer/Xcode/Archives, you need those to symbolicate crash reports from builds you actually shipped, so i only clear out old ones for apps i'm not supporting anymore

to see what you've got: du -sh ~/Library/Developer/Xcode/* ~/Library/Developer/CoreSimulator 2>/dev/null

drop your biggest number, and curious what people do about it, anyone automating this or do you just nuke deriveddata when xcode starts acting weird


r/iOSProgramming • • 2d ago

Discussion Excited to use Private Cloud Compute!

Post image
9 Upvotes

r/iOSProgramming • • 1d ago

Discussion If your app/game functions on both the ipad and iphone, do you release them as separate products?

0 Upvotes

Apparently, Apple's new automated "spam" system they just rolled out compares the metadata of products and now immediately rejects any app that has more than one version (even saw a guy complain about his mac desktop app and iphone app get rejected).

This makes me wonder about how developers that release their apps as "families" (a mac app, a separate ipad app, a separate iphone app) will proceed. My own experience has been that the ipad's screen size and internal parts are big enough that oftentimes they can be a 1:1 port of a desktop program. Heck, stick a bluetooth keyboard on there and it's now essentially a laptop. The iPhone has so many unique properties that it's essentially a different product, needing a totally different UI to accommodate its screen size as well as other changes.

I guess it all has to be rolled up as one app now?


r/iOSProgramming • • 1d ago

Discussion Do yall do seasonal updates with specific Ui/features often?

Post image
0 Upvotes

Just curious how much of a priority it is for everyone else.

New app developer, added a winter/holiday update coming live on certain dates. I added snow for winter that snows in certain app areas, after a while it builds up and some falls off.

Very gimmicky but I thought it would add some fun. Will probably do something for spring / spring break time as well


r/iOSProgramming • • 2d ago

News The State of Mobile Development 2026

Thumbnail
bitrise.io
3 Upvotes

r/iOSProgramming • • 2d ago

Discussion Any iOS developers here who have gotten into embedded systems or hardware integration?

6 Upvotes

I'm about to graduate with a degree in Software Engineering, and I've been thinking a lot about what direction I want to take my career.

Throughout school, I've spent a lot of time building iOS apps using Swift and SwiftUI, while also learning about computer hardware, operating systems, and how everything works together at a higher level.

A while back, I built an ESP32 robot car controlled through an iOS app using CoreBluetooth. I really enjoyed that project, especially getting the hardware and software to communicate with each other.

Now that I'm getting ready to graduate, I'm well aware that the job market isn't exactly great for new grads trying to land their first software engineering job, especially in iOS. With AI also changing how software is developed, I've been thinking about what skills might be worth investing in long term.

One direction I've been exploring is becoming more of a hybrid iOS/embedded developer. Not necessarily becoming a full time firmware engineer, but someone who understands both sides well enough to build mobile applications that communicate with physical devices, read sensor data, and handle hardware integration.

I'm curious what everyone thinks about this direction.

Has anyone here gone down a similar path? Is there actually a demand for developers who can bridge the gap between mobile apps and hardware? Do you think having that combination of skills could become more valuable as AI continues to improve, or would it make more sense to focus on becoming a stronger iOS developer?

I'd love to hear from people who work in this space or have considered going in this direction. I'm interested in hearing different perspectives, even if you think it's not worth pursuing.


r/iOSProgramming • • 2d ago

Question Can an App Clip share an image to Apple Notes through the share sheet?

0 Upvotes

My App Clip shows an image, and I need that image to end up in Apple Notes as a new note with as few taps as possible. The plan is to present UIActivityViewController with the image, then the user taps Notes, then Save.

I know clips can’t use PhotoKit, so “Save Image” is likely out. What I can’t find documented is whether Notes, or any other app’s share extension, still shows up in a clip’s share sheet and actually saves.

Has anyone tried this? I don’t have a paid account yet to test it myself. If someone could run a one-file test clip, I can send the code.


r/iOSProgramming • • 2d ago

Tutorial Maths, Metal, Mandelbrot, and SwiftUI

Thumbnail
blog.jacobstechtavern.com
1 Upvotes

r/iOSProgramming • • 3d ago

Discussion Is IOS App Dev worth it for indie devs anymore?

36 Upvotes

Does anyone find that indie app dev is worth anything ore than a badge of honor that gets you alien looks when you tell people you have an app on the App Store? iOS users are inherently spoiled, lazy and getting even someone to write app reviews is like pulling teeth. Heaven forbid you share a QR code in person after demoing your app and the person tells you how “cool” it is. Asking them to download to “help” you gets you treated like you are asking for their bank PIN number even though it went through strict app reviews and lands on the official App Store.

Then, since people don’t pay for anything anymore unless it’s ChatGPT you try to advertise your app. My calculations is that it takes $5 to get a user to download, and 1 out 1,000 might, maybe, if the stars align convert to a sale, that costed you thousands to find.

App Store advertising is expensive and competitive.

TikTok shadow bans app developers who verify their business and does everything correct. When you do the stupid thing of paying to promote a single post, all I got was bot views, a fake question here or there that I answered and zero reply after that. To me TikTok is a bot network and has been scamming app developers and businesses for years.

YouTube - shadow bans app developer channels also. I can see the view caps at 50 views, and sometimes one might pop out on a short for 1,000 views then swiftly die.

Web / Google - this is now destroyed by AI search engines. A user drops into ChatGPT and asks for an app that does XYZ. What does the search engine in these ChatGPT do? Regurgitating old garbage from 2 years ago with no relevance to what’s current. Then offers to build YOUR app for the user.

It is my opinion that app development is a lost cause now. The only companies making money off of app dev is Anthropic, OpenAi, Mistral and SpaceX AI. We effectively pay them and spend hundreds of hours testing their slop, building features, paying thousands in agentic fees for team plans, etc and when publishing apps, we pay for everything.

Stack on business fees, Apple developer annual fees, go through the headaches of obsessing over every feature and then get through app review and into the void of the millions of apps on the App Store, to end up losing thousands and thousands of dollars in app dev, building the supporting website (required for privacy policy hosting at a minimum) and not to mention owning real devices to ensure the app works - oldest and newest iPhones, iPads, watches, a MacBook that can run latest MacOS 27 and still be able to use massive disk space and RAM to build your apps.

Apple equipment and costs soars to nearly $10k just to have the right gear to do it right - especially if you develop anything that requires an actual device hardware that simulators can’t mimic - stay out of camera app development because it’s the most unforgiving market there is.

So in 2026 - my estimate is unless you have about $50k to buy the gear, pay for the services you might need to build such as AI, and don’t mind 1-2 downloads a week with zero conversions - it’s absolutely a loss. If you just want the badge of honor of saying “I have app(s) in the app store” which generally gets you near criminal looks in public these days as everyone seems to think you’re scamming them for a FREE app with optional PRO features - then go for it.

To add insult to injury, Apple came out with App Nominations where you submit your upcoming versions to the black hole of nominations requests. To never hear from anyone about it. The nomination requests are never answered and just disappear. No guidance on what you could do - not even in the AI age where they could have had an LLM tell you how to be better.

You’re probably thinking: this guy is a rookie, doesn’t know how to build apps. I’ve been in App Store since 2010 and had successful apps in the past. Now these super easy to use “Super Apps” are entering the void and causing developers like myself to feel like abject failures when everywhere I turn to try and promote my apps either rips me off (Apple App Store Ads, TikTok) and there’s just no return. 3 powerful apps and I can’t even cover my $99 year App Store developer fees. Let alone the api, the website hosting, domain fees, latest apple equipment, etc.

Laugh if you want, but I think app developers are cooked unless you’re just rich and want to endlessly lose money to promote in a market where everything is expected to be free.

Remember the days when “Buy the developer a coffee” was a thing? Coffee is like $9 now unless you get it at a gas station. Typical IAP or subscription is $2.99 to $9.99 in which Apple takes their slice and drinks 1/3 of your coffee. News flash, building apps for me takes about 6-8 coffee / double espresso daily to pull 20 hours in development and testing, so literally every day stacks up the loss.

Good luck out there. Do it for the love, but don’t expect or even hope the world cares about your work. Apple certainly doesn’t. Steve Jobs left a long time ago and it’s been downhill since.


r/iOSProgramming • • 2d ago

Discussion Follow-up: I posted AppFoyer here a month ago and got torn apart (fairly). Here's what I built from the feedback

0 Upvotes

A month ago I posted AppFoyer here, a tool that drafts and hosts the store-required pages for mobile apps (privacy policy, terms, support, account deletion, app-ads.txt): https://www.reddit.com/r/SideProject/comments/1wkr46f/

The thread was harsh and mostly right. A few of my comparison claims were wrong (I fixed them that day), and the pricing was a paper number. The comment that stuck with me was this one, roughly: "Hosting five pages is a Saturday on Cloudflare. What people skip is opening the policy again after the next release — they add an analytics SDK in March and the live page still says they collect nothing."

So that's what I worked on. Everything below is free.

1. Drift check - catches the moment your privacy policy goes stale

A small CLI plus a GitHub Action. When your pages are written, a baseline file (`appfoyer.json`) is committed to your repo: the SDKs, data facts and permissions found in your build files. On every pull request, the check compares the build files with that baseline and lists every SDK, data type or permission added or removed since — each with file:line and which page it *may* leave out of date. It never says "you're non-compliant"; it tells you what changed and you decide.

- Runs offline: no API key, no network, nothing leaves the runner, no page is touched

- The Action writes to the job summary only: no token, no permissions, works on fork PRs

- When the pages match again, `appfoyer-check update` moves the baseline

GitHub Action: https://github.com/appfoyer/check-action

CLI on npm: https://www.npmjs.com/package/@appfoyer/check

How it works: https://appfoyer.com/guides/keep-privacy-policy-in-sync-with-your-build

2. It's a skill now (for the "just make it a skill" crowd)

There's a Claude Code plugin. In your app's repo you type "Make this app store-ready". It reads your build files on your machine, shows the facts it found (with file:line) and asks a few questions - no account needed for that part. Only when there's something to save does it ask you to connect (browser sign-in, no API key to copy). Only derived facts leave your machine, never source code. It drafts; nothing goes public until you read each page and click Publish yourself. On medialantern's point that a privacy policy is a decision, not a listing: agreed. That's why it drafts and asks, and you publish.

Plugin: https://github.com/appfoyer/claude-plugin

3. A Chrome extension for the store consoles

The second boring part of shipping is filling in Google Play Console and App Store Connect. The extension opens a side panel next to the console and shows what each page asks for, field by field, in the store's own words, with a link to the store's help page for every rule: listing limits, contact details, the privacy policy URL, every Data safety question, Apple's App Privacy questions.

It works without an account. If you connect (optional, read-only), it also shows your own app's values next to each field, ready to copy. For Google Play's Data safety there's a CSV you can import into Play Console; I checked every case of it against Play's own validator before shipping. The extension never fills in or submits anything: you fill in the console, the panel is the checklist beside you.

Chrome Web Store: https://chromewebstore.google.com/detail/aakkoeckkgpkejgbcgpklcdenbmhpnjn

What it does and doesn't read: https://appfoyer.com/chrome

Smaller things

- AdMob has verified app-ads.txt files hosted on AppFoyer subdomains, so that part is no longer "should work in theory"

- Still no custom domains. I said I'd add them once the core is proven, and that hasn't happened yet

Where it stands, honestly

Nobody is paying for it yet. Zero paid users. The free tier (one app, everything a store requires) is what people use, and that's fine for now: I'd rather find out whether the drift check and the extension are useful than defend a price.

Same question as last time, sharper: if you ship mobile apps, would you install the drift check on a repo? And if not, what would have to be true for you to bother?

Site: https://appfoyer.com


r/iOSProgramming • • 2d ago

Question Catch-22 with App Review: rejected under 2.1(b) for not submitting IAPs, but ASC won’t let me submit more than one (FIRST_NON_CONSUMABLE_MUST_BE_SUBMITTED_ON_VERSION)

0 Upvotes

Has anyone hit this and found a way out? I’ve shipped several apps with IAPs and never seen it before.

Setup

  • A new app with its first version, 1.0.
  • 41 non-consumable IAPs: individual items plus a few bundles, one of which unlocks all content.
  • All 41 are Ready to Submit, with prices, localizations and review screenshots.

What happens

  1. I add the IAPs to version 1.0. ASC accepts only one of them.
  2. The other 40 are refused with FIRST_NON_CONSUMABLE_MUST_BE_SUBMITTED_ON_VERSION. It’s the same in the web UI and the App Store Connect API.
  3. As I read it, the first non-consumable has to be approved before any others can be submitted.
  4. So I submit 1.0 with the one IAP. App Review rejects it under 2.1(b): “the app includes references to in-app purchase products but the associated In-App Purchase products have not been submitted for review. Submit the IAPs and upload a new binary.”
  5. I appealed and explained. The next reviewer sent the same rejection, and added that IAPs are tested in sandbox and “do not need to be approved to function while in review”.

So review won’t approve the version until all the IAPs are submitted, and ASC won’t let me submit them until one has been approved through review. Neither can happen first.

What I’ve tried

  • Submitting the IAPs in the web UI and through the API: one goes in, the rest error.
  • New builds, resubmitting, and replying in Resolution Center with the exact error.
  • An App Review Board appeal.

Questions

  • Has anyone had FIRST_NON_CONSUMABLE_MUST_BE_SUBMITTED_ON_VERSION block the second and later IAPs, not just the first?
  • Did contacting Developer Support (rather than App Review) get it fixed on Apple’s side?
  • Or did you work around it, for example by shipping 1.0 selling only one bundle and adding the rest in 1.0.1?

Just to clarify, i have only seen this "bug" since ASC got updated recently with support for assets etc.

Any experience appreciated. Happy to share more detail.

EDIT: Solved, thanks everyone. It’s not a hard limit; it depends where you add the IAPs from.

  • Fails: adding IAPs to the first version from the version page, the In-App Purchases list, or the App Store Connect API. All but one give FIRST_NON_CONSUMABLE_MUST_BE_SUBMITTED_ON_VERSION.
  • Works (web UI only): open each IAP’s own page, press Add for Review, and choose the iOS draft. Then press Add for Review on the version page into the same draft, and submit.
  • If your version is stuck in an “Unresolved Issues” submission, hover over each item there for the red remove icon, take them out, and add them to the new draft.
  • Your reviewer messages stay on the old submission, so repeat anything that was already cleared in the App Review notes.

r/iOSProgramming • • 3d ago

Discussion How are you locking down Claude Code Desktop to protect sensitive local files (like ~/.ssh)?

9 Upvotes

I’ve found Claude Code Desktop superior to other coding tools right now. Out of the box, it can launch the simulator and interact with the UI directly as an agent.

This means the AI can write, run, and test its own code inside the simulator with real UI interactions, leading to a fast iteration loop and high-quality results.

However, with great power comes great risk.

My question is: how do you prevent Claude Code Desktop from accessing sensitive local directories like ~/.ssh?

I know it prompts for permission, but "prompt fatigue" is real, and it’s way too easy to accidentally click "Allow."

Here is one of the configurations I’m currently using:https://gist.github.com/yccheok/454872820219b4d9cf79b1bf509adb14

For tasks that don't require launching the simulator, I run Claude Code inside an OS-level sandbox (docker sbx). Running it through the Xcode integration might also be safer, though I haven't found an easy way to let Claude interact directly with the simulator in that setup.

How are you all sandboxing your environment to keep sensitive data safe from AI agents?


r/iOSProgramming • • 3d ago

Question Enrolling in Apple Developer Program

0 Upvotes

Idk what is going on but trying to enroll in the developer program seems to be more difficult than trying to pass my organic chemistry class back in college.

I have tried 5 different room with different lighting from natural to lamps, and have gone outside, but for the life of me I can’t get Apple to accept my license. Is it because my legal name (on my license) is Timothy and my Apple Account name is Tim? I keep getting like “unable to verify your identity”. Has anyone else encountered this? If I need to change my Apple account name because of this that’d be the dumbest Apple thing since idk when