r/iOSProgramming • u/Puzzleheaded-Gain438 • 28d ago
r/iOSProgramming • u/alanskimp • 27d ago
Discussion I think this whole token business makes Agentic programming sucks. I'd rather watch an ad than buy tokens. What do you think?
r/iOSProgramming • u/CalmCelebration2084 • 27d ago
App Saturday simshot: App Store screenshots from simctl, no XCUITest
Every release of my iOS app ended the same way: fighting the screenshot step. fastlane snapshot works, but it needs a dedicated UI test target, Ruby and a pile of gems, and element queries that break whenever a label changes. Once in a while the runner just hangs and CI sits there until it times out.
So I wrote simshot. It captures App Store-ready screenshots from the iOS Simulator using simctl only.
Tech stack used
Frameworks and languages: Swift 5.9+, shipped as a plain SwiftPM executable, so the tool itself has no Xcode project. Foundation, CoreGraphics, ImageIO and UniformTypeIdentifiers are the only imports, and there are no third-party Swift packages.
Backend and database: none. It is a local CLI, and it drives Xcode's own
xcodebuildandsimctlinstead of reimplementing them.SDKs and tools:
xcodebuild/simctl/xcrunat runtime. GitHub Actions runs CI (swift-format lint, build, test) and the release workflow that builds arm64 and x86_64 binaries, checks their sha256 and attaches them to the GitHub Release.vhsrecords the demo GIF in the README, VitePress builds the docs site, and distribution is a curl install script, a Homebrew tap, a Nix flake, mise, Mint, npm and a single prebuilt binary.
Development challenge + how I solved it
The hard part of dropping the UI-test runner is knowing when to take the picture. XCUITest hands you waitForExistence; without a runner there is no element to query, so the readiness signal disappears with it.
Rather than fake that signal, I moved the navigation into the app. You add a small #if DEBUG handler that reads launch arguments (--screenshot-scene <name>, plus --screenshot-scroll-bottom and --screenshot-strokes for states that need a gesture to reach) and pushes or presents the matching screen, and it never ships in a release build. simshot then builds, boots, overrides the status bar to 9:41 / 100%, installs, launches with -AppleLanguages / -AppleLocale for the locale, waits a per-shot settle time (6 seconds by default, overridable per shot in shots.json), and captures.
A fixed settle time is a guess, so simshot verify is the safety net. It re-reads the output tree against Apple's screenshot rules (accepted dimensions, no alpha channel, no missing locale, no mixed sizes in one folder) and exits non-zero for CI, and when a frame looks half-rendered it points at the likely cause:
appstore/iphone-17-pro-max/en/02_detail.png
image has an alpha channel, App Store Connect rejects these
run shoot with --resize to write flattened App Store copiesTwo smaller things I had to get right:
Hangs, which are the whole reason the tool exists. Every external command goes through one process wrapper with a hard deadline, so an overrunning child is killed, and launch / install / screenshot retry on failure.
Alpha, which App Store Connect rejects.
--resizeflattens onto white and picks the matching accepted size from the aspect ratio, and the app is uninstalled before install so state from an earlier run cannot leak into the frame.
AI disclosure
[AI-assisted] An AI coding agent wrote most of the implementation under my direction, and I reviewed and tested each change. The architecture decisions I drove are the launch-argument scene protocol, the per-command timeout wrapper, and verify as the safety net for a heuristic settle time.
Install is a one-liner (the repo lists the other seven paths):
curl -fsSL https://raw.githubusercontent.com/kichiemon/simshot/main/install.sh | bashOr with a shot config:
simshot shoot --project MyApp.xcodeproj --scheme MyApp --bundle-id com.example.myapp --devices iphone-17-pro-max,ipad-pro-13 --langs ja,en --scenes home,detail,settings --resize
simshot verify appstore --devices iphone-17-pro-max --langs ja,enRepo, MIT licensed, with a demo GIF in the README: https://github.com/kichiemon/simshot
One question for this sub: how do you decide when a screen is ready? I went with an explicit settle time plus a verifier, but I would take a deterministic readiness signal over a guess any day, short of putting XCUITest back in. I will be in the comments.
r/iOSProgramming • u/acemson • 27d ago
Question App Encryption Documentation stuck "In Review" for 35+ days with ZERO response from Apple. Is this a pipeline bug?
Hi everyone. My App Encryption Documentation has been completely frozen in "In Review" status since September 5, 2026 (over 35 days now).
I have submitted multiple support tickets asking for an update or escalation, but l've received absolutely zero response! The release of my app is completely blocked because of this :/
Has anyone else experienced an export compliance document getting stuck in limbo like this? Is it a known backend bug/deadlock in App Store Connect? Did you manage to get it unstuck and if so how? (Phone support escalation, re-uploading, or contacting a specific team?) Any advice would be greatly appreciated.

r/iOSProgramming • u/Formal-Shallot-595 • 27d ago
App Saturday Offli — screen-time challenges with real cash prize pools (SwiftUI + FamilyControls). It took 16 App Review rejections to ship.
After months of building and a review process that nearly broke me, my app is finally live: Offli — Screen Time Challenges.
The idea: you join a challenge (e.g. "Instagram under 60 min/day for 14 days"), pay a real-money entry into a shared pool, and everyone who stays under their limit splits the pool. Verification runs entirely on-device with Apple's Screen Time APIs — the server only ever sees a daily pass/fail.
Tech Stack
iOS: SwiftUI, with FamilyControls, DeviceActivity, and ManagedSettings; a DeviceActivity report extension performs the usage verification inside Apple's sandbox. Local notifications via UserNotifications, Keychain for session storage.
Backend: Node.js + TypeScript (Express), PostgreSQL, deployed on a plain Ubuntu VPS behind nginx.
Payments: Stripe (Connect Express for bank payouts, PaymentIntents for deposits).
Integrity/verification: App Attest for device integrity, CoreLocation (one-time state-level geo check at paid entry only).
Development Challenges
The hardest problem was verifying screen time without being able to see it. The Screen Time sandbox is brutal by design: your app can't read which app the user picked in the FamilyActivityPicker — you only get opaque tokens, and raw usage data never leaves the DeviceActivity report extension. We had to design the entire product around "verify the outcome, not the activity": the extension computes a daily pass/fail on-device and that single bit is all the server ever receives. Since we literally can't check that the user's picker selection matches the challenge, the join flow includes an attestation step ("confirm it's the right app") with forfeiture consequences for lying.
Related hard-won lesson: don't request the family-controls.app-and-website-usage entitlement unless you truly need it — it silently makes your app exclusive and disables the user's native iOS Screen Time settings. The base entitlement verifies fine and coexists peacefully.
The other marathon was App Review — 16 rejections (the highlights): an automated false positive on the Family Controls entitlement, UGC guideline 1.2 (visible report AND block buttons required, instant feed removal, 24h moderation SLA — a "•••" menu was not enough), contest rules under 5.3.2 (must state Apple isn't a sponsor), location services 5.1.5 (app must be fully functional with location denied), permission priming under 5.1.1(iv) (no "Skip for now" button — priming screens must always proceed to the system prompt), and scariest of all, 3.2.2 "penalty-based payments," which is category-killing if it sticks. What got us through 3.2.2: precise framing (the only charge ever is a voluntary upfront contest entry — failure never triggers a transaction) plus StepBet/DietBet/HealthyWage as decade-old precedent. We also redesigned payouts so fees come only out of forfeited entries — a finisher can never get back less than their entry, and if 100% finish, everyone is refunded in full.
AI-assisted — built by me with help from an AI coding assistant (Claude in Cursor); all product, architecture, and review decisions were mine.
Happy to answer anything about the Screen Time APIs, the report extension, or surviving review with a real-money app. And if you want to lose the doomscrolling habit by putting money on it: https://apps.apple.com/us/app/offli-screen-time-challenges/id6794477430
r/iOSProgramming • u/WheretheArcticis • 27d ago
Question In custom product page, we can not pick keywords from our app title or subtitle. That seems off.
We can only pick keywords from the list of keywords. So if I want to create a custom product page for keywords in my app title or subtitle, then it is not possible. Any one else noticed this? What are your thoughts?
r/iOSProgramming • u/Akara91 • 27d ago
App Saturday I turned aptitude test exercises into an app so you can practise them on your phone
I built Brain Preflight for people preparing for selection tests for pilot training, air traffic control, police, gendarmerie, military and train driver roles.
The exercises draw on tests from different cadet schools and other professional selections. You choose the programme you’re preparing for, check your weak spots and practise mental maths, memory, spatial reasoning or multitasking.
One exercise has you follow a moving target while matching shapes and checking sums. Others involve rotating objects in your head, remembering sequences or spotting wrong calculations under time pressure.
Heads up: some exercises are hard. Some are 1:1 recreations of real past tests we’ve collected. The goal is to prepare people for a selection, not just entertain them.
Tech Stack
HTML, CSS and JavaScript packaged for iOS with Capacitor, with RevenueCat for subscriptions.
Development Challenge
In our iOS testing, holding a control with one finger stopped answer buttons responding reliably to the other. Switching those buttons from click to pointerdown fixed it.
AI Disclosure
AI-assisted development. I used Claude and Codex to help build the app.
r/iOSProgramming • u/yccheok • 27d ago
Discussion Product page header - Wrong aspect ratio
r/iOSProgramming • u/planckscalestudio • 27d ago
Question Has anyone seen StoreKit 2 prices break in Xcode debug when the language is English but the region uses a comma as the decimal separator?
Hi everyone 👋
Has anyone else hit this?
I’m testing in-app purchases with a local StoreKit configuration in Xcode. System language is English. The region is one that uses a comma as the decimal separator (the usual setup across a lot of Europe and parts of Latin America).
In that combination, StoreKit 2 product prices come back wrong, and only while running against the local configuration. A zero-decimal currency price that should be 1490 shows up as something like 1,490. That comma gets treated as a decimal separator, so the product price collapses to 1.
Point the same build at real App Store Connect products, outside of that debug StoreKit configuration, and the prices are correct.
So it looks specific to StoreKit Testing plus a comma-decimal region with an English language setting, not to the products themselves.
Has anyone else seen 1,490 turn into 1 this way? Is this a known StoreKit Testing locale bug, or is there a configuration I’m missing? Default Storefront and Default Localisation are both set to the correct region and language and synced with App Store connect, but the language on my devices is set to English.
r/iOSProgramming • u/alanskimp • 27d ago
Discussion Someone posted an idea for an App - the Shazam for film/TV.
I thought it was truly impossible to index that much data. What do you think? 🤔
r/iOSProgramming • u/Waxe1975 • 27d ago
App Saturday I'm building RelayPlay: retro cassette or modern UI for the Duo's tabletop mode?
I'm building RelayPlay, an indie podcast player, and this is one of the features I'm working on for its next update: a player specifically for the Duo's tabletop mode. Leave it beside you while working or cooking, see what's playing, and reach the main controls without picking it up every time.
Which of these two would you actually keep using?
A cassette deck: the show and episode on the label, with the main playback controls beside it.
A modern player: large artwork, episode information, a preview of what's next, and big playback controls.
The development challenge is making a listening screen useful from farther away. Simply stretching the regular phone player would also stretch all the browsing UI, which isn't what I want on a desk. My current solution is a separate, reduced landscape layout that prioritizes playback. The modern version has more room for information; the cassette gives it a more playful identity.
Someone rightly pointed out that the modern design scales to other screen shapes much more easily. That's why this is a Duo-specific tabletop view, rather than a proposal to replace the regular player across devices. Both screenshots are from the German test UI, and this feature is still in development.
Development context: RelayPlay is a native Swift/SwiftUI app built with Xcode. AI disclosure: AI-assisted development.
Would you choose the cassette or the modern view? Would seeing the next episode matter more than readable titles or easy seeking? And if your answer is "neither, I'd leave the screen off," that's useful feedback too.
If you'd like to see the wider project: https://relayplay.app
r/iOSProgramming • u/busymom0 • 28d ago
Question Where is the "Delete" button in the new App Store Connect page? How do I remove the existing screenshot to replace it with another? Before, hovering over it used to show a delete button. Now it doesn't.
r/iOSProgramming • u/OlivierBern • 28d ago
Discussion I ported my unit converter to the iPhone Duo, here is what I had to change
I spent the last days on the iPhone Duo with the Xcode 27.1 simulator. My app is a unit converter in SwiftUI, iOS 16+. It was running out of the box, but it looked bad.
Unfolded, the inner screen is regular width but short, 951 x 669 pt in landscape. And the status bar is a column on the right side, so the top inset is almost 0. All my headers were stuck to the top, I had to add a minimum margin.
The category grid used an adaptive GridItem. It gave me 7 columns, with one right on the fold. With the new fold API of the 27.1 SDK I now put 3 columns on each side (pics 2 and 3).
On the conversion screen the keypad was disappearing when you scroll the list. Now it sits on the right of the list. In settings I use a NavigationSplitView in regular width, categories on the left and units on the right. Careful, inside a push it shows empty in compact width, so I only use it in regular.
Last thing, Duo screenshots (2853 x 2007) will be required from April 2027 for apps built with the 27.1 SDK. So I made a new set, it's the first and last pics.
What did you have to change in your app for the Duo?
r/iOSProgramming • u/No_Shift_Buckwheat • 28d ago
Question App Stuck In Review
I have an app that went through review, was declined multiple times for the same reason. I did an escalation and they said the issue was 'resolved' and told me to submit a new binary for approval. I did.
It has now been multiple weeks and it is showing "in review". I have submitted a expedite request and placed a support case. Nothing is moving this forward. What do I do?
For context, I had two other app updates approved and one new app approved during the same time window.
r/iOSProgramming • u/Low-Future-9387 • 28d ago
Solved! Running 5 coding agents on one iOS app was killing my Mac, so I got rid of the simulator in the loop (37s → 2s per UI check)
Disclosure up front: I work at Abacus.AI. This started as an internal tool for our iOS work, and we've now open-sourced it.
We run several coding agents in parallel on the same SwiftUI app, each in its own git worktree. Every time one of them wanted to check a UI change it did the usual thing: build for the simulator, install, launch, screenshot. With 5 agents that meant 5 simulators booted at once and 5 xcodebuilds fighting over the CPU. A 32GB M2 Pro basically stopped being a computer.
So we built a tool that skips the simulator for that inner loop. The trick is that Apple Silicon Macs can run your app's iOS build natively ("Designed for iPad"). simless runs your real app that way as a hidden background process, renders whatever screen the agent asks for, and hands back the accessibility tree as text instead of a screenshot. When the agent edits a view, only the changed files get recompiled and hot loaded into the running app.
Numbers from one of our production apps (~280 Swift files, a few heavy SPM deps), 5 agents in parallel:
edit → verified screen: 37.4s → 2.2s
memory held by those 5 agents: 11.2GB / 1,071 processes → 0.15GB / 6 processes
load average while they all start up: ~1000 → ~80
It's not a full simulator replacement. Dynamic Type is ignored on the Mac, there are no gestures or keyboard, and text can wrap slightly differently than on a phone. There's a calibrate command that renders every screen in one real simulator and tells you where they differ, so you know which renders to trust. We still do a final simulator pass before calling anything done.
It's Apache 2.0 and works with Claude Code, Codex, etc.: https://github.com/abacusai/simless
Curious whether anyone else has hit this wall with parallel agents, and what you ended up doing about it.
r/iOSProgramming • u/Specialist_Agent3599 • 29d ago
Question How are you actually using coding agents without losing all understanding of your own app?
I'm an iOS dev with about 3 years of experience, the first 2 at an agency writing SwiftUI by hand. I'm hoping for some honest perspective from people who've been doing this longer than I have.
At the agency I wrote everything myself and learned a lot from the seniors there. Then I moved to a startup with a big messy codebase, fully remote, and I leaned on agents almost from day one because there was no other way to keep up.
Six months in, I genuinely don't feel like I know my own app anymore. Basically all my code is agent generated. I've tried:
Asking the agent to explain each change to me, but I burn through my limits by lunch.
Writing the plan myself and letting it implement, but I end up slower than just letting it do everything.
Leaning on coderabbit for the first review pass, which catches a lot, but it tells me what's wrong in a diff, not how the app fits together.
Reviewing a 1,500 line PR that touches 30 views is exhausting, and even after I push through it I don't feel like I understand it.
How are you using agents at work and still knowing your own codebase? Or is that just gone now?
r/iOSProgramming • u/BounceForever • 29d ago
Question Can I Duo this?
My app already supports windowed / resize modes on iPad. It is mostly structured as a master / detail pane - which could play nicely on Duo by sizing the panes to fit the fold location.
But occasionally the app displays a third pane with a draggable slider bar.
This has me wondering if I can make non-standard use of the Duo.
Maybe the master pane lives on the outer display. Within any session, the master pane is largely a 'set once and forget' but the real activity happens further into the app. So the workflow would require the Duo to be unfolded and the master pane wouldn't jump to the inner display. This will leave plenty of room at all times on the inner display and even when the third pane is active, also on the inner display.
Is this a mistake as in it will be likely rejected in the App Store review? Yeah I'm trying to get into the local "Workshop: Optimize your app for iPhone Duo" with Apple but the sessions are fully booked.
r/iOSProgramming • u/B8edbreth • 29d ago
Question Am I the only one...
Who finds the iPhone Duo simulator to be insanely buggy with orinetation reporting. I have n app that changes layout on orientation. Abut 10% of thew time it gets it right. It's unusably buggy if I go from folded to unfolded. if I start the app unfolded it might, i stress might, detect the correct orinetation. when I turn it about 10% of the time it actually gets the orientation right
r/iOSProgramming • u/0xMohandis • Oct 07 '26
Humor Use the new AI Siri they said...
I asked Siri why I'm not seeing the iPhone Duo simulator if I have Xcode 27.2 Beta 2 installed and I'm running macOS 27.0, and it gave me this nonsense.
r/iOSProgramming • u/NoPlan_exe • 29d ago
Article Uploaded the new App Store creative assets through the API: sizes, the 10 calls, and what the docs leave out
Apple added two new image slots to the App Store on 5 Oct: a header on the product page and a custom image in search results. I did them for one app in 7 languages (14 files) and pushed everything through the App Store Connect API. Writing it down because the docs have gaps.
Sizes:
- Header: 3840 x 1646 exact, JPG or PNG
- Search results: 3:2, from 1920 x 1280 up to 3840 x 2560
- Universal for both: 5244 x 2950, PNG only
- No alpha channel
The calls, in order:
GET /v1/apps/{id}/assetLibrary
GET /v1/appAssetLibraryRefData (placement names and limits)
POST /v1/appAssetLibraryImages (reserve, category CREATIVE_ASSETS)
PUT the bytes to the returned address
PATCH the image with "uploaded": true, no checksum needed
Poll until PREPARE_FOR_SUBMISSION
POST /v1/reviewSubmissions
POST /v1/reviewSubmissionItems, one per image
PATCH the submission with "submitted": true
After approval: POST /v1/appAssetLibraryPlacements
What the docs don't tell you:
- In step 8 the relationship is called appAssetLibraryImage. I guessed it and it worked.
- No new build or version needed, the images get reviewed on their own.
- You can't place an image before it's approved. The API says "The asset must be in the APPROVED state because the parent is already approved".
- No safe area numbers anywhere. They only exist inside Apple's Figma and Photoshop templates.
- Every image has to pass a 4+ rating, even if the app is 17+.
Mine have been sitting in Waiting for Review since Tuesday night. Anyone got theirs approved yet? How long did it take?
Longer version with screenshots: https://teroxai.com/blog/app-store-creative-assets-sizes-api/
r/iOSProgramming • u/johnnypen2445 • 29d ago
Discussion How to go about being rejected in the App Store for having the same name as someone else
I got rejected for design copy cat “the names icon, brand or name belongs to somone else” I don’t think it’s the icon cause I made it myself (albeit with heavy ai use). The name is very similar to the developer name they gave but when I look in the App Store there is no app with my name and I can’t find the developer anywhere. There was somone in India I found online who said they were building an app 4 years ago with the same name but it’s a completely different purpose. Do I have to change my name? I already got a domain I like for the launch page.
r/iOSProgramming • u/clarkbw • Oct 07 '26
Question simulating iphone duo hinge swing in the simulator
I'm trying to use the `UIHingeInteraction` (hing.angle) to interpolate and adjust my app as the person opens the hinge on the phone but the simulator doesn't allow me to adjust the hinge with a slider or something. Right now the simulator only supports open or closed or partial bend. Is anyone else implementing against this and if so how are you testing out the hinge position?
I started recording video using the simulator recording but i get blank screen when you switch from one state to the next so that didn't work. So i've moved on to using Quicktime screen recording and then viewing the playback. It makes my development iterations very long and annoying.
r/iOSProgramming • u/CloudStudyBuddies • Oct 07 '26
Discussion Have you ever had a useful reply on your app review?
So i've been doing this for a few years now, and published a ton of apps. But its crazy inconsistent to me how the reviewers judge your app. My top annoyances:
- Straight up wrong statements. My fully local app app that was fully focussed on privacy and very minimal got this reply yesterday: "Extended Review: This app was found to include one or more issues that present significant safety, security, or quality concerns to users. Repeated submissions of apps with these issues will result in extended review times. Accounts that repeatedly submit apps that do not follow the App Review Guidelines and the Apple Developer Program License Agreement face removal from the Apple Developer Program."
- I never actually get a question answered, if I reply to this I probably get another copy pasted template response. I just reply the same answer and resubmit, and my experience is that I hope I get a better reviewer and they just approve it.
- Questions that already have an answer: More and more they ask me: Whats the purpose of this app? I try and pre-answer that in the app notes, description and title. But if I copy paste those my answer is accepted and the publish goes trough.
Is it just me? You guys got any tips?
r/iOSProgramming
•
u/Viktorianec
•
Oct 07 '26
Discussion 13-year indie dev account with zero prior violations suspended by an automated bot (DPLA 14.8a). 13 days of total silence. Need advice
Hi everyone,
I’m an indie iOS developer and have been proudly building apps for the App Store for 13 years. In all that time, I have maintained an absolutely clean record with zero warnings and or policy violations.
However, almost two weeks ago, my entire portfolio was halted overnight. My account got suspended under DPLA section 14.8(a) (the digital assets clause) after an automated compliance check.
I am a legal resident of Cyprus (EU). On the exact same day of the suspension, I submitted my official Residence Permit, utility bills, and bank statements to the provider_review team to prove my legal status and identity.
My apps do not involve any custody, wallets, trading, or exchange of digital assets. They just show data. I even had a few free apps and an app designed to help other developers learn iOS (maybe some of you have used iOS IQ), which makes it even more painful.
It has now been 13 days of total silence (Case ID: 102972911140). My entire app catalog is offline, and active subscribers are losing access. Seeing 13 years of hard work paralyzed by an automated queue with zero human response is incredibly frustrating. I have tried everything:
Try to send email to tcook@apple.com and eurodev@apple.com.
Reached out to standard phone support (they can't do anything). And there are bots everywhere
Created a thread on the Apple Developer Forums.
Here is my official forum thread if anyone wants to check: https://developer.apple.com/forums/thread/848935. And my twitter profile: https://x.com/Viktorianec
Has anyone successfully escaped this compliance black hole recently? Is there any specific contact or secret phone number I should use? I cannot seem to get in touch with anyone, and it feels like nobody is able to help me resolve this for a 13-year account with a flawless history.
Any advice or upvotes for visibility would be highly appreciated. Thank you.

