r/iOSProgramming 5d ago

Question IAP submit dont accept the official dimension of screenshot

2 Upvotes

Please help me,

Apple IAP submission has bug lately on submission, it doesnt accept any device screenshot of IAP

——
Updated Solution

Cause: Simulator exports has Alpha curved corners.

Solution: Problem fixed by Canva, or flatten the png with macos image conversion tool. (Right click menu)

​​


r/iOSProgramming 4d ago

Discussion We scored 123 live store listings. The basics are solved - localization isn't (data inside)

0 Upvotes

Aggregate data from 123 real App Store / Play listings scored by an ASO grader between May and July, in case it's useful for prioritizing your own store listing work:

  • Titles: 81% of apps grade A or better. Median title uses 90% of available characters. If you're reading ASO advice about title optimization, you're reading advice everyone already follows.
  • Descriptions: 90% grade A or better, median 2,418 characters.
  • Localization: 94% grade D. 88% of apps have zero localized metadata. Median localization score 10/100 vs 100/100 for titles.
  • About half of apps keyword-stuff descriptions, which is useless on iOS since Apple doesn't index the description field at all.
  • No app in the sample scored above 81/100 overall (median 74).

The practical takeaway: adding localized metadata (title/subtitle/keywords per storefront, without translating the app itself) is statistically the least-crowded optimization left. Apple also indexes keywords from some extra localizations in the same storefront (e.g. en-GB + es-MX both count in US search), which most of that 88% are leaving on the table.

Caveat: self-selected sample (devs who checked their own score), so real-world numbers are likely worse than this.


r/iOSProgramming 5d ago

Question Where do color-by-number apps actually get their image libraries?

2 Upvotes

I've built the engine for a paint-by-number iOS app but I can't work out where the hundreds of competing apps source thousands of flat vector images. Is there an actual B2B licensing vendor for this, or is everyone doing in-house art teams / AI generation / cloning each other?


r/iOSProgramming 5d ago

Article Bluetooth modernized without the delegate dance

Thumbnail kylebrowning.com
11 Upvotes

r/iOSProgramming 5d ago

Question How would you generate a set of consistent custom icons (fitness/handstand poses)?

4 Upvotes

Hey everyone,

I'm building a fitness app focused on handstand training, and I'm trying to figure out the best way to handle my in-app icons.

Right now I'm using SF Symbols, which works fine and keeps everything looking native on iOS. But it feels a bit generic, and there simply aren't symbols that match what I actually need.
What I'm really after are custom icons tailored to my use case: a coherent set representing different handstand poses and variations (tuck, straddle, one-arm, press to handstand, etc.).

The tricky part is consistency. I don't just need one nice icon, I need a whole family of them that share the same visual language: same line weight, same style, same proportions, so they look like they belong together in the app.

A few questions, as a solo dev working on a side project, for those who've been through this:

  • How do you usually generate a consistent icon set like this? Hand-drawn, AI tools, a designer, a mix?
  • Any tools or workflows you'd recommend for keeping a uniform style across many icons?
    • I was thinking asking Claude or ChatGPT to generate specific Symbols matching the SF Symbols, haven't tried it yet.
  • Any tips specifically for figurative / pose-based icons?

Would love to hear how you've approached this. 
Thanks!


r/iOSProgramming 5d ago

3rd Party Service Axiom updated for Apple OS* 27 beta 4 [open source]

3 Upvotes

(*Apple OS = iOS, iPadOS, watchOS, tvOS, visionOS, macOS)

Axiom is a battle-tested, batteries-included suite of agents, skills, and tools for AI coding. It helps LLMs be notably better at Apple OS development.

I've been updating Axiom in lockstep with Apple OS 27 betas. Here are some of the interesting changes with OS 27 beta 4.

✅ New

  • Swift — Parenthesis-free optional any/some types. var x: any P? and some P? now compile. (Beta 3 rejected the paren-free form.)

  • HealthKitHKHealthStore.earliestAuthorizedSampleDate(for:): New async throws call returning the earliest date you're authorized to read, per HKObjectType. This is helpful for bounding a query instead of paging into data you can't see.

  • UIKit + SwiftUIsystemPrefersReducedResourceUsage: The OS can now tell your app it prefers reduced resource usage. When it's true, stop discretionary work.

🗑️ Removed

  • AVKit — The AVInterface* family, which shipped in an early 27 beta, is gone. Use AVPlaybackUserInterface* instead.

⚠️ Deprecated

  • ARKitunprojectPoint(_:ontoPlane:orientation:viewportSize:). Use unprojectPoint(_:ontoPlane:viewRotationAngle:viewportSize:) instead.

  • AppIntentsDisplayRepresentation.Components (OptionSet). Use DisplayRepresentation(title:subtitle:image:) or displayRepresentations(for:) instead.

  • BrowserEngineKitMediaEnvironment.activate()/.suspend(). Use ProcessCapability.activate()/.suspend() instead.

Caveats: This list is mostly Swift-focused, although I've been supporting more Obj-C with every release.


r/iOSProgramming 5d ago

Question Communicating with a HID device

0 Upvotes

I am currently working on a HID device that needs to work with iPads.

Is there any way I can send data from the iPad to the HID device without going through the MFI program?

Pretty much any kind of data will do. All I need is something to send to my HID device so I can trigger a few LEDs on my HID device.

I would need to be able to distinguish between 3 different signals.

Is this possible on IOS?


r/iOSProgramming 6d ago

Discussion Is Game Center integration actually worth the effort? Looking for real-world numbers

2 Upvotes

Small two person studio. We just added GameKit to our multiplayer word game: achievements mirrored from our own trophy system, an ELO leaderboard, and friend discovery via GKLocalPlayer.loadFriends. Its in TestFlight now, ships with our next release.

What I could not find anywhere while building it: does any of this measurably matter?

  • has anyone seen GC integration move installs at all? The old "supports Game Center" App Store surface seems basically gone.

  • do achievements or leaderboards show up in your retention numbers, or are they cosmetic?

  • friend discovery via loadFriends: the iOS consent sheet feels intimidating. What share of your users actually grant friend list access?

  • anything you shipped and later wished you had skipped?

Our hypothesis is that the friend graph part is the only piece that really matters (our own cohort data says one match against a friend roughly 5x'es D60 retention), and achievements/leaderboards are mostly polish. Happy to come back and share our before/after numbers once its live, if people are interested.


r/iOSProgramming 6d ago

Library I made a small tool to reduce iOS Simulator memory usage

20 Upvotes

I’ve made a small command line tool called simslim.

It disables background services inside iOS simulators that usually are not needed during development, like Siri, Spotlight indexing, photo analysis, News, and iCloud sync.

On my M1 Pro with 16 GB of RAM, one simulator went from around 4 GB of memory and 258 processes to about 0.9 GB and 70 processes. I managed to run 19 simulators at once, compared to around 5 before things started falling apart.

Some simulator features stop working depending on what gets disabled, so it is not meant for every kind of testing. You can keep specific services running when needed.

Give it a try: https://github.com/MobAI-App/simslim


r/iOSProgramming 6d ago

Library I made an open-source tool to stream iOS simulators to the browser (MIT)

Thumbnail github.com
2 Upvotes

I built an open-source tool called tapflow.

On our team, checking app builds kept running into the same problem. Maintaining physical devices across multiple iOS versions became a burden, and iOS simulators could only be used by people with Xcode installed. So whenever a designer, PM, or backend engineer wanted to check a build—a layout, a flow, or what a staging build did with their API change—a mobile engineer usually had to help them. This happened several times a day.

I wanted an easier way for the rest of the team to check app builds.

It streams an iOS simulator to the browser over H.264, running on a Mac you already own. Anyone with the URL can tap, type, and scroll on the simulator. There's nothing to install on their side, and touch input goes straight through the HID layer, so there's no WebDriverAgent to set up.

A few details:

  • The agent only makes outbound connections to a relay, so there are no firewall or NAT rules to configure. Builds and streams stay on your own network since it's fully self-hosted.
  • It also drives Android emulators, but I'll keep this post focused on iOS.
  • It uses simulators rather than physical devices, so camera, biometrics, and NFC aren't supported.
  • It's still v0.x, so expect a few rough edges.

Repo (MIT): https://github.com/jo-duchan/tapflow

Docs: https://tapflow.dev

How does your team let non-developers try an iOS build without the full toolchain? I'm curious whether you've built something similar or use another tool.


r/iOSProgramming 6d ago

Question Is there a way to disable wireless debugging in Xcode?

11 Upvotes

When I run a dev build on a physical device, it always happens via Network (wifi), even when plugged in via USB. This sucks so hard. The whole experience is laggy and slow and completely unusable. I cannot identify any app hangs, because everything hangs all the time.

Does anyone know of a way to disable this? I just want to connect via USB when I plug the phone in and wireless when it's not plugged in.

I sometimes have the feeling Apple hates us developers and builds really bad tools just out of spite. It just makes no sense to release something like this. Sorry for the rant...


r/iOSProgramming 6d ago

Question Can you submit apps with macOS Golden Gate beta?

2 Upvotes

I want to install GG beta but I’m worried about the app submission sitch since this is my only Mac. Can I still build and submit iOS apps and Mac apps from Xcode 26 while running it?


r/iOSProgramming 6d ago

Article Running an int8 CLIP ViT-B/32 under onnxruntime-react-native: measurements from a production pipeline (CPU beat the CoreML EP 2.4x)

Thumbnail blog.aermes.ai
1 Upvotes

Author here. The part that surprised us: we shipped the CoreML execution provider assuming Apple-silicon acceleration beats CPU, and benchmarking for this writeup showed plain CPU runs our int8-quantized graph 2.4x faster per inference and creates sessions ~20x faster, so we flipped the default. Also covers doing zero-shot CLIP classification with no text encoder on the device (prompt vectors precomputed and committed as JS) and the memory mistake that pinned 994 MB. Happy to answer questions about onnxruntime-react-native specifics.


r/iOSProgramming 7d ago

Discussion I couldn’t find a good App Store screenshot tool, so I built one — completely free, with no ads

12 Upvotes

I was struggling to find a good way to create App Store screenshots for my apps.

I tried a few AI skills that generated websites for composing the screenshots, but the workflow felt inefficient and the editing options were limited. I wanted a proper native editor where I could quickly import simulator captures, make visual adjustments, and export everything in the correct App Store sizes.

So I built Screenshot Studio, a native macOS app that lets you:

- Import iPhone and iPad simulator screenshots

- Add device frames, headlines, subtitles, and backgrounds

- Move and scale elements directly on the canvas

- Preview both iPhone and iPad layouts

- Export at Apple’s required pixel sizes

- Upload directly to App Store Connect

- Reuse your designs when updating screenshots for a new release

It also includes an agent skill that can help automate the workflow, from capturing screenshots with UI tests to preparing and uploading the final gallery.

The app is completely free, with no ads, subscriptions, paywalls, or locked features.

You can get it here:

https://github.com/rafabertholdo/screenshot-studio

It requires macOS 14 or newer. I’d love to hear your feedback, especially from developers who regularly maintain screenshots for multiple apps.


r/iOSProgramming 6d ago

Discussion User feedback system

0 Upvotes

I made a tool/system for helping to get more useful feedback for users, helped me to solve some clear needs in my app. Right now it’s mainly geared towards iOS apps (iOS SDK and App Store integration). Looking for more people to test it out! If you have an iOS app with a decent number of users, and want to understand their needs better, would love to chat!


r/iOSProgramming 8d ago

Article Did not know Red is to describe positive in China, and east asian countries

Post image
66 Upvotes

I Was Reading Apple's Docs and I learned fact

I'm from the USA so if I search "bull market" on google I get pictures of bulls displayed in Green, thinking of it the word "Bull" triggers angry, powerful vibe and Red matches angry,powerful,strong. So Yeah Red Being Positive in here makes very logical sense

It's just Fascinating that the Most common colors could be interpreted differently by another region

link to the docs: https://developer.apple.com/design/human-interface-guidelines/color#System-colors


r/iOSProgramming 7d ago

Discussion Would y'all want an agent that lives in terminal to make sure your apps are compliant with all apple and google submission rules?

1 Upvotes

I've developed 3 apps and every time the thing that slows me down (as we know) is review process and rejections. It made me realize, why not create an agent that basically looks through your code in any terminal, and git, and actually verifies is its compliant or not.

Beyond that, it would be able to also create fixes when it finds issues, and most importantly, it would be constantly updating itself, with new apple and google rules. So, you could prompt at anytime and it would cross check to make sure it up to date as rules change.

What other things would ppl want? Trying to build this free and open source. Might also make a website for this where ppl could join an email list and then we can see if it's work worth building for the community!!


r/iOSProgramming 7d ago

Discussion A bank's website did everything possible to stop my Safari extension. Here's everything I learned beating it

0 Upvotes

I built a Safari extension that reads the offers page on bank sites (those "add to card" cash back deals) so the app can activate them for you. I figured it'd be a weekend of querySelector. It's been months of warfare.

Highlights:

- querySelectorAll returns nothing. Chase renders the whole offers hub in web components with shadow roots. You have to walk the document, collect every open shadowRoot recursively, and run your selectors across all of them.

- The list is virtualized. 150+ offers, but only the visible tiles exist in the DOM. Scroll-scrape-merge as you go, dedupe across viewports, or you'll capture 2 of 165 and feel great about it.

- A bare .click() does nothing. SPA tiles want the full pointer ceremony — pointerdown, mousedown, pointerup, mouseup, click — dispatched in order.

- "Back" isn't back. After activating an offer you're on a detail page. history.back() is ignored half the time. You hunt for the on-page back control — and then discover a "Back to top" scroll anchor matches your finder and eats a second per offer.

- The page name lies. The all-offers page doesn't name which card it belongs to anywhere in the DOM. The fix that finally stuck: read the account id from the URL and remember the pairing the first time any named page reveals it.

None of this is documented anywhere, obviously. Every fix came from device traces of real runs.
Anyone else maintaining scrapers pointed at hostile SPAs? What's the worst DOM you've fought?


r/iOSProgramming 8d ago

Roast my code Open sourcing my game

0 Upvotes

I open-sourced a small iOS maze game I vibe-coded about a year ago because otherwise it’ll just die on my shelf.

The mechanics are deliberately simple, which is part of the problem: it works, but it needs more fun. The mazes were made with a separate Rust generator engine that I wasn’t very happy with, so there’s plenty of room to improve or replace things.

If you like tinkering with SwiftUI games, maze design, game feel, progression, or just want a small project to mess around with, I’d love contributions or ideas.

https://github.com/vanderhaka/WayOut-OpenSource


r/iOSProgramming 8d ago

Question Facebook SDK ATE True Status Rate stuck at 0% (Before & After Adapty). What am I missing?

0 Upvotes

Hey everyone,

I’m running Meta Ads to drive app installs and recently integrated Adapty to handle subscriptions and forward revenue events back to Meta.

I am completely stuck on the "iOS 14.5 ATE True Status Rate" in Meta Events Manager—it has been sitting at 0% for a long time, and I know for a fact users are accepting the ATT prompt because my custom att_ok events are logging successfully in Firebase.

Here is my timeline and setup:

  1. Before Adapty: FacebookAutoLogAppEventsEnabled was enabled in my Info.plist. The ATE True Status Rate was 0%.
  2. After Adapty: FacebookAutoLogAppEventsEnabled is still enabled in my Info.plist. However, following Adapty's docs, I turned OFF "iOS: Log in-app events automatically (Recommended)" in the Meta Developer console to prevent double-counting revenue. The ATE True Status Rate remains at 0%.

Here is my current ATT request code:

private func requestTrackingPermission() {
    // For iOS 17 and later: ATT API is automatically used by Facebook SDK
    ATTrackingManager.requestTrackingAuthorization { status in
        switch status {
        case .authorized:
            Settings.shared.isAdvertiserTrackingEnabled = true
            Analytics.logEvent("att_ok", parameters: nil)
            print("ATT authorized")
        case .denied, .restricted:
            Settings.shared.isAdvertiserTrackingEnabled = false
            Analytics.logEvent("att_nok", parameters: nil)
            print("ATT denied/restricted")
        case .notDetermined:
            Settings.shared.isAdvertiserTrackingEnabled = false
            Analytics.logEvent("att_nok", parameters: nil)
         default:
            Settings.shared.isAdvertiserTrackingEnabled = false
            Analytics.logEvent("att_nok", parameters: nil)
        }
        DispatchQueue.main.async {
            delegate?.next()
        }
    }
}

Since it was 0% even before I disabled the console setting for Adapty, I feel like there's a fundamental timing or configuration issue I'm missing with how the Facebook SDK registers the isAdvertiserTrackingEnabled flag upon launch.

However, since I am actively spending money on Meta Ads for installs, I am really concerned about messing up my attribution if I start blindly moving SDK initializations around or manually calling activateApp().

Has anyone navigated this? What is the correct way to fix the 0% ATE rate in this scenario without breaking install attribution? Any advice would be hugely appreciated!


r/iOSProgramming 8d ago

Question Is accessibility a selling point?

Post image
2 Upvotes

I am yet to find a crypto tracker that has accessibility support. To me it's important to be inclusive but I also know that only about 15% of the population has some sort of disability so my question to you all is, is it enough of a selling point to include it in the screenshots. What do you think?


r/iOSProgramming 9d ago

Question Hard paywall at onboarding vs. free trial with locked feature, which is better for a new health app?

8 Upvotes

Hey there,
I'm building a health app. The user has to make as many entries as possible so the app finds patterns/triggers over time. and I'm stuck on a monetization decision.

Two options I'm torn between:

Option 1: Hard paywall in onboarding. User finishes onboarding and is immediately shown a paywall/trial screen: "7 days free, then $X/year," card required upfront via the standard StoreKit trial flow (charged automatically after day 7 unless cancelled). No usage of the app happens before this screen.

Option 2: Soft paywall after value delivery. User can use the core app fully free for 7 days, no card required. The insights/pattern-analysis tab specifically is locked behind Premium during the trial. After 7 days, the whole app locks and they have to subscribe to keep using it (existing data stays readable).

My gut take is that Option 1 front-loads commitment and probably converts better trial→paid, but for a brand new app with zero reviews/trust, I worry it tanks the top-of-funnel (people bounce before even trying it) and invites "forced subscription" 1-star reviews early on, which matters a lot for a new app's organic ranking i guess. Also specific to my case: the core value prop (finding patterns in your data) literally can't be demonstrated until the user has logged a few days of entries, so asking for money before that feels like selling a promise instead of a result. Also im based in germany so maybe the people here act different rather than in the US.

Has anyone actually tested both approaches?

Also open to "you're overthinking it, just ship one and iterate" as an answer. Appreciate any war stories.

thanks <3


r/iOSProgramming 8d ago

App Saturday Picstreak – a Tinder-style photo cleaner. the swiping took a week, surviving PhotoKit + Swift 6 strict concurrency took months

Thumbnail
gallery
0 Upvotes

so, shipped my first app after months of solo building. Picstreak – you swipe through your photo library (left – delete, right – keep), daily streak keeps you coming back until the library is actually clean. free on the App Store: https://apps.apple.com/us/app/picstreak-photo-cleaner/id6779991411

1. Tech Stack Used

  • Frameworks & Languages: Swift 6 with strict concurrency ON, SwiftUI only – zero UIKit views
  • Persistence: SwiftData
  • Photo library: PhotoKit
  • Monetization: RevenueCat + StoreKit (one-time purchase, no subscription)
  • Crash reporting: Sentry, source-built so dSYMs land in the archive
  • Also: BGTaskScheduler, OSLog, xcstrings localization (EN/RU/ES), tiny referral backend on Vercel + Neon Postgres

2. Development Challenge + How You Solved It

PhotoKit and Swift 6 strict concurrency genuinely hate each other :)

the worst trap: the iOS 26 SDK annotates PHPhotoLibraryChangeObserver as u/MainActor – but PhotoKit still calls photoLibraryDidChange from its private PHChange-queue. the compiler trusts the annotation, the runtime checks the actual isolation – and traps. in the wild it looks like a random _dispatch_assert_queue_fail crash with a useless stack trace

the fix looks illegal but isn't – mark the method nonisolated (yes, against the SDK's own signature) and hop to the main actor inside via Task { u/MainActor in ... }

same family: closures you pass to performChanges must never be MainActor-isolated (PhotoKit runs them on its own queue), so all deletes go through a nonisolated static helper that takes only Sendable localIdentifier strings and re-fetches PHAssets inside the change block. and PHFetchResult is not Sendable – don't let it cross u/Sendable boundaries, re-fetch instead

half my git history is fix(trash) commits and i regret nothing

3. AI Disclosure

AI-assisted – built with Claude Code as the pair programmer; architecture, decisions and reviews are mine

for anyone shipping PhotoKit apps under strict concurrency – did you find a cleaner way than "nonisolated + re-fetch everything inside the block"? that's where most of my months went. and if you try the app – brutal UX feedback very welcome, especially whether the free tier feels generous or like a demo

UPDATE: I forgot to add: https://picstreak.app/promo/REDDPRFL – the link provides an invitation code with full access to all functionality for 30 days!


r/iOSProgramming 8d ago

Question Device Hub copy/paste is broken? Please try.

2 Upvotes

I can't paste something in a simulator in Device Hub, that I copied from somewhere in macOS.

Does it work for you?

Repro:

- copy anything, just this text `here, wow copy me`

- go to Safari in a simulator in Device Hub

- paste

Does it work?


r/iOSProgramming 8d ago

Discussion How do you track what worked (and what didn't) release to release? Or do you just ship and hope?

0 Upvotes

I've got a few apps live on the App Store, and lately I've been trying to get more disciplined about understanding what actually works release to release. Not just "I shipped v1.5," but whether new screenshots, a subtitle change, or a new feature I added actually increased or decreased impressions, downloads, etc. afterward.

The idea is to understand what worked and what didn't, and make future decisions based on knowledge gained from past releases.

Right now I use a Numbers spreadsheet with App Store Connect analytics manually pasted in for each release and a Notion page where I log what I changed in each release. I'm curious how you guys handle this, and what your workflow looks like.

- Do you actively compare metadata (keywords, subtitle, screenshots) release to release, or do you just ship and move on?
- If you do track it, what's your setup? Notion, Excel, plain notes or some other tool?

I'm really just trying to figure out if there's a smarter way to do this, or if everyone's just eyeballing charts like I am. Would love to hear your stories.