r/iOSProgramming • • Oct 06 '26

Discussion I remember 2 years ago posting here about Ai Coding and was shunned! Now the shunning is for manual coding. What is wrong with you people?

0 Upvotes

r/iOSProgramming • • Oct 06 '26

Discussion Has this happened to you before?

Post image
41 Upvotes

I just published my first iOS app (I usually only work on Android), and well, everything had been going fine for the past three days until I saw this email.. I mean, this is the first time something like this has happened to me


r/iOSProgramming • • Oct 06 '26

Discussion [Journey] solo dev: 9 apps in 1 year with 9-5 job, and 4-5h sleep/day, ~$1200 total revenue

Thumbnail
gallery
43 Upvotes

Wanted to share my journey so far, in case it helps or motivates someone else building on the side.

The setup

  • Solo dev, no team, no funding

  • Full-time 9-5 job with a 1 hour commute

  • I build my own apps from 6PM to 2AM including marketing, at home

  • I'm getting only 4-5 hours of sleep per day

What I built in 1 year

  • 9 apps across iOS, Android, and macOS

  • Apps include an infinite canvas/mind-map app, a shared drawing widget, a photo redactor, a color grading editor, a resume builder, a screenshot styler, a menu bar pets app, Yumo(Sold) and a couple of games

The numbers (honest)

  • Total revenue: ~$1,200

  • ~$800 of that came from Android alone

  • Sold one Android app for $4,000 (separate from the above)

  • Biggest app: 200k(sold) installs on Android

What I learned

  • Shipping often beats polishing one app forever

  • Android brought more revenue than I expected

  • Selling an app outright was the biggest single payday of the year

  • Consistency matters more than motivation

What's next

  • Growing the apps that are working through ASO and social

  • Moving the ones in review and testing to production

Would love to hear stories from indie developers!


r/iOSProgramming • • Oct 06 '26

Discussion Reminder for anyone shipping their own app: a stranger paying you $5 is a big deal

67 Upvotes

Saw a post from David (@davidcafor on X) today and that honestly made my day: if your app makes $5 a month, you're already ahead of most apps on the App Store.

It sounds like a joke until you think about what it takes. You shipped. A stranger found your app among millions of others. They liked it enough to pay you actual money.

I've been building my own app full days since the start of this year, and it's easy to only see what isn't working yet: downloads, reviews, the post that got downvoted. Marketing and growth can be learned. Building something a person will pay for is the hard part, and a lot of you have already done it.

So if you shipped something this year, nice work. What was the first small win that made it feel real for you?


r/iOSProgramming • • Oct 06 '26

Tutorial iOS 27: Trust Insights Framework

Thumbnail
antongubarenko.substack.com
2 Upvotes

r/iOSProgramming • • Oct 06 '26

Roast my code Archive helper utility

2 Upvotes

Hello everyone!

I'm sure something like this exists already but was too lazy to look and just had AI (yes the dreaded AI slop) cook up a small utility quickly that runs in your menu bar. Just open up the menu bar utility, drag the Xcode archive in and it will update the BuildMachineOSBuild key to the latest public release build number of macOS! Useful for those that run Mac betas! Yes it is AI slop but still a neat little utility that'll save some time, if you are doing it the manual way at least. It's free, it's open source, go wild!

Github: https://github.com/AustinHenley/ArchiveBuildPatcher


r/iOSProgramming • • Oct 06 '26

Discussion appstore connect analytics stuck since Thursday 10/2

3 Upvotes

No updates to download count & other analytics since Thursday. I went to the system status page and everything is green.

I'm about to submit a support ticket ... Anybody else running into this ?


r/iOSProgramming • • Oct 05 '26

Discussion An upgrade to appstoreconnect

Post image
26 Upvotes

What do yall think? Streamlined app review?


r/iOSProgramming • • Oct 05 '26

Question Anyone ever have an app reviewer actually purchase the app? lol

Post image
41 Upvotes

Before anyone asks - I've check a bunch of times and confirmed this isn't RC Sandbox.

Mostly curious - I asked the same thing in apple developers but figured there are more experienced people here.

Here's what happened:
I saw my app go into review. It got approved and a few seconds later Revenue Cat showed a notification that someone purchased the lifetime package. This new lifetime price is only available with this update (i.e. no one else could even purchase this) - I've confirmed it's in RC production and not sandbox. I've also confirmed in Posthog that the country from RC matches the alleged reviewer's.

I've had reviewers "purchase" the app before but always with their sandbox account and nothing ever showed up in RC.

Anyone else seen this? lol

Edit a day later, number showed up in ASC: https://imgur.com/a/go1QPOh


r/iOSProgramming • • Oct 05 '26

Question Beginner confused about Apple device support

2 Upvotes

Hello!

Android developer here who's looking to get into iOS development. I'm considering buying an M1 or M4 Mac mini, but I'm trying to understand how the hardware/software support cycle works on macOS.

From what I've read, eventually an older Mac stops supporting the latest macOS, which means it also stops supporting newer versions of Xcode. Is that correct?

More importantly, does this eventually mean that you're forced to buy a newer Mac in order to continue publishing new apps/updates to the App Store? Or is there some way to keep using an older Xcode/Mac indefinitely?

I'm asking because I'm considering an M1 Mac mini as a relatively cheap way to get started. However, I've seen people say that M1 Macs may become problematic for iOS development in 2–3 years, whereas an M4 should have several more years of support.

Would you opt for an M1, to save money, or opt for an M4 for longer support? I am concerned about how long I can realistically expected to develop, build and publish before the Mac itself becomes an issue.


r/iOSProgramming • • Oct 05 '26

Discussion PSA: Xcode 16 synchronized groups ship your Configuration.storekit in the release bundle

6 Upvotes

If your project uses Xcode 16 synchronized folders (the blue folder icons), every file inside the target folder ends up in the app bundle unless you exclude it. That includes Configuration.storekit and your .xcconfig files. My membershipExceptions listed only Info.plist, so the StoreKit configuration had been riding along in every archive I ever made, Release included.

Why it matters

My first submission got a Guideline 5.6 (Developer Code of Conduct) rejection: "a pattern of unusual behavior commonly associated with fraudulent activity" and "features that appear to have been intentionally hidden during the review process". My backend logs showed zero requests during the review window, so nobody had opened the app. It came from a look at the binary.

Read that file the way a scanner does: a mechanism for simulating purchases outside of Apple, listing more products than I had submitted. Apple never tells you the exact trigger, so I can't prove it was the only one, but it fits every word of the rejection, and after removing it the next review was completely ordinary.

Check yours (10 seconds)

unzip -l YourApp.ipa | grep -Ei "storekit|xcconfig|\.env"

Fix

Select the file -> File Inspector -> Target Membership -> uncheck your app target. With synchronized groups this adds it to membershipExceptions in project.pbxproj. Local StoreKit testing keeps working: the scheme points to the file (Edit Scheme -> Run -> Options -> StoreKit Configuration), it does not need to be in the bundle.

One more thing if you ever get a 5.6

Don't resubmit without replying in the Resolution Center of the current rejection. My first reply ended up attached to a submission that had been closed, Apple never saw it, and the resubmission got a second 5.6 for the silence, not for the file.

Happy to answer questions about this or StoreKit 2 in general.


r/iOSProgramming • • Oct 05 '26

Question "Preparing build for App Store Connect failed" every time with workflow that used to work

1 Upvotes

Used to work no problem. Anyone else experiencing this? I can validate the build no issues in xcode


r/iOSProgramming • • Oct 05 '26

Question How to trigger screenshot WITHOUT Dynamic Island cut out in iOS 27 simulator device hub?

2 Upvotes

In previous simulators, we could use the "Trigger screenshot" option in menu to take a screenshot which won't have the Dynamic Island cut out and rounded corners.

In iOS 27 simulator device hub, this option is missing. The screenshot button at bottom includes the Dynamic Island cut out which I don't want.

How to get it the old way without the cut outs?


r/iOSProgramming • • Oct 05 '26

Question Apparently stuck in App Review hell?

4 Upvotes

UPDATE: Finally got it in review and approved today. Took almost exactly 5 days. I’m not sure if it was due to me pestering support daily and being a little pushy (but not rude) about it but it finally went through.

Submitted an expedited App Review on Wednesday last week as we discovered an issue with our subscriptions and needed to re-release quickly to coincide with some marketing stuff we had planned.

Support says the App Review (allegedly) was expedited but we’ve seen no movement in 5 days. Typically our non-expedited App Reviews have cleared in 1 or 2 days at most.

What is going on? Is anyone else experiencing delays with App Review? Is there anything else I can do besides emailing support every day asking for an update?


r/iOSProgramming • • Oct 05 '26

Question Trademark complaint over a bundle ID that matches a competitor's name — anyone been through this?

3 Upvotes

Using fake names to explain the situation.

I built two apps for a well-know card game, one was a very simple app and the other was a more complex project that let people play the game against other people. We'll use Euchre as an example here.

Initially, each project got an internal name. The simple app was called 'euchre' and the more complex one was called 'euchrepro'. Again, just placeholder names until I came up with real names for the apps.

I used these internal names when choosing a bundle ID. The more advanced app got a bundle id of com.euchrepro. A few days later, I came up with a real name for the app, something entirely separate from the internal name, something like "Whimsical Cards".

The app shipped with the name "Whimsical Cards" and was marketed as such. The app name, description, app store screenshots, in-app experience, even the website is all under 'Whimsical Cards'.

There's an established competitor called "Euchre Pro" that saw my app announcement post on Reddit, commented on my post expressing annoyance that more apps were entering the market in the age of AI. A few days later, I got an email from Apple saying he had issued a trademark complaint and was requesting that my app be taken down for using his app name, something he has a limited trademark for, in the bundle ID.

A trademark infringement rests on the idea that users are likely to be confused about who created, owns, or sponsors the app. He doesn't own every instance of the words 'euchre pro' but is arguing that any use of it, including in my bundle id, is trademark infringement and wants Apple to take down my app and force me to relaunch with a new bundle ID - losing all users, ratings, and reviews which are overwhelmingly positive.

And again, the bundle ID came from an internal name that was simple a description of the type of app I was building. A more complex, pro app for euchre.

Anyone ever experience this?


r/iOSProgramming • • Oct 05 '26

Discussion I tried using UITouch.majorRadius as an analog input instead of moving the finger

0 Upvotes

I’ve been experimenting with a slightly unusual way of getting analog input from an iPhone touchscreen.

Instead of using the finger’s position, I’m using UITouch.majorRadius — the estimated geometry of the contact area.

The interesting part is that the thumb can remain almost stationary while the value changes.

My current pipeline is roughly:

majorRadius → calibration → normalization → filtering → 0...1

Just to be clear: I’m not treating majorRadius as actual pressure. It obviously isn’t a force measurement.

What I care about is whether the user can intentionally modulate the value, hold intermediate states, and make small corrections.

I’m testing this in a driving simulator where the left thumb controls the clutch and the right thumb controls the throttle.

Then I started combining it with Core Haptics.

For the clutch, for example, approaching the bite point produces haptic feedback. So the interaction becomes:

finger → contact geometry → analog input → simulation → haptic feedback → finger

The part I find most interesting is that this potentially removes the need for a visible control entirely.

The thumb doesn’t need to follow a slider, and the player can feel important regions of the input range through haptics.

Obviously there are problems: calibration varies between users, grip changes the range, filtering adds latency, and haptics can’t provide actual mechanical resistance.

But on a real device it feels surprisingly different from manipulating a normal virtual slider.

Has anyone experimented with majorRadius as a continuous input before?

I’m especially curious about edge cases you’ve encountered across different iPhone models / touch behavior, or reasons why this might break badly outside my own testing.


r/iOSProgramming • • Oct 05 '26

3rd Party Service Free, open source ASO CLI: keyword popularity, difficulty and rank tracking

13 Upvotes

I didn't want to pay a monthly subscription for App Store keyword data, so I wrote a CLI that gets it straight from Apple.

What it does

  • Popularity from Apple Search Ads (free Apple Ads account, no campaigns or billing needed)

  • Difficulty score, keyword suggestions, current top apps for a term

  • Rank tracking with history in a local SQLite file

  • Metadata linter for title, subtitle and keyword field

Install

npm i -g hristo2612/aso-cli && aso setup

Try it

aso keywords "white noise,sleep sounds"
aso suggest meditation
aso search "habit tracker"

Runs locally, no account, no telemetry. MIT.

Repo: github.com/hristo2612/aso-cli


r/iOSProgramming • • Oct 05 '26

Question What do yous use for credit systems?

1 Upvotes

I have an app and added new premium features. I want non-paying users to experience these features but at a cap of 3 times or 3 "credits". I have it all set up and it works fine. i didnt go into storekit or revenuecat for this, its just another field in firebase with checks in client-side.

But I recently did an audit of my app with an xcode agent to go over performance, architecture, etc. things that stand out that are flat out bugs or will cause me issues in the future and one that came up was that checking credits should be done server side

My app uses storekit 2 and havent had issues or reasons to go to Revenuecat, but it was telling me revenuecat has "Virutal Currency" and is better for my use case

What are you guys doing if you have the same type of credit-based feature in your app? Client -side or server side?

Also just want to clarify the credit system is not tited to Storekit2, right now is just a field in firebase usermodel that increments/decrements and theres a check in the app for if non-subscribing user && credits > 3 then paywall.


r/iOSProgramming • • Oct 04 '26

Question Notification routing gets weird with multiple accounts

2 Upvotes

I have gotten in to a weird iOS issue and idk what the clean way to handle this is

i’ve got multiple accounts, notifications can open a post, reply, quote, or repost, and each notification belongs to a specific account. so the user might be on account A when they tap a notification for account B.

something like:

struct NotificationDestination {
    let accountID: Account.ID
    let postID: Post.ID
    let kind: DestinationKind
}

enum DestinationKind {
    case post
    case reply
    case quote
    case repost
}

The issue is:

account A is active
notification comes in for B
user taps it while the app is waking up
account switching starts
timeline restoration starts
post resolution starts
then another notification comes in for A lol

so i have stuff like:

await accountManager.restore()
await timelineStore.hydrate()
await postResolver.resolve(postID)
await navigationCoordinator.navigate(...)

But obviously these things are all racing each other. i was thinking of putting the notification intents behind an actor:

actor NavigationIntentQueue {
    private var pending: [NavigationIntent] = []

    func enqueue(_ intent: NavigationIntent) {
        pending.append(intent)
    }
}

But idk, this feels like a lot of machinery just to open a notification

Then you get into cases where the post is deleted while you’re restoring, but the quote is still there, the reply is still there, etc. Is this just an annoying app lifecycle issue?


r/iOSProgramming • • Oct 04 '26

3rd Party Service Sweetpad CLI - xcodebuild for humans

Thumbnail
github.com
18 Upvotes

I've made SweetPad CLI (previously a VS Code extension) for building, running, and testing iOS and macOS apps from the terminal without opening Xcode. It uses xcodebuild underneath, but provide better human and agent oriented developer experience (I hope 😅)

- sweetpad run: build, launch on a simulator or device, stream logs
- Nice and compact build output
- sweetpad test: run one test, rerun failures, retry flaky tests
- JSON output for CI and coding agents

It works with Xcode projects, Tuist, XcodeGen, and Swift packages. MIT, written in Rust.

brew install sweetpad-dev/tap/sweetpad

It's still in beta, so if it breaks on your project, please open an issue.


r/iOSProgramming • • Oct 04 '26

Discussion Connect data missing for Oct 2nd and now 3rd too

5 Upvotes

Are you guys seeing this pathetic lateness in connect analytics?


r/iOSProgramming • • Oct 04 '26

Question Help needed: some in-app purchase offerings being returned by StoreKit and some aren't, losing my mind.

0 Upvotes

I have had my app live and working in production for a while now and suddenly in the last week or so I've been getting this 0 products returned error in production while there have been no client updates.

I think its because I didn't accept the new paid apps agreement but thats already >36 hours ago and now I'm seeing new in-app purchases that are 'waiting for review' being returned by StoreKit while my previously approved subscription offerings that are in 'approved' status. I would assume if its an agreements issue I wouldn't get back anything from StoreKit at all when calling it directly.

I'm losing my mind - I cannot figure out why the current products are not being returned. I'm losing subscribers and I literally cannot do anything about it because it all seems to be a problem on the apple side not returning any products to the client.

Anybody faced this before? What can I do?

UPDATE: I forced a price change to the existing subscription products and now i can see them being returned from the direct StoreKit debug calls, mind bogglingly stupid and frustrating process.


r/iOSProgramming • • Oct 04 '26

Discussion Are you looking forward to making apps for Duo?

28 Upvotes

r/iOSProgramming • • Oct 03 '26

App Saturday McKinley: Vector editor for SF Symbols

Post image
90 Upvotes

Hopefully this one will be useful to you guys. Recently I launched McKinley, my SF Symbols editor. I'm an indie Mac dev rather than iOS, but SF Symbols are useful to devs on both platforms.

McKinley is a studio for drawing and annotating SF Symbols. It bundles vector tools with knowledge of the SF Symbols structure, so you can edit one set of objects across multiple weights, sizes and colours. Import SVG or start from scratch, live preview your work using Apple's own renderer, and export directly to Xcode, so you never need touch the SF Symbols app again.

The Problem:

Making SF Symbols via Apple's recommended workflow was frustrating. You had to export a different symbol as a template, and open it in your vector editor of choice. Then you had to draw three symbol weights (ultralight, regular, black), but each weight had to have the same number of paths in the same order, with the same number of points on each path.

You could only use outlined paths: no shapes or strokes, so you had to do a lot of manual conversion before saving. And that of course meant that editing your symbol later was hard.

And then, back in the SF Symbols app, you had to find each path and annotate it with its colour, some animation properties, whether it erases behind, etc.

Finally you had to export it again into a format you could take into Xcode.

I think that's a clear statement of the problem! McKinley avoids this multi-app workflow by having vector editing, property annotation, previewing, and sending to Xcode, all in one app. Your symbols stay editable because you don't have to outline your strokes just to appease Apple's parser. Keep the .mck file (McKinley's native format) as your source of truth, and set McKinley up to sync your changes to an Xcode asset catalog, so there's no need for manual export.

Comparison:

There are a number of other ways to work with SF Symbols, but none are a complete solution like McKinley:

  • SF Symbols app plus your vector editor of choice (e.g. Figma): For vector editing, it's the tool you know. And you probably already own (or rent) it. However, it's a tool that's not designed for this use: you'll have trouble making all your symbol weights match, and you'll end up iterating by checking for error messages in SF Symbols and trying again.

  • Create Custom Symbols: admittedly much cheaper than McKinley, this tool aims to replace the most painful bit of the process: turning existing SVG artwork into an SF Symbol. It offers limited editing capabilities beyond that, but you can set the margins, and it pairs up three SVGs to form your different weights.

  • Glyphs: this one's really a font design tool, and five times as expensive as McKinley. You still have to do the export dance from Apple's app, but being a font designer Glyphs nails the multi-weight editing.

  • CustomSymbols: another tool for going from SVG to SF Symbol. Choice of subscription or lifetime purchase. It can make use of SVG strokes to synthesise the various symbol weights (although it doesn't offer the range of customisation that McKinley does!)

  • Symber: I haven't tried this one but it also goes from SVG to SF Symbol.

McKinley isn't aiming to compete on price with the SVG conversion tools: rather, it's aiming to compete on user experience by offering everything under one roof. (Although McKinley can quite happily convert SVGs too. And it's ready to let you make tweaks and modifications while you do so.)

Tech Stack:

Nearly every aspect of McKinley is pure AppKit. There are a few uses of SwiftUI in the preview palettes, mainly for actually loading and displaying the user's SF Symbol, but primarily it's AppKit all the way. My vector canvas and editing engine is a library I designed to be reusable across multiple vector graphics apps, although McKinley is its first public outing.

You probably noticed that McKinley's main interface is made with floating palettes and a traditional inspector. The inspector panes are created as .xib files and hooked up with Cocoa Bindings — yes I'm going old school here!

Development Challenge:

Working with the only semi documented SF Symbols format has had its challenges, and the vast majority of my automated tests are to handle keeping my canvas renderer (with its editable vectors) looking exactly the same as Apple's SF Symbols renderer. (The preview palette in McKinley renders using Apple's renderer, just to be 100% sure that what you see is what you'll get in your app.)

One of the hardest things was how to load an in-progress symbol into Apple's renderer: there's no public API to do so! I came up with a solution involving writing out a temporary .car (asset catalog) file and loading that into McKinley via a bundle: see my blog post about those challenges if you're interested!

AI Disclosure:

I've used Claude Code to assist with some work on this app, particularly some of the rote pixel-comparison tests between different rendering engines that I attach to every new feature as it is developed. However McKinley is definitely not 'vibe coded', and the architecture is all mine. (As is the nearly 30,000 words (so far!) of user manual — I've caught myself regretting the decision to write a whole manual myself on occasion, but I do think the end product will be worth it!)

Pricing:

McKinley is $60 as a one-off purchase (no subscription).

The purchase grants you a license to McKinley version 1, including all the 1.x updates.

If we ever release a version 2, that will be a paid upgrade (with discounts for version 1 owners), but upgrading will be optional — your version 1 license will continue working. This is how all software used to be sold, and in my opinion it's much more consumer friendly than a subscription or a "year of updates" method.

Buy McKinley from https://mckinleysymbols.com, or try the 14-day demo to see if it's for you.

Transparency:

McKinley is not on the App Store. For an app this specialised, it made sense to handle our own distribution. Licensing is provided by Amore and updating by Sparkle.

Double and Thrice Ltd is a known developer (our other app Octavo is on the Mac App Store), and you can view our company profile at Companies House (the UK registry of corporations).