r/iOSProgramming • • 4h ago

Question How do you know which videos / ads actually bring in paying users for your app?

4 Upvotes

For those of you creating and marketing mobile apps, I am curious as to how you track the correlation between videos that actually drive paying users and downloads. Do you use promo codes / tracking links, just watch downloads after a post, or do you have a tool that helps you? Looking for a better way to do this. Would love to hear what has / hasn't worked for you.


r/iOSProgramming • • 15h ago

Discussion Widget based configurable remote

12 Upvotes

Fun use of widgets as they are customizable and resizable. Would be nice if you could batch import them instead of 1 by 1 as it takes a little while.

Looking to make most of native integrations like Siri (but that has been performing poorly some reason) and shortcuts.


r/iOSProgramming • • 13h ago

Question TOS & Privacy Policy Mobile Game

0 Upvotes

As an indie developer, do you need to be registered as self-employed in order to make a valid TOS/Privacy Policy document?

Ads are handeled by LevelPlay - IAP are handled by the stores (Play Store - App Store).


r/iOSProgramming • • 19h ago

Question How is this possible? Crash on a device with lower iOS version than Minimum Deployment...

Post image
2 Upvotes

Hello everyone!

The title says it all basically... Could that be someone used a jailbroken device and passed App Store restrictions somehow?

My minimum deployment is not randomly selected, that min. version is needed or the app can't be used (hence it crashed lol).

Any one else encountered this issue, any other explanation?


r/iOSProgramming • • 22h ago

Tutorial iOS 27: App Intents Testing

Thumbnail
antongubarenko.substack.com
5 Upvotes

r/iOSProgramming • • 1d ago

Library Hey! I added fireworks to my lib Confetti3D, using SceneKit and shaders

Thumbnail
gallery
20 Upvotes

I shared Confetti3D here a while ago, a small library for adding 3D confetti and glitter to iOS apps. I just released version 2.0 with a new fireworks effect.

The rocket trail uses SceneKit particle system (like with the confetti or glitter), but the explosion particles use two shaders: one for a glow effect, and another one for the particle position, using SCNMaterial.shaderModifiers. I tried with full particle system but it was a bit laggy when reaching a certain number of particles. Also clearly used AI to generate the shaders, not my thing when it's too mathematical involving lights etc.. But it's nice to see how shaders can easily be integrated with SceneKit.

Everything still runs on the GPU, it's smooth enough to have lots of fireworks at the same time (tested on iPhone 13).

It works with SwiftUI and UIKit, and you can adjust the colors, number of rockets, speed, launch interval, size, and position.

You can find it here: https://github.com/maxime-day/Confetti3D

Would love to hear what you think, cheers!


r/iOSProgramming • • 1d ago

Question How do you build a network as an early career iOS developer outside of school in NYC?

2 Upvotes

I’m finishing my software engineering degree at WGU and focusing on iOS development. Since it’s an online school, I haven’t had much access to a school network or opportunities to meet other developers.

I’ve built and published iOS apps, and I just moved back to NYC. I’m trying to connect with people in the field beyond submitting job applications, so I’d appreciate suggestions for local communities, meetups, or events. Online communities would be helpful too.

For anyone who started without a strong school or professional network, what actually helped you build relationships? I’d like to meet other developers, learn from them, and contribute where I can.


r/iOSProgramming • • 1d ago

Question What happened to the swift on android? What is today status

4 Upvotes

r/iOSProgramming • • 19h ago

Question How to get subscribers to stick around

0 Upvotes

Long-time lurker, moderately infrequent commenter here :)

I have a few apps in the AppStore and genuinely enjoy the engineering/designing blend between creating apps and solving a problem. Some of my apps have a subscription model and some do not - they were just made for fun.

My question to the community is really about… well community.

My lifetime earnings as a dev are around $55k over 5-6 years, which is great and it’s been fun, but I would like to decrease my churn rate in order to increase my MRR base. Often, I offer a user 3 subscription options with the final option actually being a one-off payment option. Things have been going well, but I want to take it to the next level.

One idea I have is to introduce an in-app community.

Has anybody got any experience of this and does it decrease churn or is it just another headache to handle when everything goes live?


r/iOSProgramming • • 1d ago

Question Any dev here has built an iOS app first/only startup? What has the experience been like?

0 Upvotes

Do you ever feel like you need to have a web app?


r/iOSProgramming • • 1d ago

Question iPhone Duo Tent Pose in Simulator

8 Upvotes

Anyone know how we should go about accessing when the phone is in Tent Mode when our app is running. I want to do a special view specifically for this to act like a picture frame of drawings they have done in my app. I have no clue how to get this pose in the simulator and not sure if there is any type of detection that we can find out that it is in the pose.


r/iOSProgramming • • 1d ago

Discussion Has anyone had their iOS app cloned? How much time did you spend dealing with it?

3 Upvotes

I’ve been reading about developers having their apps copied on the App Store, sometimes including names, icons, screenshots, and descriptions.

I’m curious how common this actually is.

If you’ve experienced it:

- How did you discover the copied app?

- Did you report it to Apple? What happened?

- How much time did you spend dealing with it?

- Have you ever paid for a service to monitor or help remove copycat apps?

I’m exploring whether automated monitoring and evidence collection would solve a meaningful problem for indie developers.

Not selling anything. Genuinely trying to understand whether this is a recurring headache or something that happens too rarely to justify a dedicated tool.


r/iOSProgramming • • 2d ago

Discussion My app name got flooded with clones. Apple took down one, but now there are even more.

Post image
134 Upvotes

I’ve been pouring a ton of time and effort into building and improving my app, but its name is getting completely ripped off right now.

I actually managed to get Apple to take down one clone recently, but instead of fixing the problem, even more copies have popped up since. Filing a dispute and going back and forth with Apple took weeks for just that single app—having to go through that entire process all over again for every single one of these is just exhausting.

And to be completely honest, what stings the most is looking at these rip-offs and realizing some of their store screenshots actually look catchier than mine. I find myself feeling jealous of the very apps copying me, which just feels awful.

I really wish Apple would at least block apps with identical names at review time...

How would you handle a situation like this? Any advice or reality checks would be greatly appreciated.


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

0 Upvotes

r/iOSProgramming • • 3d ago

Question How does the ChatGPT app move the keyboard like that?

Post image
109 Upvotes

r/iOSProgramming • • 2d ago

App Saturday simshot: App Store screenshots from simctl, no XCUITest

4 Upvotes

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 xcodebuild and simctl instead of reimplementing them.
  • SDKs and tools: xcodebuild / simctl / xcrun at 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. vhs records 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 copies

Two 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. --resize flattens 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 | bash

Or 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,en

Repo, 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 • • 2d ago

App Saturday Offli — screen-time challenges with real cash prize pools (SwiftUI + FamilyControls). It took 16 App Review rejections to ship.

Post image
0 Upvotes

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 • • 2d ago

Question In custom product page, we can not pick keywords from our app title or subtitle. That seems off.

1 Upvotes

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 • • 2d ago

Question App Encryption Documentation stuck "In Review" for 35+ days with ZERO response from Apple. Is this a pipeline bug?

3 Upvotes

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 • • 2d ago

App Saturday I turned aptitude test exercises into an app so you can practise them on your phone

0 Upvotes

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.

Brain Preflight on the App Store


r/iOSProgramming • • 2d ago

Discussion Product page header - Wrong aspect ratio

1 Upvotes

We try to apply the new Product Page Header, by using a 5 seconds video.

The preview looks great

However, when viewing on real iPhone 17, iOS 27, it produces wrong aspect ratio.

Any idea how we can resolve this? Thank you.


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

1 Upvotes

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 • • 2d ago

Discussion Someone posted an idea for an App - the Shazam for film/TV.

0 Upvotes

I thought it was truly impossible to index that much data. What do you think? 🤔


r/iOSProgramming • • 2d ago

App Saturday I'm building RelayPlay: retro cassette or modern UI for the Duo's tabletop mode?

Thumbnail
gallery
0 Upvotes

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?

  1. A cassette deck: the show and episode on the label, with the main playback controls beside it.

  2. 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 • • 3d 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.

Post image
8 Upvotes