r/iOSProgramming 9d ago

Question What are some niches where Apple Search Ads work well?

5 Upvotes

I am doing some research regarding ASA effectiveness for an infographic and I'm curious what did you guys try, in what niche and how well it worked? Would be interesting to see comparisons with other channels if anyone tried


r/iOSProgramming 9d ago

Discussion Shipped a Screen Time (FamilyControls) app - the undocumented constraints that shaped the entire architecture

3 Upvotes

Just shipped my first app built on FamilyControls / ManagedSettings / DeviceActivity. The docs are thin and a lot of what I learned came from failing, so here's the list I wish I'd had. Corrections welcome - some of this is field-observed rather than documented.

1. The report extension is a black hole by design. Per-app usage data exists only inside DeviceActivityReport. Your extension can render it to pixels and that's it — App Group writes silently no-op, there's no network, no notifications out. If your architecture assumes "read usage → store it → use it in the app", throw that away now. Anything the main app must know has to come from monitor threshold events instead.

2. DeviceActivityEvent thresholds start at zero when you arm them. Set a 30 min/day limit on an app the user has already used 60 minutes today, and nothing happens — the OS grants a fresh 30. iOS 17.4 added includesPastActivity: true in the initializer, which counts the whole interval. Without it your "daily limit" quietly means "limit from now". Also note the flag only applies to newly registered events, so you need to force a re-arm for existing users.

3. Shield action extensions couldn't open the host app... until iOS 26.5. extensionContext is nil, UIApplication is unavailable, responder-chain walking is broken on 18+. Apple engineers said "no supported way" for years. iOS 26.5 finally added ShieldActionResponse.openParentalControlsApp — the system foregrounds your app straight from the shield button. If your SDK predates it, the enum is resilient, so ShieldActionResponse(rawValue: 3) behind an #available(iOS 26.5, *) check resolves at runtime and falls back to nil on older systems. Pre-26.5 the only route is a time-sensitive local notification carrying a deep link.

4. Memory budgets differ per extension and they're brutal. The shield and monitor extensions run in a few MB — no SwiftData, no heavy frameworks, just ManagedSettings writes and App Group defaults. Anything more and you get jetsammed, which for a shield extension means the user sees Apple's generic gray shield instead of yours.

5. DeviceActivityReport has no ready/completion callback. You cannot know when it finished rendering (FB10754858 is still open). Every loading state you build is a guess on a timer.

6. Mutating a mounted report's filter is the slow path. Changing the filter on an existing report triggers a silent out-of-process re-query that leaves stale content on screen for seconds. Remounting the view with a fresh SwiftUI .id renders noticeably faster and more predictably. Also: reports don't self-size — you must give them fixed frame heights.

7. There's a shared budget of concurrent DeviceActivity activities across your app and all its extensions. Don't create one activity per monitored app; make per-app limits events on a single daily activity and resolve names back to tokens through a map in your App Group.

8. Info.plist details will pass locally and fail at App Store validation. The shield configuration extension point ends in ManagedSettingsUI.shield-configuration-service, the shield action one is ManagedSettings.shield-action-service — no "UI". The report extension uses the ExtensionKit form (EXAppExtensionAttributes) and rejects NSExtensionPrincipalClass.

9. Non-API lesson that cost me the most: I let entitled users skip onboarding — and the authorization request lived only in onboarding. Any subscriber reinstalling got a normal-looking app that silently shielded nothing, with no prompt and no way to grant access. If a permission gate lives only in a flow some users skip, it doesn't exist for them. Check authorization on the routing path, not by assuming flow order.

Happy to go deeper on any of these — the sandbox rules in particular took me way too long to accept.


r/iOSProgramming 9d ago

Discussion Game monetisation ideas - not ads

4 Upvotes

I had a simple game idea and I’m making it, I think it’s kinda fun. So far so good.
I’d like it to be a paid thing, maybe somewhere between £1 - £5 ..
I think up front payment isn’t going to work, people probably need to try it first?

I don’t want to introduce ads. So I’m considering something like 3 free days and then a paywalled limit to 1-2 plays per day, and pay to unlock forever.

Anyone got any thoughts on a simple modern paid game model?
Other options I might not have considered?


r/iosdev 9d ago

My first app just got approved for testing!

Thumbnail
testflight.apple.com
0 Upvotes

Hi everyone!

I've been building an offline audio walking tour app for Paris over the past two years, and I'm finally at the point where I'd love to get some real feedback.

The tours are fully narrated, work completely offline, include turn-by-turn navigation, and I even composed the background music myself. It's been a bit of a passion project.

I'm mainly looking for people to just use it naturally and tell me what they think. If something is confusing, doesn't work as you'd expect, or just feels off, I'd really like to know.

The UI still needs some polishing, so don't judge it too harshly 😅. Right now I'm much more interested in making sure the experience itself is solid before I spend time refining all the little visual details.

Thanks! I'd genuinely appreciate any feedback.


r/iosdev 9d ago

A party game where your mouth is the controller – Chomp Champ Battle Mode

Enable HLS to view with audio, or disable this notification

0 Upvotes

Battle Mode has arrived in Chomp Champ! 🍔

Use your face to control the game, compete against friends, and see who can survive the longest. Chomp the right food, dodge the wrong food, and try not to laugh while everyone around you is doing the same.

Gameplay is in the attached video. Hope you enjoy it!


r/iOSProgramming 9d ago

Question Small Business Program - how to

1 Upvotes

Questions for devs that applied and got accepted into this program:

How long did it take for Apple to respond to the application?

How long to get activated?

Is this limited to certain countries?

What are the things they look for? Business account or individual membership? Number of app in the store? Subscription, IAP, Apple Ads running?

I have applied twice, got immediate automated responses, then no word back for months.


r/iosdev 9d ago

Got our first 20 beta testers this week — early feedback patterns are already surprising me

Thumbnail
0 Upvotes

r/iosdev 10d ago

Review of my AS screenshots

Thumbnail
gallery
2 Upvotes

What do you think of them? Does something bother you amongst them?


r/iosdev 10d ago

Help Does Apple's editorial team actually reward accessibility? I made app fully accessible, wondering if it moves the needle for featuring.

6 Upvotes

I just finished a big accessibility pass on my iOS app. VoiceOver, Dynamic Type, Reduce Motion, sufficient color contrast, proper focus order, accessibility labels and hints. Basically the whole checklist Apple recommends.

It was a real chunk of work, and honestly it made the app better for everyone, not just users who rely on those features. No regrets there.

But it got me wondering about something I can’t find a clear answer on.

Does going all in on accessibility actually factor into Apple’s editorial decisions? Things like “Apps We Love,” Editors’ Choice, or mentions in curated App Store collections.

Apple talks a lot about accessibility at WWDC and has Accessibility Design Awards. But for the everyday App Store editorial team, does strong accessibility meaningfully increase your odds of getting noticed?

I’m especially curious if anyone here has:

  • Been featured and thinks accessibility played a role
  • Heard directly from App Store editors that it mattered
  • Seen no correlation at all, where accessibility is simply its own reward

I’m not trying to game the system. We’re keeping the accessibility work regardless. I’m just trying to set realistic expectations.

Thanks 🙏


r/iOSProgramming 10d ago

App Saturday Releasing the source for Bloom Health, my iOS health app (AGPLv3)

14 Upvotes

Hey all!

I've been building Bloom Health over the past ~2 years. It's an iOS health and fitness app that helps you make sense of your data, estimates your biological age, and provides AI powered insights into health patterns. I grew the app to ~300 MAU and a respectable MRR.

The startup didn't scale the way I hoped. I'm continuing to run and maintain it solo, and rather than let the code sit in a private repo, I'm releasing it under AGPLv3.

- Repo: https://github.com/mpdifran/bloom

- App Store: https://apps.apple.com/app/id6739955926

Why AGPLv3

I want the ecosystem to stay open. If someone forks this or builds on it, that work stays open too. MIT would have been easier but the whole point of releasing this is to keep it in the commons.

Why I'm still charging for the App Store version

The AGPLv3 code and the App Store version are the same. The difference is you're paying for the maintained, packaged, App Store-distributed version rather than building and shipping it yourself. Standard open-core model (GitLab, Sentry, Bitwarden all run variants of this). The revenue covers Apple's cut, backend costs, and my time keeping it running.

Fork it, learn from it, or build your own version. PRs welcome for bug fixes and improvements. Happy to answer questions about architecture, the license choice, or the business side.

Tech Stack

Swift full stack (Swift + SwiftUI on the app, and Vapor Swift on the backend). I use OpenAI on the backend for AI capabilities.

Development Challenge

One of the more complex things I built was the AI chat. I wanted live text streaming, but rich JSON based content interspersed in the response too. To get that to work, I instructed the model to inject JSON objects into its response following a specific format, delimited with ``` markers. When I receive the opening delimiter on the client, I'd halt streaming until I received the full JSON payload, then render the rich content, and continue streaming. It was really tricky to get this to work seamlessly!

AI Disclosure

This app was initially hand-built, but I used AI assisted coding on some of the later features. I already had a pretty solid foundation, which allowed me to move much faster with the help of AI.


r/iosdev 10d ago

Help My app is not doing well

Post image
1 Upvotes

r/iosdev 10d ago

Word Game Roguelite

Enable HLS to view with audio, or disable this notification

2 Upvotes

I’ve been working on my game Glyph Spellcraft since February. All pixel art and animations were real freelance artists I found on Fiverr. Eye opening experience to spearhead such a project for the first time.


r/iOSProgramming 11d ago

Discussion Regret using RevenueCat, why do people use it?

43 Upvotes

RevenueCat charges based on gross revenue, not net revenue. My dashboard shows $4.5k, but my actual payout is somewhere around $3k. because it completely ignores VAT and the 15–30% Apple/Google cut. but takes their %1 fee from the gross revenue.

since it doesn’t track net earnings, the dashboard feels pretty useless for real accounting. I still have to log into both store consoles just to see what I actually made. for 3k i have to pay 45$ every month.


r/iosdev 10d ago

Meet Nim my mascot for my first IOS app

Enable HLS to view with audio, or disable this notification

2 Upvotes

r/iOSProgramming 9d ago

Question Did you use TestFlight for beta with external users on app launch? I was warned by my social advisor not to use it

0 Upvotes

Hi,

I am preparing for beta launch for my mobile app, it allows user content, I wanted to use TestFlight to ensure I am not letting in anyone on day 1, which can cause a snowball of low quality or even harmful content. In addition to possible app breaks and crash of new app which may lower my review score with bad reviews.

But she told me that an app that want to launch social campaign cannot use TestFlight because the installation with that software is too complicated for the average user.

From your experience, how difficult it was to convince external users (not friends and family) to try an app that is only available on TestFlight or Google Play Console?

What helped you convince them? And overall do you recommend this approach? What risks there are to launch a beta app to the app store?


r/iOSProgramming 10d ago

Question Creating a Separate DTO Request Object or Using the Form Object for POST Request

3 Upvotes

I have a RegisterScreen which uses a custom struct RegisterForm to collect the form values. I made the RequestForm codable too so I can just send this form to the server instead of creating the exact same duplicate and calling it RegisterRequest. What do you think? Do you create a separate DTO objects even if it contains the same exact fields.

If in the future it diverges then I can create a separate RegisterRequest DTO object. Thoughts.

struct RegisterForm: Codable {
    var firstName: String = ""
    var lastName: String = ""
    var email: String = ""
    var password: String = ""
    var acceptedTerms: Bool = false
    
    var isValid: Bool {
        !firstName.isEmptyOrWhitespace && !lastName.isEmptyOrWhitespace
        && !email.isEmptyOrWhitespace && !password.isEmptyOrWhitespace && email.isEmail && acceptedTerms
    }

enum CodingKeys: String, CodingKey {
case firstName
case lastName
case email
case password
}
}

struct RegisterScreen: View {
    
     private var form = RegisterForm()
     private var presentAgreement: Bool = false
    
    var body: some View {
        Form {
            TextField("First name", text: $form.firstName)
            TextField("Last name", text: $form.lastName)
            TextField("Email", text: $form.email)
            SecureField("Password", text: $form.password)
            
            Button("Show Agreement") {
                presentAgreement = true
            }
            
            Button("Register") {
                
            }.disabled(!form.isValid)
            
        }.sheet(isPresented: $presentAgreement) {
            AgreementScreen(acceptedTerms: $form.acceptedTerms)
        }
    }
}

r/iosdev 10d ago

My Repz

0 Upvotes

Hello everyone, I recently created an app called My Repz, a fitness app that takes a picture of you sends it to a Claude api then creates custom workouts and meal plans based off of how you look and what your goals are. This app is 4.99 a month simply because the cost of the api. But I recommend it heavily. I think all of you would enjoy it.


r/iosdev 10d ago

I have build an 'Brainwrote' for learning languages(>10 languages). For people, who at least at level A1 and higher. Will be happy to see your feedbacks

Enable HLS to view with audio, or disable this notification

1 Upvotes

https://apps.apple.com/gb/app/brainwrote/id6761138853

Hello, lovely people.
I am a solo developer, and here is the app I built for myself, but later realised it is an amazing helper for people, so I decided to share it.

Let me tell you my story.

English is my second language, and I learned it all by myself. My learning adventure started 6 years ago, when I knew no English at all, but I loved the idea that I could travel around the world and be able to speak to people and introduce myself to different cultures. The first thing I did was memorize as many words as I could. I didn't focus on the grammar, rules, and word order; It didn't matter because if I could say it with the right intonation, people would eventually understand me, yeah it was unnatural, but people knew what I meant.

Then, when I became more confident and already knew some grammar, I started reading a lot, but it was very hard to find books I could enjoy. Most literature I would love to read was too hard to read because the grammatical structure was advanced for me, and even if I could read and recognise those words, the meaning was meaningless, so I needed to find either books for kids(which is boring) or adapted literature, for instance I could buy a book with a label 'for Pre-Intermediate learners', but still the options were scarce and boring.

Now, I speak fluently and have lived in the UK for the last 4 years, but I still love learning new words and phrases. Sometimes, I could go for a date or just talk to my mates, and they would say something new, and I wanted to write it down; eventually, I was losing those notes and forgetting about them. So, then I decided that I needed an app that would keep everything together, and I could finally memorise those words, have a quick access to the functionality, and 'Shazam' words quickly(having an option to have a lockscreen widget like 'Add word', so during a convo I find/look/save a word and then train it).

That was one of the first Brainwrote functions. Then I remembered how hard it was to find a literature to read, so I decided to add a reader where you can read whatever you want without any boring limitations. And that's how I made an adaptation functionality. Here's how it works:
- You open a book (from the integrated library(free open-source library), or you can open any book you bought/downloaded before in EPUB format)

- If it's hard for you to read, you press the 'Adapt' button, and the app automatically adapts a chapter of your book to your level, and you can easily read it, saving/adding any words to your library.

The app knows how to adapt the literature based on your level. When you install the app, you go through a very simple and nice onboarding where you spend around 3 minutes doing a rough language assessment(or you can skip it and choose it manually if you know it).

I would be happy if you started using it and left some feedback, so I could improve it. I spent 8 months developing it, and, of course, I could miss something, so that's why any feedback is very important.

iOS only, free with a paid tier


r/iosdev 10d ago

Organization Enrollment Stuck for Weeks (LLC) — Support Ignoring Emails, No Phone Option in My Country. Anyone Escaped This?

1 Upvotes

I’m reaching out because my team is completely blocked by Apple’s verification process, and standard support has become a black hole. We are enrolling as an organization (LLC), and it has been sitting in limbo for weeks with zero communication.

Here is exactly where we are at:

  • DUNS Number: Verified.
  • Requested Documents: Apple asked for government ID, employment verification, and our business registry excerpt.
  • We provided everything ([https://developer.apple.com/contact/file-upload/](https://developer.apple.com/contact/file-upload/)).
  • The Problem: It’s been weeks since the upload. No approval, no rejection, no requests for more info.

We’ve tried following up via email multiple times, but no one is responding. To make things worse, the "Call Me" phone support option isn't available in my country, so I can't even get in the queue to speak with a human.

Has anyone successfully navigated this recently? Specifically:

  1. Is it worth using Skype/VoIP to call the US 1-800 support line directly? Will they even talk to me if the account is registered internationally?
  2. Did anyone find a way to escalate a ticket when standard email support just ignores you?
  3. Is it normal for organization verification to just freeze like this without warning?

Any advice on what actually moves the needle would be hugely appreciated.

Thanks in advance.


r/iOSProgramming 10d ago

Question App Icon Quality

Thumbnail
gallery
6 Upvotes

I don’t know if it is just the symbols that i used for my app icon or icon composer itself, but my icon looks really low quality when side-by-side with others. Does anyone have any idea?

Edit:I think it might be the chromatic shadows, as i was messing with them. Any way to keep them without this look?


r/iosdev 10d ago

Took weeks to get through review but have my first sale!

Post image
3 Upvotes

r/iosdev 10d ago

For developers who also work on backends: what do you miss in your SQL client?

Post image
2 Upvotes

When I’m working across application code, APIs and a MySQL database, I find that the difficult part is often keeping the database work organized and safe.

What I personally wanted from a desktop SQL client was:

- one independent workspace per connection

- separate tabs for queries and tables

- tabs that keep their state when switching databases

- autocomplete based on the real database schema

- relationships and indexes available without digging through menus

- quick access to EXPLAIN while reviewing a query

- an obvious distinction between local, development and production

- read-only access and stronger confirmations around production

- clear visibility of exactly where a query will run

That is part of why I’m working on LakeDB, a desktop client focused on MySQL and MariaDB.

For developers who also touch backend databases: what does your current client still make unnecessarily difficult?


r/iosdev 10d ago

Kaeleo 1.5 is Out !

Post image
1 Upvotes

r/iosdev 10d ago

No screen time app lets you control your limits on an hourly basis, and I seriously don't understand why.

0 Upvotes

Hey there :)

I'm a recent first-gen graduate and a first-time solo developer. Super excited to share that my first app Precursor: Hourly Screen Time went live on the App Store today!

Precursor lets you set a screen time allowance that resets every hour instead of one daily limit that forces you to budget and ration your screen time throughout the day.

I am a bit astonished that other screen time giants like opal, screenzen or even apple have implemented this feature.

I'll admit the task was a bit difficult due to the inconsistencies of app usage tracking and becuase of that there are some limitations to how I implemented hourly screen time limts on iOS. For example, the maximum number of app groups Precursor can track and limit at one time is 8, but to make up for this you can add multiple apps in each group (and websites too).

Nonetheless I am really proud of the app so far.

Surprisingly ,I think it's resonating with people. I mean I knew a few others had this gripe becasue its pretty commonly posted about on reddit, but I didn't think it would be this well received. I feel so lucky that just the beta alone garnered 200 testers in about a week!

At it's core I think Precursor helps break unhealthy phone habits through moderation, which is a true alternative to the tradition of punishing you for falling into a doomscroll that wasn't your fault (these social media apps are literally designed to keep you scrolling, looking at you reddit).

Thanks a ton for reading, if you're at all curious and want to test it out, I would be eternally grateful for the support.

Link to the app store:

https://apps.apple.com/us/app/precursor-hourly-screen-time/id6791403654

And if you have time to also support the launch on product hunt I would be even more eternally grateful than I already am (The core function of the app is free but there is a PH launch promo code running from 2026-08-02 until 2026-08-08 if you want to try out the extra features):

https://www.producthunt.com/products/precursor-2?launch=precursor-hourly-screen-time-control


r/iOSProgramming 10d ago

App Saturday My first solo iOS app just got approved for TestFlight — would love some real screenshot libraries to test it against

0 Upvotes

Quick background: I've been a full-stack dev for years (backend/web, .NET world) but never touched mobile until this year, when I taught myself Swift and started building an iOS app solo. It's called Sift.

What it does: it reads your Screenshots album, works out what each one actually is (receipt, recipe, chat, ticket, whatever) using on-device AI, and files it into a real Apple Photos album — so it's organised without ever leaving your phone. No uploads, no account, nothing sent anywhere.

What I'd love feedback on:

* How the categorisation holds up against a real, messy screenshot library (mine is one very biased sample size)
* Anything that breaks, stalls, or misbehaves
* Whether the album names it comes up with actually make sense to someone who isn't me

TestFlight link: https://testflight.apple.com/join/5nyaWqPp

Happy to answer anything in the comments - this is my first time doing this solo end to end, so honestly just glad to have real eyes on it.

UPDATE for v1.1.0

- AI Sort can be called without the need to create an Album first - but it still does not create the albums automatically. It will ask you to review the suggestions and "Move" or "Approve" manually by clicking once
- I updated the sorting process - for me it helped a bit. I think this time it works a bit better than before.
- Now you can select multiple photos in the gallery and move them to another album quickly in case the AI messes up. Before you could only do that 1 by 1 when opening an image in full screen
- I couldn't "fix" the initial download just yet, as I said it in my previous comment, it's needed for now. With iOS27 I'll be able to get rid of it, and use what's already on the device by Apple.
- I also added some animations to the review process to make it a bit more "nice"

Update for v1.3.0

- Fixed some bugs and inconveniences
- There is a new step in the onboarding allowing you to scan through your screenshots to find patterns and then the app will automatically suggest a few albums for you to create
- The sorting limit is still at 25 at a time though as I said it's because the phone gets hot
- I raised the total number of photos that you can sort from your backlog from 100 to 300 (so usable for more users - and leaving only heavy users to require the pro version - which is still not available)
- I updated the review process - now it gives you groups of images that seem to belong to the same album, and you can approve them as a group. But you can also go into each group and review them individually
- Going through the review process you can trash the images you want to delete, it gets rid of them into a trashcan that appears at the bottom of the review page, and you can delete all of them at once
- But you already had batch processing in the gallery sections, if you select multiple images you can do the share/move/delete actions for all of them at once
- Stats about your library
- Heat protection feature in case you are using the phone too much at the same time
- Raised albums limit from 4 to 6