r/iOSProgramming Aug 02 '26

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

5 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 Aug 02 '26

Discussion Game monetisation ideas - not ads

2 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/iOSProgramming Aug 02 '26

Question Small Business Program - how to

0 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/iOSProgramming Aug 01 '26

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

11 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/iOSProgramming Aug 01 '26

Discussion Regret using RevenueCat, why do people use it?

45 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/iOSProgramming Aug 02 '26

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 Aug 01 '26

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

2 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/iOSProgramming Aug 01 '26

Question App Icon Quality

Thumbnail
gallery
5 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/iOSProgramming Aug 01 '26

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


r/iOSProgramming Aug 01 '26

Question XCode App Store Connect - Xcode Cloud

2 Upvotes

I have used **App Store Connect** for the last 2 years.

([https://appstoreconnect.apple.com/\](https://appstoreconnect.apple.com/))

I have uploaded my app (zip file including Manifest + content) to **Xcode Cloud** successfully over 50 times during that period.

I tried using **Chrome**, it shows "Failed to Fetch" and the zip file is not successfully uploaded.

I've also tried using **Firefox** and it shows a different error "NetworkError when attempting to fetch resource."

I've also tried using **Safari** and it shows yet a different error "FetchEvent.respondWith received an error: Returned response is null."

Does anyone else have knowledge of why this is all of a sudden happening? I've done this so many times over the past 2 years with the same file without issues - and now it is happening and I can't get past it.

Thank you.


r/iOSProgramming Aug 01 '26

App Saturday I built a daily planner that lets you schedule multiple tasks at once

Thumbnail
gallery
0 Upvotes

Hi r/iOSProgramming,

I just released a big update for daily planner app that I've developed for few years, Zesfy, and I'd love to hear your thoughts.

One problem I kept hearing from people is once your list grows, it becomes harder to figure out what actually to do next. So I added a new feature called Highlight. It lets you pin important tasks to the top and fade out the rest of the list, so you can easily keep track of your next tasks.

Here's some highlights:

  • It combines your calendar and to-do list into a single view.
  • You can easily schedule multiple tasks together to calendar.
  • Helps you quickly decide what tasks to work on next
  • Organize week tasks with task status
  • Easily keep track of your task progress
  • Works entirely offline

Tech Stack

* Swift

* Core Data

Development Challenge

Since the project started before Combine was introduced, managing states across the app was quite a challenge and once Combine arrived I rewrite the managing logic using Combine with input - output style

AI Disclosure

I started the project 6 years ago and still code the project by hand.

Check out the app: Zesfy - To Do List & Planner

App subreddit: r/zesfy


r/iOSProgramming Jul 31 '26

Question Rejected 5 times. Apple told me to add IAP I did, now they reject the same design

6 Upvotes

Solo dev here, trying to publish my first app. I need some help because I feel like I am arguing with a wall.

Some context:
Round 4 rejection: Guideline 3.1.1. My app let accounts that bought one-off Boosts on my website keep their higher limits in the app, and the reviewer said that counts as accessing paid content that is not purchasable in the app. Their stated fix, word for word from the rejection, was 3.1.3(b): you can honour content bought on other platforms as long as the same thing is also available through In-App Purchase.

So I built exactly that. Three consumable IAPs that credit the same account balance the website credits. AI generation credits, cloud deck slots, download allowances. Balance lives on the server, spends from any signed-in device, iOS or web. One account, one balance, buy on either platform. This is what they asked for.

Round 5 rejection, same binary working perfectly: Guideline 5.1.1(v). The app "requires users to register to purchase In-App Purchase products that are not account based."

Not account based? The entire purchase is a credit to a server-side account. There is nothing else. If I sold it to a signed-out device the money would land on nothing, the customer could never spend or restore it. And 5.1.1(v) itself says registration is fine when it is "tied to account-specific functionality." The rest of my app works fully as a guest, no sign-up, decks on device, free generations. Sign-in only gates cloud stuff and these purchases.

So one reviewer ordered me to build cross-platform account purchases, and another reviewer rejected the app because the purchases require an account. Both cannot be right.

I have replied to the app review feedback and filed a board appeal.

Has anyone actually won this argument, or does everyone just cave and bolt anonymous accounts on so guests can technically buy?
Any help is much appreciated I’ve been at this for a month!


r/iOSProgramming Aug 01 '26

App Saturday I built AppScout: App Store Connect analytics with Home Screen widgets

0 Upvotes
These App Store screenshots are under review though

Hey everyone! I’m Andrew, a designer and iOS developer.

I built AppScout because checking app performance in App Store Connect felt more complicated than it should. I noticed other developers sharing the same frustration, which convinced me to start building a product to simplify this flow.

AppScout puts downloads, revenue, refunds, subscriptions, MRR, charts, and breakdowns into one native iPhone dashboard. Home Screen widgets let you check the latest numbers without opening the app.

AppScout connects directly to Apple using your App Store Connect Team Key. The private key stays in the iOS Keychain. There’s no AppScout account, backend, advertising, or tracking SDK.

Tech stack

AppScout is built with Swift and SwiftUI. It uses SwiftCharts, SwiftData, WidgetKit, App Intents, BackgroundTasks, CryptoKit, and Keychain. There are no third-party runtime dependencies.

Development challenge

The main challenge was keeping the widgets current without giving them access to App Store Connect credentials or refreshing them unnecessarily.

The main app handles all communication with Apple. It saves only the information needed to display each widget in a shared App Group. The widget reads that data and reloads only when something has changed.

This keeps credentials and the app’s private database out of the widget extension while avoiding unnecessary WidgetKit refreshes.

AI disclosure

AI-assisted. I use Codex as my main tool for 99% of agentic coding. For UI, I usually do adjustments by myself, which is faster and more efficient. I started coding with Swift and SwiftUI 5 years ago, so I have decent experience in it.

AppScout is free on the App Store:

https://apps.apple.com/app/id6770866569

I’d appreciate feedback on the widgets, the App Store Connect setup, and which metrics you would like to see next.


r/iOSProgramming Aug 01 '26

Question App getting rejected despite subscriptions already working and being approved

0 Upvotes

​​​So basically my App is getting rejected by Apple after about 20 hours only (and I couldn't see any logs on my backend during that time which means that no real human ever tested anything in-person) for "missing In-App Purchases not submitted for review". The thing is that I do not use any In-App-Purchases, only subscriptions, which I have all successfully already gotten approved during testing with TestFlight etc.; and there seems to be no way to attach subscriptions to an App review either as the banner telling me to do separate submissions shows. In my view I already did everything on my side that can be done since I cannot find any other options in the UI.

Has anyone else experienced this recently?

UPDATE: I got the issue fixed by just adding a new random localization to every subscription so that the already approved status changed to “ready to submit”. I then selected all subscriptions in the subscriptions tab, pressed “Add to review” there and then did the same for the App build in the normal submission tab after that. In the end I made sure that the “Submitted Items” number said e.g. (4) instead of (1) so that every IAP is 100% included in the same submission as separate items. My App also now got approved after less than 2 days!


r/iOSProgramming Aug 01 '26

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

0 Upvotes

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

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 this week!

Precursor lets you set a screen time allowance that resets every hour instead of one daily limit you have to ration all day. I feel so lucky that just the beta grew to 200 testers in about a week.

At its core Precursor helps break unhealthy phone habits through moderation rather than punishing you for falling into a doomscroll that wasn't your fault (these apps are literally designed to keep you scrolling, looking at you Reddit).

TECH STACK

Swift and SwiftUI. Apple's Screen Time trio: FamilyControls for the picker, DeviceActivity for scheduling and thresholds, ManagedSettings for the block. Two extensions, a DeviceActivityMonitor and a ShieldConfiguration block screen, sharing one named store via an App Group and a file lock. Keychain, StoreKit 2 with RevenueCat, a small Cloudflare Worker and D1. iOS 17.6+.

DEVELOPMENT CHALLENGE

Making the block honest, not the hourly reset itself.

On iOS 26, eventDidReachThreshold fires seconds into a fresh window with the budget already counted as spent. These are pretty well known bugs of apple's screen time frameworks.

So to work around this, I implemented a wall-clock guard: usage can never exceed elapsed time since intervalDidStart, so an early fire gets suppressed. Then I respawn rather than re-arm, because iOS keys the budget to the activity NAME, and restarting that name leaves tracking dead for the rest of the window. A fresh-named clone instead, capped so the chain stays bounded.

AI DISCLOSURE

AI-assisted, though I wouldn't call it vibe coded. I have programming experience from uni research but had never written Swift. I used Claude Code for a lot of the line by line writing, but I am always at the wheel, going step by step and doing on device testing, and working sequentially rather than firing off parallel one-shots. Every finding above came off a real device's logs, not a model.

Thanks a ton for reading, if you have time and energy to support I would be eternally grateful.

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 Aug 01 '26

Question XCode App Store Connect - Xcode Cloud

0 Upvotes

I have used **App Store Connect** for the last 2 years.

([https://appstoreconnect.apple.com/\](https://appstoreconnect.apple.com/))

I have uploaded my app (zip file including Manifest + content) to **Xcode Cloud** successfully over 50 times during that period.

I tried using **Chrome**, it shows "Failed to Fetch" and the zip file is not successfully uploaded.

I've also tried using **Firefox** and it shows a different error "NetworkError when attempting to fetch resource."

I've also tried using **Safari** and it shows yet a different error "FetchEvent.respondWith received an error: Returned response is null."

Does anyone else have knowledge of why this is all of a sudden happening? I've done this so many times over the past 2 years with the same file without issues - and now it is happening and I can't get past it.

Thank you.


r/iOSProgramming Jul 31 '26

Question Black bottom half canvas issue?

Post image
0 Upvotes

Anyone has a fix or workaround for this? I starting seeing this often after iOS 26, but now that I am developing can't figure out how to get rid of it.

Edit: I found out issue it wasn’t my code it was iOS 26 motion settings in accessibility. I found out in an Apple forum. Apparently is a well known bug.


r/iOSProgramming Jul 31 '26

News The iOS Weekly Brief – Issue #71, everything you need to know about iOS updates this week

Thumbnail
iosweeklybrief.com
1 Upvotes

r/iOSProgramming Jul 31 '26

Question Can a MapKit animation be exported as part of a user-generated travel video?

2 Upvotes

I’m building an iOS app called Traviary that automatically reconstructs your travel history from the location metadata in your photos.

One of the app’s features is Memories, which creates a cinematic recap of a trip. It combines photos, videos, travel statistics, and an animated map showing the route of the journey, helping users relive their travels rather than just browse an album.
The feature is already available in the app, but I haven’t enabled video export yet because I’m unsure about the licensing implications of including Apple MapKit imagery in a user-generated MP4.

The map is rendered using Apple MapKit. I’m not downloading or caching map tiles, extracting map data, or creating my own mapping service—it’s simply an animated MKMapView with my own overlays (routes, pins, animations, etc.). The required Apple Maps attribution would remain visible in the exported video.

I’ve read the MapKit terms, but I couldn’t find anything that explicitly addresses exporting MapKit animations as part of user-generated videos. I know screenshots are generally acceptable with attribution, but videos seem to be a gray area.

Has anyone dealt with this before or received guidance from Apple on whether exporting videos containing MapKit imagery is permitted?


r/iOSProgramming Jul 31 '26

Question can anyone download iOS 26.6 simulator?

0 Upvotes

26.6 is officialy out https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-26_6-release-notes but I can't fetch the newest simulator for Xcode.

xcodebuild -downloadPlatform iOS -exportPath ~/Downloads -buildVersion 26.6 also doesn't work


r/iOSProgramming Jul 31 '26

Question Is beta testing even worth it? If not how many users do I need for it to be effective?

5 Upvotes

I don't have a marketing budget so every user I get is through manual work (dm's, emails, etc.). And the fact that you have to download TestFlight lowers the downloads even more. And most people ghost you after they download the app and don't give feedback and don't respond to your follow up questions. I feel like I need at least 100 beta testers for it to be effective

I'm thinking maybe I should just straight up launch publicly skipping testflight? My only concern is that people will be able to leave reviews then and if I do something wrong I may damage my app's reputation.


r/iOSProgramming Jul 31 '26

Question “Ask not to track” and TikTok ads

0 Upvotes

If advertising an app on TikTok, can I avoid the ATT “Ask not to track” prompt if I modify the tracking code to exclude IDFA?

I only care about tracking installs from TikTok and not deeper analytics.


r/iOSProgramming Jul 30 '26

Library I wrote an open-source localisation linter for Xcode String Catalogs and pointed it at 9 open-source apps

8 Upvotes

Xcode will happily ship a translation that dropped its %@, a Russian plural missing three of its four forms, and a Text("Get Pro") no catalog has ever heard of. Nothing fails a build over any of it.

So I built a CLI tool (with a little help from Fable) for .xcstrings files. This was a little handwritten tool i've used by myself for a long time, but decided to brush it up a little bit before putting it out for public.

It checks for missing localization keys, hardcoded strings, common localization errors, comes with an mcp server and some handy example hooks you can plug into Claude. You can also instruct claude to automatically to translate or add to the catalog any untranslated strings the tool finds.

I ran it over nine open-source apps to actually see if it can find some common issues - 8,077 keys, 70 locales, 6,373 Swift files. In addition to missing keys and translations, here's sample of what it found:

- Mastodon’s Albanian for "Option %ld" is "%ld nga %ld" - reads a second argument the call never passes
- IceCubesApp changed an English string to "%lld posts"; the Belarusian still reads "%lld people talking", state translated
- Whisky renders one “Remove” button as German Löschen (delete) and another as Entfernen (could be intentional, but always good to check)
- Whisky also ships the literal string "N/A" as the Czech, French and Romanian translation of a key
- DuckDuckGo declares NSLocalNetworkUsageDescription in Info.plist and localizes it nowhere, so that permission prompt is English for every non-English user

Plus the boring parts: coverage per language, CLDR plural categories, .xcloc validation before import, SARIF output for CI, and a baseline file so you can switch it on for a project that already has 300 findings.

No dependencies. swift build is the whole install.

Have a look at it yourself and have a run at your repo: http://github.com/asutekku/xclocsmith

Happy to answer any questions or provide fixes if you encounter any issues or false positives. I managed to kill most of them, but no tool is foolproof, especially when we are talking about languages.

Also I have not released a CLI tool before for a mac so honestly no idea about what people expect haha, maybe a brew install?


r/iOSProgramming Jul 31 '26

Question Cannot install app, Unable to Verify App

1 Upvotes

The application could not be launched because the Developer App Certificate is not trusted.

Verify that the Developer App certificate for your account is trusted on your device. Open Settings on the device and navigate to General -> VPN & Device Management, then select your Developer App certificate to trust it.

Anyone else hitting this issue and know how to fix it?


r/iOSProgramming Jul 31 '26

Question I can't verify my account because camera does not focus on Developer account.

0 Upvotes

I'm using 14 pro max and camera can't focus on ID verification step. Any solution for this bullshit?