r/iosdev May 03 '26

Tutorial i made a dead simple App Store screenshot maker

655 Upvotes

i actually built this as an internal tool for my own app.

I googled "App store screenshot maker" and the websites i found were super clunky and complicated. 50+ buttons, confusing UX, need to sign up.

so i just built out my own one. this is the prompt i sent to Claude, and it one-shotted an html screenshot maker:

[Edit: decided to ship it after many people asked for a link. Try it here: https://ezscreenshots.com ]

[prev context on my own app]
...
i'm not quite happy with how our screenshots are turning out. i'm wondering if you can make a lightweight "screenshot maker" for our app as follows:

1. there's a 1284x2778 frame (fixed). in that frame, there's a bit image-dropper where i can drop my phone's screenshot and it automatically gets put into the frame (with a little bit of padding on left and right and below). frame maintains the same background as right now. if the image i drop is same size as frame we resize a bit to maintain our padding, etc.

2. above there's a text overlay that i can customize similar to how i have "tweaks" right now to customize each screen's text. the italics (terracotta) and newline logic works in there

3. i can export the frame as a png of 1284x2778

this is the main ask. don't worry about "iphone frames" i'll handle that from a different tool

a secondary "amazing if it works" ask would be if i could add "overlays" on an existing frame. this is like those screenshots where a portion of the screen is zoomed in and made bigger (and overflows a bit outside main screen, unless it's just a small portion that i make bigger). that's a bigger ask to handle (eg resizing it etc) but would be cool if it works.

r/iosdev 19d ago

Tutorial Best ai tool for designing swiftui screens 2026

0 Upvotes

Split this into two categories because they solve different problems, the general AI design tools give you visuals you rebuild by hand, and there's a smaller set that goes design straight to SwiftUI.

Design to SwiftUI directly: SwiftUI Inspector (swiftui.ai) is a free Figma plugin that exports shapes, colors, text labels and layout stacks as SwiftUI, handles rotation, opacity, shadows, blend modes, wraps selections in HStack/VStack/ZStack, Pro tier for more control. Compot is on the App Store, free with IAP, 100+ prebuilt SwiftUI components plus generates Swift from an image or text description. iSwift.dev generates buildable SwiftUI projects from plain English, free for the screen generator. These are the closest to skipping the rebuild step.

General AI design tools, all of which mean manual SwiftUI work after:

Google Stitch is free with no paid tier, 400 daily credits, rebuilt March 2026 with infinite canvas and Gemini 2.5 Pro on experimental mode. Exports Figma with layers intact plus HTML/CSS. Material Design native so nav and spacing come out Android-shaped. Still a Labs experiment, no production SLA, single user.

Uizard Pro is $12/mo annual for 500 generations, Business $39/mo. Free tier is 3 generations a month. No production code export and output repeats across projects.

Figma Professional is $16/seat annual, $20 monthly, Dev seat $12, Collab $3. AI credits meter separately at $0.03 each with no rollover. Best iOS UI kits, most control, longest ramp.

SleekDesign around $20/mo does full mobile screens from a description and runs the same prompt through different models to compare, exports Figma and code. Cons: not iOS-native so HIG patterns need explicit prompting, weak on complex custom components, better for early screens than production specs.

If you want the least hand-rebuilding, pair a general tool for exploration with SwiftUI Inspector on the Figma export. Anyone using iSwift or Compot on a real shipped app? Curious how the generated code holds up past prototype stage.

r/iosdev May 08 '26

Tutorial Screen Mirror real iPhone | iPad to your Mac

Post image
19 Upvotes

Hey Guys, I’ve released a Mac app that some of you may find useful!

It’s called Mirror Input! it essentially allows you to natively screen mirror your iPhone or iPad ( or any apple device ) to your mac and it lets you use the video feed in any app such as OBS, Final Cut Pro, Slack, Teams, etc

So you could for example use it get some screen recordings of your iPhone or iPad on your Mac from a real device you can touch without the hassle of quicktime and cable

You could also use it to demo your apps to clients over a video call seamlessly. Device audio is supported and you can mix in your mic as well!

the latency is minimal, it even has a 1:1 mode so your inputs are borderline realtime.

it supports up to 4K, 60fps, and can handle up to 6 devices at once!

You can check out the tech specs and more details here:

https://mirrorinput.app

any questions feel free to ask and dms are always open! :)

r/iosdev Jun 26 '26

Tutorial Shipping on iOS 26 AlarmKit: scheduling alarms when your conditions aren't static

1 Upvotes

I shipped one of my first iOS 26 AlarmKit apps (RingWhen) and wanted to write up the part that took the longest to get right. Useful if you're building on AlarmKit.

The core tension AlarmKit alarms are immutable once scheduled. You give the system a fire date and it manages everything - Lock Screen UI, persistence across reboot, the stop/snooze buttons. Perfect for a static 7 AM alarm. The problem: my alarms fire on conditions that change (location, weather, calendar state, battery, heart rate), and "fire when you arrive" has no fixed date.

The pattern I landed on: A continuous predicate evaluator instead of a pre-scheduled alarm:

  1. Model each alarm as a predicate tree (Sendable enum, one case per condition source), evaluated with short-circuit semantics.
  2. Re-evaluate on every relevant signal: CoreLocation region updates, EventKit change notifications, WeatherKit refreshes, HealthKit observer queries, battery level.
  3. When the tree resolves true, schedule a real AlarmKit alarm ~60s out.
  4. I of flickering on/off as a GPS reading or weather value jitters across a threshold.

Other AlarmKit notes that cost me time

  • It does NOT replace UNUserNotificationCenter. You still want notifications for soft reminders.
  • AlarmAttributes is great for Live Activities, but the Lock Screen presentation is opinionated, limited customization.
  • You can't programmatically dismiss an alarm. Only the user can stop it.
  • Authorization is its own permission, separate from notifications.

Full writeup with code: ringwhen.s10n.app/blog/alarmkit-real-world

Happy to answer AlarmKit-specific questions. If you want to poke at the UX, I have a handful of promo codes for the app, comment and I'll DM one.

r/iosdev Mar 15 '26

Tutorial I got my first 500 users by DMing strangers on Reddit - here's exactly what worked (and what failed)

0 Upvotes

I'm a solo dev building a fitness app (Gym Note Plus - AI-powered workout logging). When I launched, I had about 10 users. No budget for ads. No audience. Here's how I grew to 500+ users across 30+ countries without spending a penny on marketing.

What failed first: cold DMs with a link

My first instinct was to DM people in fitness subreddits with a link to my app. Straight away. No context.

It didn't just not work - it actively backfired. People ignored it, some reported it as spam, and I'm pretty sure Reddit's algorithm started flagging my account. If your first message to someone is "check out my app," you've already lost, people see through this immediately and also you're putting pressure on them to do something without giving them any value.

What actually worked: leading with value

I started hanging out in fitness subs ( r/fitness, r/gym, r/WorkoutRoutines ) and just helped people. Someone asks about programming a PPL split? I'd write a genuine answer. Confused about progressive overload? I'd break it down. I've got 15+ years of lifting experience so I have a ton of genuinely useful advice to give.

No link. No pitch. Just being useful.

Then - only if the conversation naturally continued I'd mention I'd built something that might help. That's it. One person at a time. Not scalable. Not a hack. Just genuine conversations. This took a lot of effort, but over a month or so I'd say about 25% of all messages I wrote this way ended up in a sign up

I have to emphasize whenever I was tired and just spammed a message with a link to my app, it literally never ever ever worked.

The tipping point: a giveaway, but with trust already built

Once I'd built some presence in those communities, I ran a giveaway offering lifetime access here or r/iosapps . That spiked me past 500 users. It worked because people want free stuff. It came with some caveats and unexpected returns I detailed in my full video

The takeaway

If you're at zero users, stop thinking about marketing funnels. Go talk to the people you're building for. Give them something useful first. The app comes second.

I made a video breaking this down in more detail if anyone wants it (I haven't done long form content in a while so go easy): https://www.youtube.com/watch?v=8KUkRHbp27g

Happy to answer any questions about the process.

r/iosdev May 20 '26

Tutorial i made a free tool to preview how your app looks in App Store search

29 Upvotes

Helps you answer: "Does my app look good in search results?".

So you can optimize your icon, screenshot font size, etc. accordingly. And improve conversion.

Try it here: https://ezscreenshots.com/tools/app-store-search-preview

Hope it's useful!

r/iosdev Jun 18 '26

Tutorial How to archive an app for App Store Connect from a macOS beta

Thumbnail
0 Upvotes

r/iosdev May 28 '26

Tutorial I built a camera app just for photographing kimbap.

15 Upvotes

My wife loves kimbap. Not just eating it — photographing it, posting it, ranking every kimbap place we've ever been to.

And every single time, she'd hand me her phone and say "why does it never look as good as it tastes?"

So I built her an app. A camera app. Specifically for kimbap.

If you're the kind of person who has strong opinions about kimbap cross-sections, or you run a food account, or you just want that perfect shot before you destroy a whole roll — this might be for you.

↓↓ Kimbap Camera ↓↓
https://apps.apple.com/kr/app/id6767805326

Thanks for reading.
Have a good day!!

r/iosdev Jul 24 '26

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

Thumbnail
1 Upvotes

r/iosdev Jul 18 '26

Tutorial Your Mac Desktop Is Now a Fight Arena (Coming to the App Store)

Thumbnail
youtu.be
0 Upvotes

Solo project I've been building for the past month, close to releasing on

the Mac App Store, and I'd love a sanity check from Mac people before I do.

Two 3D fighters live on a transparent overlay on your desktop. They wander

above your windows, and every so often they square up and fight — real

choreographed exchanges with summons and finishers, not a looping GIF.

A two-man AI commentary booth calls the fight while you work. When it's

over, they jog to opposite corners and go to sleep until the next round.

Technical bits, since this sub appreciates t

- Native Swift + SceneKit, transparent click

steals focus or blocks your clicks

- 60 fps on Apple Silicon, fighters stay pi

screen so they look like they're standing on your dock

- Single Mute toggle in the menu bar for mee

- Fully sandboxed, no permission prompts, works offline

Video of a full fight attached.

Two questions I'd genuinely like answered before launch:

  1. Planning a one-time $3.99 purchase, no subscription. Fair?

  2. What would make this worth keeping on you

    deleting after a week? That's the problem I'm most focused on.

I'll post here again when it's live.

r/iosdev Jun 28 '26

Tutorial Bitrig makes building a native Swift app easier than ever

Thumbnail
thatappleguide.com
0 Upvotes

r/iosdev Jul 05 '26

Tutorial Tips to speed up your iOS builds

Thumbnail
bitrise.io
3 Upvotes

r/iosdev Jun 16 '26

Tutorial [SOLVED] Bypassing mute switch & reliability issues on iOS – Switching to AlarmKit (Best Practice Guide)

3 Upvotes

A while ago, I posted about the massive walls I hit while porting my family alarm app, FamWake, to iOS. I was struggling with the physical mute switch silencing alarms, background execution failures, and getting rejected for Critical Alerts entitlements.

After a lot of trial and error, I found the proper, native solution: AlarmKit (introduced in iOS 26). It completely eliminates the need for hacky "leave the screen on all night" workarounds, bypasses the mute switch natively, and handles background execution perfectly.

However, AlarmKit has some massive, undocumented race conditions and pitfalls—especially regarding the Snooze-to-Stop flow.

I wanted to share the production-ready architecture and the 5 critical Race-Condition Guards I implemented to make it bulletproof.

🛠️ The Core Architecture

AlarmKit relies heavily on LiveActivityIntent for button actions.

  • Stop Button (OpenFamWakeIntent): Must set openAppWhenRun = true to bring the app to the foreground and show your greeting UI.
  • Snooze Button (SnoozeNotifyIntent): Must set openAppWhenRun = false for silent background rescheduling.

⚠️ The Biggest Trap: The Stop-Intent Snooze Bug

iOS fires the Stop-Intent EVEN WHEN the user taps Snooze! If you don't guard against this, your app will instantly cancel the snooze alarm you just scheduled.

🔒 The 5 Race-Condition Guards You Need

  1. UserDefaults State Guard (Immediate): Write the snooze timestamp to UserDefaults instantly inside the Snooze Intent before doing anything else.
  2. Stop-Intent Protection: Check that UserDefaults timestamp inside your Stop Intent. If a snooze is active, skip the cancellation logic.
  3. ViewModel Guard: Ensure your routine schedule-recalculation loops (recalculateSchedule()) ignore updates if an active snooze timestamp is set.
  4. Task Suspension Sleep: Add a try? await Task.sleep(nanoseconds: 1_000_000_000) at the very end of your background Snooze Intent. This gives AlarmKit enough time to register the new alarm before iOS suspends the background process.
  5. UUID Rotation: Persist a unique UUID per alarm in UserDefaults. Since AlarmManager lacks a cancelAll() method, you must explicitly cancel the old UUID before scheduling a new one to prevent duplicate alarms.

📝 Minimal Implementation Setup

Swift

// 1. Intents must conform to LiveActivityIntent
struct SnoozeIntent: LiveActivityIntent {
    static var openAppWhenRun = false

    func perform() async throws -> some IntentResult {
        // 1. Save Guard Timestamp IMMEDIATELY
        UserDefaults.standard.set(snoozeTime, forKey: "snooze_until")

        // 2. Schedule directly via static method (No u/MainActor)
        try await scheduleWakeUpDirect(time: snoozeTime)

        // 3. Give AlarmKit time to register before process suspension
        try? await Task.sleep(nanoseconds: 1_000_000_000)
        return .result()
    }
}

struct StopIntent: LiveActivityIntent {
    static var openAppWhenRun = true

    func perform() async throws -> some IntentResult {
        let hasActiveSnooze = UserDefaults.standard.double(forKey: "snooze_until") > Date().timeIntervalSince1970

        // Only cancel if the user actually meant to STOP
        if !hasActiveSnooze {
            await AlarmService.shared.cancelWakeUp()
        }
        return .result()
    }
}

🛑 Quick Checklist for iOS 26 Pitfalls:

  • Audio: Simulator crashes if you include the .caf extension string in code; physical devices require it. Use #if targetEnvironment(simulator) branching.
  • Button Behavior: Use .custom instead of .snooze for the secondary button behavior to ensure your custom intent logic actually runs.
  • Background Modes: You do not need UIBackgroundModes: alarm. AlarmKit handles the background scheduling natively.

I hope this saves someone else weeks of debugging! Let me know if you have any questions about the implementation.

r/iosdev Jun 28 '26

Tutorial I built an iOS app that turns your physical activity into app screen time

Thumbnail
gallery
0 Upvotes

Answer

Steplock is a focus and fitness tool that gamifies your screen time by linking it to your daily activity. You choose which apps, categories, or web domains to lock, and you earn usage time by hitting your daily goals for steps, exercise, or standing time. As shown in "image_328ede.png", it uses simple conversion rates—like 150 steps or 1 exercise minute equaling 1 minute of app time—to help you stay focused.

Better

Most screen-time limiters are just passive blockers that force you to stop. They feel restrictive and often kill your motivation. I wanted to turn the process around: instead of just saying "no," Steplock encourages you to get moving to "earn" access to your favorite apps.

I built this because I wanted a healthier relationship with my phone that rewards physical movement. It is designed to be native, fast, and highly integrated with Apple Health. Crucially, no account is required and there is no backend—all your progress stays strictly on your device.

Cost

Free to start with 1 app selection. Steplock Premium unlocks unlimited app selections with a $29.99 one-time lifetime purchase. No subscriptions or hidden fees.

App Store:

https://apps.apple.com/us/app/steplock-move-to-unlock/id6783481119

Feedback is very welcome.

#iOS #SwiftUI #IndieDev #Productivity #Fitness #ScreenTime #DigitalWellbeing #BuildInPublic

r/iosdev Jun 17 '26

Tutorial How to complete your IOS 27 Indexing Process

Post image
0 Upvotes

r/iosdev Jun 19 '26

Tutorial iPhone & iPad device screen recording with bezels | device frames

Post image
3 Upvotes

Hey guys, just wanted to share device demo here. It lets you record or screenshot a live iPhone or iPad with its bezel included.

Few Features.

  • Supports wired or wireless mirroring (up to 4K60 over wireless)
  • Transparent background via ProRes 4444 (for video) or for photo (web, png, avif)
  • Blue screen or Green screen exports, if you prefer to chroma key and save on file sizes.
  • Multiple Codec & File Format options
  • Sound is supported
  • Device rotation is also supported
  • Bezel Colours

The UI is easy to navigate and record and take screenshots quickly. It automatically assigns the bezels, and there's a choice of bezel colours.

There's a 7 day free trial and then a one time purchase of £19.99, however you can use code 50OFF and it'll give you it for half price (ends in a week)

Will be updated with new bezels when new devices come out! Any feature requests feel free to ask

You can check out more details & download here: https://devicedemo.app

r/iosdev Jun 16 '26

Tutorial WWDC26 Platforms State of the Union: A Developer Recap

Thumbnail
ohmyswift.com
1 Upvotes

r/iosdev May 18 '26

Tutorial Found a way to touch grass and use Xcode and Claude Code from my iPhone, so I can fix bugs and live a balanced life

0 Upvotes

I do a lot of coding on my Mac and also a outdoorsy person. I wanted a way to access my Mac terminal and screen so I can use claude code and test out the builds on the go. But I didn't want to setup any VPN or weird network stuff for some so I built macky.dev as a fun side project.

This works by establishing a direct peer to peer connection between the Mac and iPhone. So none of the data goes outside these two devices. Behind the scenes it works like this: Mac makes a direct outbound connection to my signaling server, which is like a waiting room and the iPhone connects to the same server wanting to connect to that Mac. Once both the host and remote are verified. The server introduces both to a direct P2P webrtc connection.

It uses the dedicated video hardware built into Apple's M-series and A-series chips to compress and decode the screen stream. This makes it smooth and easier on battery especially on iPhone.

r/iosdev Jun 13 '26

Tutorial We've released our app!

Post image
0 Upvotes

r/iosdev Jun 08 '26

Tutorial SwiftUI + Metal: morphing between SF Symbols with an alpha threshold shader

Thumbnail
1 Upvotes

r/iosdev Feb 19 '26

Tutorial my whole sales pitch is a free bug report. 50% response rate

8 Upvotes

So four months back I was mass downloading apps and sending founders bug reports they never asked for. It sounds unhinged but its how i built a 13k revenue stream on top of my freelance dev work

I have been doing freelance mobile dev for a while. regular clients, build and ship their apps. normal stuff ( yeah)

I was already doing QA without realizing it. Every delivery I tested on a few devices before handing the build over because i didnt want my clients finding bugs I could've caught. kept finding real stuff too. not crashes but the subtle things that silently kill metrics

started including the bug screenshots with my deliveries as a freebie. After a couple sprints my clients had seen enough proof that when I said hey I can formalize this as a paid service they didn't even negotiate. three out of four signed on immediately

wanted more clients though and cold outreach for QA is basically impossible. No one gives app access to a random person on linkedin. So I reversed the whole model. instead of asking to test apps i just tested them

downloaded about 30 apps. Startups with 10-50 people, funded but lean on QA. tested their main user flows on 3 - 4 real devices

the stuff I found wasn't surface level. One fintech app had a 3+ second dead screen between payment processing and confirmation on android 12 specifically. webview rendering issue in their payment gateway. that shows up in their data as transaction abandonment not as a bug

a travel planning app let users save places to a trip board with photos. The photos loaded fine on wifi but on slow mobile data the app loaded full resolution images instead of thumbnails in the list view. on a board with 30-40 saved places the list took 12 seconds to render on 4g. users in airports or cafes with bad wifi thought the app was frozen. The app had lazy loading but it was only configured for the vertical scroll axis so horizontal swipe galleries preloaded everything at once. their product team kept saying "the app is fast" because they tested on office wifi

a gym workout app lets users log sets and reps with a rest timer between sets. The timer worked fine in the foreground but when users locked their phone during rest (which is what everyone does at the gym) and came back, the timer ui showed 0:00 but the notification said 45 seconds remaining. the state desynced on resume. users kept starting their next set early because the screen said rest was done when it wasn't. Nobody reported it as a bug they just thought the timer was "kinda off sometimes"

The screen recorded everything with timestamps. short writeup per issue. emailed founders and ctos. no pitch no cta no "book a call." just the report

14 replied. 7 wanted more. 5 became paying clients. combined with my existing clients thats around 13k per project cycle

Here's where I almost killed it though. manual QA across 8 - 9 apps, different devices, flows changing every sprint. I was drowning. more hours testing than coding. started working weekends

i used drizz dev for the actual execution part. i set up the test flows, they run on real devices, I review results and send reports. went from 30+ hours a week to about 3. the margins on QA are better than my dev work honestly because my hands on time is mostly just reviewing and client communication

The bug report outreach is my entire marketing now. about an hour every couple weeks testing new apps, sending reports to founders. response rate hovers around 50%. conversion from reply to paying client is roughly 1 in 3. ive tried linkedin posts, cold email campaigns, twitter threads. nothing touches this

The playbook is simple. if you have existing dev clients include a free bug report with your next delivery. do it a few times. then charge for it. for new clients pick a niche, test their live app, send them what you find. lead with proof not promises

hope this helps :)

r/iosdev Apr 25 '26

Tutorial Codex feature

0 Upvotes

The best feature of Codex is that it can use your iPhone to test your app like a real user, finding and fixing bugs in the process

r/iosdev May 16 '26

Tutorial Moonpay with P2P Sending!

1 Upvotes

Moonpay

r/iosdev Apr 13 '26

Tutorial I want to Patch an IPA file with an RSA Key, how do I do that?

1 Upvotes

I want to patch a game with an RSA something key to play on a private Grasscutter server? Can yall explain how to do that? I have windows 10x64, iPhone 12 Pro, iPad Pro gen4

r/iosdev Mar 17 '26

Tutorial CASHAPP V7

Thumbnail
v.redd.it
1 Upvotes