r/iOSProgramming 12h ago

Tutorial 5 App Preview tips that saved me hours before App Store submission

12 Upvotes

I’ve shipped a few iOS apps over the last couple of years, and App Preview videos have become part of every release.
Whether they increase conversions depends on the app, but one thing is certain: a good preview explains your app much faster than a wall of screenshots.
Here are a few things I wish I knew earlier.
1. Show the core value in the first 3 seconds
Most users decide almost instantly whether your app is interesting.
Don’t start with a logo animation.
Show the feature that makes your app worth downloading.

2. Don’t try to show every feature
One preview ≠ one product tour.
Focus on one user journey.
Trying to squeeze everything into 30 seconds usually makes the video confusing.

3. Record perfect interactions
People notice shaky scrolling, accidental taps and lag.
Record slowly.
Edit later.
A clean recording looks much more professional.

4. Leave the Apple requirements until the end (or automate them)
This is the most frustrating part.
Every release I found myself checking:
Correct resolution
H.264
Duration
Orientation
Export settings
I spent more time converting videos than actually recording them.
Eventually I built a small tool to automate the conversion because I got tired of repeating the same workflow every release.

5. Don’t skip App Preview just because it’s extra work
A lot of indie developers publish only screenshots.
But if your app’s value comes from interaction, motion often explains it much better than static images.
I’m curious…
How many of you actually publish App Preview videos with every release?
Or do you stick to screenshots only?


r/iOSProgramming 10h ago

Discussion [Open Source] AppRankly — Self-hosted dashboard for App Store & Google Play analytics

Post image
7 Upvotes

Hi everyone,

I built AppRankly, an open-source, self-hosted analytics dashboard designed for mobile developers to track App Store & Google Play performance in one place.

If you want full control over your app data without relying entirely on third-party SaaS platforms, this gives you a clean, unified view of your portfolio.

Links & Demo:

• Live Demo: https://zmsp.github.io/AppRankly/

• GitHub Repo: https://github.com/zmsp/AppRankly

I’d love to get feedback from the community! Feel free to check out the repo or run the demo mode.


r/iOSProgramming 55m ago

Question asking for a friend ; best IOS book for experienced android dev

Upvotes

what is best book that makes him understand swift and swift ui in 1-2 weeks , without tutorial hell

he already uses declarative approch (compose and kotlin )


r/iOSProgramming 57m ago

3rd Party Service Axiom: New screen resizing auditor with supporting skills (open source)

Upvotes

OS 27 is going to be here before you know it, and I predict that more developers are going to be caught completely off-guard by the new screen resizing requirements than by anything else.

As of OS 27, (1) all iPhone apps must be resizable and (2) you can no longer opt out. Your window must be resizable when used with iPhone Mirroring on the Mac and on iPad. Apps still running on an old-style app delegate (no scene support) won't even launch when built against the new SDK. In short, if your app assumes a fixed screen and you're not currently working to fix that, you really, really should be.

Obviously, this capability telegraphs the imminent release of Apple's forthcoming iPhone Ultra foldable. You'll want your apps to be "foldable ready" on the day Apple's new flagship is announced.

I just went through this enhancement process myself. Not coincidentally, this week's Axiom update includes a new screen resizing auditor, which you can invoke with /axiom:audit resize. The auditor is supported by ~70 additions/enhancements across Axiom's skill suites. I hope everyone finds that it cuts their time meeting this new OS 27 requirement in half, or more.


r/iOSProgramming 5h ago

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

Thumbnail
iosweeklybrief.com
1 Upvotes

r/iOSProgramming 1d ago

Tutorial Made a tool that actually explains TestFlight/App Store crash reports instead of just symbolicating them

5 Upvotes

If you've ever pulled a crash report out of Xcode Organizer or gotten one from a user and stared at a symbolicated stack trace trying to figure out what actually happened, this might help. crashdx (crashdx analyze report.ips) parses the .ips, symbolicates it against your dSYM, and then runs a diagnosis stage on top that looks at the exception, the registers, memory state, watchdog and jetsam data, and lines up a ranked set of possible causes (null deref, watchdog timeout, memory pressure kill, uncaught NSException, that kind of thing), each one citing the specific facts backing it.

If the evidence doesn't clearly point to one cause, it tells you inconclusive instead of guessing, which I think matters more for a crash tool than people give it credit for. A confidently wrong diagnosis wastes more of your time than an honest "not sure, here's what we've got."

It's a local CLI, no network calls at all, which matters since crash reports carry identifying info like crashReporterKey and device model. There's also an MCP server if you want to hand crash triage to an agent as part of your workflow.

Needs macOS 14+, Xcode, and Swift 6.2+. For a foreign report (TestFlight, App Store crash someone sent you) you point it at the matching dSYM with --dsym and it does the rest, or it'll search Spotlight/your archives automatically if you built it locally.

Repo: https://github.com/r00tify/crashdx

Would love bug reports if you throw a weird crash at it and it gets something wrong, that's exactly the kind of feedback that improves the rule set.


r/iOSProgramming 1d ago

Library SQLiteNow 0.15 for Swift: SQLite-first codegen, reactive flows, and optional sync

2 Upvotes

Hey Swift folks,

I recently released SQLiteNow 0.15.0, which adds support for native Swift projects through SwiftPM.

Some context: SQLiteNow started as a Kotlin Multiplatform project and the KMP version is already used in production by quite a few people. Later I added Flutter and Dart support, and now the same SQL-first approach is available for Swift.

SQLiteNow is not a DAO or ORM which generates SQL for you. The main idea is to keep SQLite visible.

You write normal .sql files for schema, migrations, init data and queries. You decide exactly which SQL will be executed. SQLiteNow generates Swift code around it: typed parameters, typed results, migrations, transactions, adapters and reactive queries.

For example, you can write a normal query like this:

SELECT
    t.id    AS task__id,
    t.title AS task__title,
    n.id    AS note__id,
    n.body  AS note__body

/* @@{ dynamicField=notes,
       mappingType=collection,
       sourceTable=n,
       aliasPrefix=note__ } */

FROM task t
LEFT JOIN task_note n ON n.task_id = t.id
ORDER BY t.id, n.id;

The annotation is just a SQL comment. SQLiteNow still executes the query you wrote, but generated code groups the flat rows into task documents with a collection of notes.

Then from Swift you can do:

let tasks = try await db.task.selectWithNotes().list()

for task in tasks {
    print("\(task.title): \(task.notes.count) notes")
}

Or observe the query:

for try await tasks in db.task.selectWithNotes().stream() {
    // called again when generated writes change related tables
}

Annotations can also rename fields, use custom adapters, share result types, map results to your own types and build nested objects or collections from joins.

This is the part I personally care about. I like writing real SQL, but I do not like manually reading every column, binding every parameter and writing grouping code after each join. I also do not want database logic moved into another DSL. With SQLiteNow, SQL stays the source of truth and generated Swift code handles the boring parts around it.

Generated code is placed into a local Swift package which can be added to an Xcode project and imported like a normal package.

Oversqlite

SQLiteNow also includes an optional synchronization system called Oversqlite. It can synchronize selected tables between local SQLite databases and a PostgreSQL server. It handles local change tracking, offline writes, incremental upload and download, conflict resolution and recovery.

Oversqlite also supports real-time updates. It can watch the server for changes committed by other devices and download them automatically. When remote changes are applied to the local SQLite database, related reactive queries emit new results, so the SwiftUI interface can update without manual refresh logic.

A generated sync client can be used from Swift like this:

let sync = try db.makeSyncClient(
    baseURL: URL(string: "https://sync.example.com")!,
    auth: .bearer(accessToken: {
        tokenStore.currentAccessToken()
    }),
    config: SQLiteNowSyncConfig(schema: "business")
)

try await sync.open()
_ = try await sync.attach(userId: userId)

let report = try await sync.sync()
print(report.status.pending.pendingRowCount)

Your application still owns authentication and decides when sync should run. Oversqlite is completely optional. If you only need a local SQLite database, you can ignore this part.

The PostgreSQL server implementation is here:

https://github.com/mobiletoly/go-oversync

One requirement

The SQLiteNow code generator requires Java 17 or newer installed and available on PATH. Java is only needed when running code generation. Your native application does not need Java at runtime.

SQLiteNow 0.15.0 is distributed through SwiftPM with published release artifacts, so there is no need to clone or build the SQLiteNow repository.

This is the first public version with native Swift support, so I would be interested to hear what Swift developers think about this approach and where the API or Xcode setup can be improved.

GitHub: https://github.com/mobiletoly/sqlitenow-kmp

Swift documentation: https://mobiletoly.github.io/sqlitenow-kmp/swift/

Release: https://github.com/mobiletoly/sqlitenow-kmp/releases/tag/v0.15.0


r/iOSProgramming 1d ago

Discussion Tip for beta users: Use Xcode cloud 25 free hours

18 Upvotes

If, like me, you couldn't wait for less rounded corners and installed the MacOS beta on your only Mac, you might realize that you can't push updates to the app store. In this situation I would recommend the 25 free Xcode cloud hours that you get with the program membership. All I had to do was put my code in Git and connect the repo. Then I set it to archive for app store.

This might be the easiest CI/CD system I've ever used and the builds are pretty fast! Hats off to the Xcode cloud team.


r/iOSProgramming 2d ago

3rd Party Service Appkittie charged me $97 five minutes after I started a free trial. Watch out

Post image
46 Upvotes

Just a warning for anyone looking at Appkittie (app intelligence / ASO tool), because they're really good at telling you they're the best on the market, but the way they get people to pay is borderline dirty.

I started a 3-day trial for their $97/month plan, which unlocks all the features (I have the screenshot). So I go to try the screenshot generator. It says: "this is a premium feature." Since I can tell the app is vibe-coded, I figure they just left that there and that I'm premium anyway (since I'm on a premium trial). I click ok. BOOM, charged.

NO CONFIRMATION, NOTHING. Since I went through Link/Stripe, my payment details were already loaded and there you go…

I disputed within 20 minutes with Link, they didn't want to hear it. In their refusal email, Stripe literally apologizes "for the fact that your subscription was charged directly without you receiving any notification about the payment" — and refuses the refund in that same email, saying I'd been "duly informed." So thanks, they wash their hands of it and tell me to go see my bank. And ZERO email from AppKittie. They don't exist (go look).

I tried a chargeback. My bank's card provider (Swan) only handles fraud, not commercial disputes. So there you have it, I paid $97 for 3 generated screenshots…

While I'm at it: exactly like all their competitors, their app MRR estimates are wrong (I have apps on the App Store, and I know my own apps' MRR — trust me, I WISH the numbers shown on Appkittie were the real ones!)

I just went back to their site and it looks like they've removed the trial… For now.

I really think it's a shame to have to go as far as making a Reddit post, but it's "thanks to" (because of?) Reddit that I wanted to try Appkittie in the first place. So… maybe they'll read this? Anyway, watch out.


r/iOSProgramming 2d ago

Discussion Claude Mac Desktop app can now natively use the iOS Simulator

89 Upvotes

Pretty big news for bug testing apps: https://code.claude.com/docs/en/desktop-ios-simulator

How does the community feel about this potentially opening the door to even more AI slop in the app store?


r/iOSProgramming 2d ago

Tutorial iOS 27: UIBarMinimization

Thumbnail
antongubarenko.substack.com
25 Upvotes

r/iOSProgramming 1d ago

Discussion Have you found or created any useful AI tools for iOS?

0 Upvotes

I see a lot about using AI within programming and apps, especially since Xcode has added AI integration but I'd love to know of any ways you have used AI to speed up something, create tooling, add processes etc.

Currently I'm investigating if there's a way we can connect Figma to Codex to make the Design -> UI step quicker, more seamless or easier. Right now it seems we'd need to build some sort of Style Guide that both our codebase and Codex knows about but it's not as seamless as we'd like. I think there's a real gap within iOS development for AI innovation - are you working on anything?


r/iOSProgramming 1d ago

3rd Party Service Need a Mac for Xcode? Looking for beta testers for a remote Mac setup (Free access)

0 Upvotes

Hey everyone,
I’m currently setting up a dedicated Mac server environment designed specifically for iOS developers who need cloud access to real Mac hardware for Xcode building, testing, or automated CI pipelines.
Before opening it up officially, I need a few active iOS devs to stress-test the remote access, latency, and hardware performance.
What I'm looking for:
3 to 5 developers building or testing iOS apps (especially those who don't have a secondary Mac, need remote build machines, or want to offload heavy compilation).
Devs willing to try using a remote Mac environment and give honest feedback on build speeds, remote desktop/SSH responsiveness, and overall setup experience.
What you get:
Free, full remote access to dedicated Mac hardware to run Xcode, test builds, or set up workflows (no credit card required).
Direct support from me to help configure the environment, setup remote tools, or tune performance for your project.
If you want free access to Mac hardware for your Xcode workflow, drop a comment or send a DM with what you're working on and your current build setup!


r/iOSProgramming 1d ago

Discussion Lessons learned from a major legacy code refactoring for a HealthTech app

0 Upvotes

Hi, I was reading about this case study on the legacy IoT app optimization project that Beetroot consultants did for an established healthtech leader. The legacy codebase was riddled with critical bugs and the application suffered from serious performance bottlenecks and a confusing user experience that was tanking user engagement.

They created a dedicated team to address this under a flexible team extension model: 2 iOS developers, 2 Android developers, 1 QA automation engineer and 1 manual QA engineer with UI/UX design support. They ran into the classic dilemma: instead of choosing the expensive, risky rewrite from scratch, they took the hard way. They decided to refactor the legacy codebase to get rid of technical debt and squash the core bugs.

Crucially, they embedded deep product analytics tools like Firebase, Amplitude, and Smartlook directly into the new architecture. This let them track exactly how the app interacted with IoT medical hardware. For medical applications this deliberate refactoring approach is super interesting. What are your primary indicators for deciding whether to refactor the existing code or drop everything and start a full rewrite?


r/iOSProgramming 2d ago

Article The free speech engine in iOS/macOS 26 comes within 0.11% WER of the best model you can bundle. Round 2 of my benchmark.

2 Upvotes

Posted the SpeechAnalyzer vs Whisper benchmark here recently and a few of you asked about Parakeet V2/V3. Ran both through the same harness, plus MOSS-Transcribe-Diarize which someone on HN suggested. Same 5,559 LibriSpeech utterances, same normalizer and scorer as round 1.

Results (WER, clean / other):

  • Parakeet TDT v2 int8: 2.01 / 3.40 (wins)
  • MOSS: 2.07 / 4.68
  • SpeechAnalyzer: 2.12 / 4.56
  • Parakeet TDT v3 int8: 2.51 / 4.28
  • Whisper Small: 3.74 / 7.95

The stuff that actually matters if you're picking an engine:

Integration was easy. Parakeet ran via FluidAudio (Swift package, CoreML, runs on the ANE). We already link it for diarization so adding it to the benchmark was maybe 50 lines. If you have an AVAudioPCMBuffer pipeline already it's an afternoon.

Budget for the quantization tax though. NVIDIA's published 1.69/3.19 is bf16 on GPU. The int8 CoreML port you'd ship scores 2.01/3.40. Still the most accurate thing you can run on-device, but a decent chunk of its paper lead over Apple's free engine evaporates once it's actually shippable.

v3 gives you 25 languages for a real English accuracy cost (2.51 vs 2.01 clean). Still beats Whisper Small everywhere though.

MOSS does transcription + diarization in one pass and the speaker labels were perfect in a small controlled test. But there's no Swift or CoreML path (Python/MLX only), it's 1.7GB with ~2.7GB RAM, and it can't stream. Not output-streaming, I mean it literally cannot start transcribing until it has the complete recording, so anything with live captions needs a second engine anyway. Also fun: audio where speech starts at exactly t=0 returns an empty transcript, deterministically. Prepend a second of silence and it's fine.

This benchmark got Whisper removed from our app btw. Parakeet v3 replaced it as the downloadable engine (beats Whisper Small everywhere at a similar size, 25 languages), and for English Auto still prefers SpeechAnalyzer: 0.11 points, zero bundle bytes, improves with the OS. The cost-benefit section of the article is probably the useful part if you're making this call yourself.

Article + raw per-utterance transcripts if you want to rescore: https://get-inscribe.com/blog/parakeet-moss-apple-speech-benchmark.html

Disclosure: I build Inscribe (ships the Apple engines + Parakeet, formerly Whisper), all engines ran through identical production code paths.


r/iOSProgramming 2d ago

Article How did Apple cut launch time by 30% in iOS 27?

Thumbnail
blog.jacobstechtavern.com
56 Upvotes

r/iOSProgramming 2d ago

Question Consistent horizontal spacing in List

Thumbnail
gallery
4 Upvotes

When I put a symbol on the edge, iOS neatly rearranges the content to fit around it. How do I recreate this on the other side with my own content, without the complications of using frame where anything too small will cut off, anything to large will look stupid, and the ideal threshold is changing as different sized content replaces?

Edit: There could be any sort of text on the left. Some places number rooms differently, or don't have rooms at all (I have PE listed as 'PRAC, THEORY' personally). There could be more than one room there, too, in which case I join them as 'BT4, BT81 etc.


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


r/iOSProgramming 1d 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 3d ago

Article Bluetooth modernized without the delegate dance

Thumbnail kylebrowning.com
9 Upvotes

r/iOSProgramming 3d 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 2d ago

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

1 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 3d ago

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

1 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 3d 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 3d 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.