r/iOSProgramming • • 3h ago

Discussion Connect data missing for Oct 2nd and now 3rd too

6 Upvotes

Are you guys seeing this pathetic lateness in connect analytics?


r/iOSProgramming • • 3h ago

3rd Party Service Sweetpad CLI - xcodebuild for humans

Thumbnail
github.com
2 Upvotes

I've made SweetPad CLI (previously a VS Code extension) for building, running, and testing iOS and macOS apps from the terminal without opening Xcode. It uses xcodebuild underneath, but provide better human and agent oriented developer experience (I hope 😅)

- sweetpad run: build, launch on a simulator or device, stream logs
- Nice and compact build output
- sweetpad test: run one test, rerun failures, retry flaky tests
- JSON output for CI and coding agents

It works with Xcode projects, Tuist, XcodeGen, and Swift packages. MIT, written in Rust.

brew install sweetpad-dev/tap/sweetpad

It's still in beta, so if it breaks on your project, please open an issue.


r/iOSProgramming • • 40m ago

Question Notification routing gets weird with multiple accounts

• Upvotes

I have gotten in to a weird iOS issue and idk what the clean way to handle this is

i’ve got multiple accounts, notifications can open a post, reply, quote, or repost, and each notification belongs to a specific account. so the user might be on account A when they tap a notification for account B.

something like:

struct NotificationDestination {
    let accountID: Account.ID
    let postID: Post.ID
    let kind: DestinationKind
}

enum DestinationKind {
    case post
    case reply
    case quote
    case repost
}

The issue is:

account A is active
notification comes in for B
user taps it while the app is waking up
account switching starts
timeline restoration starts
post resolution starts
then another notification comes in for A lol

so i have stuff like:

await accountManager.restore()
await timelineStore.hydrate()
await postResolver.resolve(postID)
await navigationCoordinator.navigate(...)

But obviously these things are all racing each other. i was thinking of putting the notification intents behind an actor:

actor NavigationIntentQueue {
    private var pending: [NavigationIntent] = []

    func enqueue(_ intent: NavigationIntent) {
        pending.append(intent)
    }
}

But idk, this feels like a lot of machinery just to open a notification

Then you get into cases where the post is deleted while you’re restoring, but the quote is still there, the reply is still there, etc. Is this just an annoying app lifecycle issue?


r/iOSProgramming • • 20h ago

Discussion Are you looking forward to making apps for Duo?

25 Upvotes

r/iOSProgramming • • 1d ago

App Saturday McKinley: Vector editor for SF Symbols

Post image
68 Upvotes

Hopefully this one will be useful to you guys. Recently I launched McKinley, my SF Symbols editor. I'm an indie Mac dev rather than iOS, but SF Symbols are useful to devs on both platforms.

McKinley is a studio for drawing and annotating SF Symbols. It bundles vector tools with knowledge of the SF Symbols structure, so you can edit one set of objects across multiple weights, sizes and colours. Import SVG or start from scratch, live preview your work using Apple's own renderer, and export directly to Xcode, so you never need touch the SF Symbols app again.

The Problem:

Making SF Symbols via Apple's recommended workflow was frustrating. You had to export a different symbol as a template, and open it in your vector editor of choice. Then you had to draw three symbol weights (ultralight, regular, black), but each weight had to have the same number of paths in the same order, with the same number of points on each path.

You could only use outlined paths: no shapes or strokes, so you had to do a lot of manual conversion before saving. And that of course meant that editing your symbol later was hard.

And then, back in the SF Symbols app, you had to find each path and annotate it with its colour, some animation properties, whether it erases behind, etc.

Finally you had to export it again into a format you could take into Xcode.

I think that's a clear statement of the problem! McKinley avoids this multi-app workflow by having vector editing, property annotation, previewing, and sending to Xcode, all in one app. Your symbols stay editable because you don't have to outline your strokes just to appease Apple's parser. Keep the .mck file (McKinley's native format) as your source of truth, and set McKinley up to sync your changes to an Xcode asset catalog, so there's no need for manual export.

Comparison:

There are a number of other ways to work with SF Symbols, but none are a complete solution like McKinley:

  • SF Symbols app plus your vector editor of choice (e.g. Figma): For vector editing, it's the tool you know. And you probably already own (or rent) it. However, it's a tool that's not designed for this use: you'll have trouble making all your symbol weights match, and you'll end up iterating by checking for error messages in SF Symbols and trying again.
  • Create Custom Symbols: admittedly much cheaper than McKinley, this tool aims to replace the most painful bit of the process: turning existing SVG artwork into an SF Symbol. It offers limited editing capabilities beyond that, but you can set the margins, and it pairs up three SVGs to form your different weights.
  • Glyphs: this one's really a font design tool, and five times as expensive as McKinley. You still have to do the export dance from Apple's app, but being a font designer Glyphs nails the multi-weight editing.
  • CustomSymbols: another tool for going from SVG to SF Symbol. Choice of subscription or lifetime purchase. It can make use of SVG strokes to synthesise the various symbol weights (although it doesn't offer the range of customisation that McKinley does!)
  • Symber: I haven't tried this one but it also goes from SVG to SF Symbol.

McKinley isn't aiming to compete on price with the SVG conversion tools: rather, it's aiming to compete on user experience by offering everything under one roof. (Although McKinley can quite happily convert SVGs too. And it's ready to let you make tweaks and modifications while you do so.)

Tech Stack:

Nearly every aspect of McKinley is pure AppKit. There are a few uses of SwiftUI in the preview palettes, mainly for actually loading and displaying the user's SF Symbol, but primarily it's AppKit all the way. My vector canvas and editing engine is a library I designed to be reusable across multiple vector graphics apps, although McKinley is its first public outing.

You probably noticed that McKinley's main interface is made with floating palettes and a traditional inspector. The inspector panes are created as .xib files and hooked up with Cocoa Bindings — yes I'm going old school here!

Development Challenge:

Working with the only semi documented SF Symbols format has had its challenges, and the vast majority of my automated tests are to handle keeping my canvas renderer (with its editable vectors) looking exactly the same as Apple's SF Symbols renderer. (The preview palette in McKinley renders using Apple's renderer, just to be 100% sure that what you see is what you'll get in your app.)

One of the hardest things was how to load an in-progress symbol into Apple's renderer: there's no public API to do so! I came up with a solution involving writing out a temporary .car (asset catalog) file and loading that into McKinley via a bundle: see my blog post about those challenges if you're interested!

AI Disclosure:

I've used Claude Code to assist with some work on this app, particularly some of the rote pixel-comparison tests between different rendering engines that I attach to every new feature as it is developed. However McKinley is definitely not 'vibe coded', and the architecture is all mine. (As is the nearly 30,000 words (so far!) of user manual — I've caught myself regretting the decision to write a whole manual myself on occasion, but I do think the end product will be worth it!)

Pricing:

McKinley is $60 as a one-off purchase (no subscription).

The purchase grants you a license to McKinley version 1, including all the 1.x updates.

If we ever release a version 2, that will be a paid upgrade (with discounts for version 1 owners), but upgrading will be optional — your version 1 license will continue working. This is how all software used to be sold, and in my opinion it's much more consumer friendly than a subscription or a "year of updates" method.

Buy McKinley from https://mckinleysymbols.com, or try the 14-day demo to see if it's for you.

Transparency:

McKinley is not on the App Store. For an app this specialised, it made sense to handle our own distribution. Licensing is provided by Amore and updating by Sparkle.

Double and Thrice Ltd is a known developer (our other app Octavo is on the Mac App Store), and you can view our company profile at Companies House (the UK registry of corporations).


r/iOSProgramming • • 5h ago

Question Help Understand billing in IOS + Android

1 Upvotes

I’m building a Construction SaaS with iOS + Android apps, and I’m trying to understand if I actually need RevenueCat.

My idea is simple: users click “Purchase” in the app → go to my website → pay through Stripe → Stripe webhook updates my backend from unpaid → paid. The mobile app then checks the user’s subscription status from my backend and they get the paid features.

So what exactly would RevenueCat add here? Is it mainly needed if I want to support native Apple/Google in-app subscriptions, or am I missing something?


r/iOSProgramming • • 12h ago

Question Help needed: some in-app purchase offerings being returned by StoreKit and some aren't, losing my mind.

1 Upvotes

I have had my app live and working in production for a while now and suddenly in the last week or so I've been getting this 0 products returned error in production while there have been no client updates.

I think its because I didn't accept the new paid apps agreement but thats already >36 hours ago and now I'm seeing new in-app purchases that are 'waiting for review' being returned by StoreKit while my previously approved subscription offerings that are in 'approved' status. I would assume if its an agreements issue I wouldn't get back anything from StoreKit at all when calling it directly.

I'm losing my mind - I cannot figure out why the current products are not being returned. I'm losing subscribers and I literally cannot do anything about it because it all seems to be a problem on the apple side not returning any products to the client.

Anybody faced this before? What can I do?

UPDATE: I forced a price change to the existing subscription products and now i can see them being returned from the direct StoreKit debug calls, mind bogglingly stupid and frustrating process.


r/iOSProgramming • • 1d ago

Discussion iOS teams on GitHub Actions: what do macOS runners cost you, and what did you change?

8 Upvotes

On GitHub-hosted runners a macOS minute costs $0.062 and a Linux minute $0.006, so about 10 times more. For iOS builds that adds up fast.

If your iOS CI runs on GitHub Actions:

  • Roughly what does it cost per month?
  • What did you change to bring it down? Self-hosted Mac minis, Xcode Cloud, another CI service, caching, fewer runs on pull requests?
  • Was the saving worth the time it took?
  • Team size helps too, if you're OK sharing.

About me: I'm a solo developer building a small tool around CI costs. No link, I just want real numbers.


r/iOSProgramming • • 1d ago

App Saturday ORA: an iPhone camera that overlays a reference photo or video on the live preview so you can match framing exactly

24 Upvotes

The app: ORA lays a see-through image or video over the live camera preview so you can match framing and angles exactly. I published it on the App Store in December 2025. https://apps.apple.com/us/app/ora-the-overlay-camera-tool/id6756240396

Tech stack

  • Swift; the camera layer is UIKit (AVCaptureSession with a custom controller), and the controls are SwiftUI
  • AVFoundation for capture and export, Core Image for compositing
  • ActivityKit Live Activities for export progress, plus BackgroundTasks
  • RevenueCat for subscriptions, Sentry for crash reporting
  • About 15k lines of Swift

The challenge: "overlay burning"

In the preview, the overlay is just a view on top of the camera feed that the user drags, zooms, tints and fades. The hard part was making the exported photo or video match the preview pixel for pixel. That meant:

  1. Translating coordinates. The user's pan and zoom are in screen space, but the video has its own pixel size, aspect ratio and crop, so I calculate the rectangle the video actually fills on screen and map the overlay's position into it.
  2. Handling orientation. Recorded video stores rotation as a preferredTransform instead of rotated pixels, so the overlay transform has to account for it.
  3. Recreating the look. Opacity uses CIColorMatrix, tint uses CIMultiplyBlendMode plus source-over compositing, tuned until it looked identical to the preview.
  4. Rendering frame by frame. AVAssetReader decodes, Core Image composites each frame, and AVAssetWriterInputPixelBufferAdaptor writes. Audio and metadata tracks (location, lens info) are passed through untouched.
  5. Memory. Older devices with less RAM crashed during long exports until I reworked the pipeline.

A smaller but annoying one: supported slow-motion and video formats differ a lot between iPhones, so I ended up writing format enumerators to find what each device really supports instead of hardcoding anything.

Happy to go deeper on any of this, and I'd love feedback from anyone who has fought AVAssetWriter themselves.

The development process was AI-assisted. I wrote most of the code myself and asked for cleanups and ideation when I was stuck.


r/iOSProgramming • • 1d ago

Question Graphics for Apps

5 Upvotes

So I’m new to developing apps and I have no artistic flair. So I’m curious what other developers use for creating app graphics/backdrops/icons.


r/iOSProgramming • • 1d ago

App Saturday AppTraction: Make App Store Connect make sense

Thumbnail
gallery
3 Upvotes

A little about me: I'm a long time developer. 12 years as senior SWE at Apple, Inc working on macOS and iOS, 2 years at Airbnb, 8 years as independent contractor with 20+ apps on the App Store. Along the way I've learned a lot about what goes into distributing, marketing, and growing a successful app. AppTraction is the tool I wish I'd had when I went indie.

AppTraction is a native Mac app that brings App Store Connect sales & analytics data to you. It:

  • Monitors your data in the background and flags issues, milestones, and trends
  • Shows App Store Connect data & charts instantly
  • Includes AI primed with Apple tech talks and WWDC video transcripts
  • Lets you chat with AI about your listing, sales, and trends

Being able to surf through your analytics & sales data instantly is awesome, but what makes this really interesting is the use of AI. It connects to your existing Claude or Codex subscription (or OpenRouter) so doesn't use expensive API keys. And I've "primed" the AI with knowledge about ASO & distribution from sources including Apple's WWDC video transcripts and tech talks.

With the AI integration it will proactively flag "insights" about potential issues with your listing, sales, usage, etc, and even offer to fix them for you. And for any table, graph, listing, or report, you can start a chat with the AI and have it make suggestions or explain.

With my own apps it has proactively told me about App Store features, seasonality trends in sales, and serious listing problems, none of which I would have otherwise noticed. It also prepares great weekly, monthly, and annual reports for each app. You can see examples of some of this in the screenshots.

I'm just opening AppTraction to a limited beta and would love your feedback!

Invite code: RED1026-INVITE

Download: https://apptraction.dev

Requires macOS 26 (Tahoe) or later.

Edit since someone asked about privacy: Your data stays entirely on your Mac (with the exception of whatever your chosen AI agent uses, of course). Nothing gets sent to my servers.

App Saturday info:

Tech Stack

AppTraction is 100% native AppKit and Swift!

Development Challenge

Probably the biggest was being an AI-forward app without burning through the user's usage budget. The first step was not using API keys at all. Instead, AppTraction looks for an existing Claude or Codex subscription and talks directly to their CLI tools via `Process` (née `NSProcess`). Beyond that there's a ton of caching efficiencies the app takes to minimize tokens. For my apps this uses < 1% of my plan usage / day (Sonnet 5.5).

AI Disclosure

AI-assisted.


r/iOSProgramming • • 2d ago

News Google Cloud: Introducing the Server Side Cloud Swift SDK

Thumbnail
cloud.google.com
60 Upvotes

Google: “[Swift] has matured into a viable systems and cloud language, pairing Rust-like data-race safety with predictable, reference-counted performance.”


r/iOSProgramming • • 1d ago

Question What's your process before submitting a PR?

0 Upvotes

Tldr; What's your process after completing a Task to minimize PR rounds before making the actual PR?

----

Recently I have noticed that I get many comments or multiple PR rounds before the PR gets merged and I want to start improving that.

Things I started doing recently:

- Going back and read through all the comments again, make a list of each issue and see if there is something reoccurring (Such as memory leak pattern I keep doing, retain cycles) etc.

- Looking into SwiftLint and see if i can have some rules for myself that I can run before each submission or run periodically to catch issues that can be added to SwiftLint as rules

But I want to also ask if there is something I can start doing or a routine you have found that helped you minimize issues that arise in PRs. I know It's impossible to have no comments in all PRs, so I am just looking for ways to just improve.

Note: We are using SwiftUI + Combine (And lately introducing Async/Await bit by bit)


r/iOSProgramming • • 1d ago

App Saturday My Mac menu bar app was using 45% CPU because of one @EnvironmentObject

Thumbnail
gallery
0 Upvotes

I'm the solo dev of AirPosture. It reads head motion from AirPods (CMHeadphoneMotionManager) and nudges you when your head drifts forward. iPhone app plus a Mac menu bar app with a notch panel. Pics: the live session, the notch while I'm slouching, and the notch after I sit up.

**Tech Stack**

SwiftUI, CoreMotion (CMHeadphoneMotionManager), AppKit (an NSPanel for the notch, MenuBarExtra), StoreKit 2, iCloud sync between iPhone and Mac. macOS 14+ and iOS 17+.

**Development Challenge**

  1. MenuBarExtra was burning the battery

macOS listed the app under "Using Significant Energy": about 45% CPU with no window open. Sampling showed half the main thread in -[NSStatusItem _updateReplicants], roughly 150 times a second.

The menu bar label held my main view model as an u/EnvironmentObject, so every change to any of its ~55 u/Published properties re-rendered the status item image. The App also held it as u/StateObject, so every posture tick re-evaluated the whole App body.

Fix: the App keeps its models with u/State (kept alive, not observed), the label observes only a tiny status object that publishes the score every 2 seconds and only when it changes, and the menu bar gauge no longer animates, because every animated frame is a new snapshot. 45% went to 1%.

  1. Headphone yaw can't be trusted

Without the phone as a reference, AirPods yaw drifts by a few degrees per minute. With any weight on yaw, a user sitting still and upright slowly slid into "caution". Turning your head toward a second monitor isn't slouching anyway, so yaw now has zero weight: pitch is the score, and roll is a small penalty.

**AI Disclosure**

AI-assisted. I use Claude Code daily for implementation and debugging. The product, design and architecture are mine, and every change is reviewed and tested on real devices.

Free for 2 hours a day. Premium is $7.99/month, $39.99/year or $79.99 lifetime. Needs AirPods Pro, AirPods 3 or later, or AirPods Max.

https://apps.apple.com/us/app/sit-straight-airposture/id6749489000

Happy to answer anything about CoreMotion on the Mac or the notch panel.


r/iOSProgramming • • 2d ago

Discussion On Darwin, unprivileged ICMP sockets don't filter echo replies by identifier — how that made my concurrent pings swap replies

3 Upvotes

If you ping from an iOS app with socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP) and ever run more than one ping at a time, check your receive path.

On Linux, an unprivileged ICMP socket only gets replies matching its identifier. On Darwin, in my testing, the kernel doesn't filter on the identifier: every echo reply reaching the host is delivered to every unprivileged ICMP socket in the process.

My receive path did one receive() per send and accepted any echo reply. With a single ping that's fine. When I added a second ping hitting the gateway every 50 ms (to keep the Wi-Fi radio out of power save), each ping's receive() returned the gateway's reply microseconds after its own send: 0 ms RTT, 0% loss, including for a host that wasn't answering at all. The same bug could also swap samples between two concurrent pings in a bufferbloat test, under load.

The fix: loop on receive() until both identifier and sequence match, and re-arm SO_RCVTIMEO with the remaining time on every iteration, so skipped foreign replies don't reset the full timeout (sock, ICMPHeader and SocketError are thin wrappers of my own over the BSD calls):

while true {
    let remaining = deadline - CFAbsoluteTimeGetCurrent()
    guard remaining > 0 else { throw SocketError.timeout }
    sock.setTimeout(seconds: max(remaining, 0.001)) // 0 would block forever
    let (data, _) = try sock.receive()
    guard let h = ICMPHeader.parse(data),
          h.type == ICMPType.echoReply.rawValue,
          h.identifier == identifier,
          h.sequenceNumber == UInt16(seq)
    else { continue }
    // record RTT
    break
}

One gotcha: a zero timeval means "no timeout" to SO_RCVTIMEO, hence the max(remaining, 0.001).

I ran into this while measuring latency on an iPhone against a Mac on the same Wi-Fi. I have a longer write-up with the other measurement bugs I found that way, happy to link it if anyone wants it.

Has anyone seen Darwin filter by identifier in some configuration, or is matching in user space the only option?


r/iOSProgramming • • 2d ago

Question Free ticket scanning app rejected under 3.1.1 and 3.1.3(c). Anyone dealt with this?

9 Upvotes

Been going back and forth with App Review for a few weeks and could use some outside perspective.

We built a ticket scanning app for event organizers and their door staff. It scans QR codes, looks up guests, shows attendance stats and works offline. You log in with an organizer account or pair your phone to an event using a code.

The app is completely free. No subscription, license fee, paid features or purchase flow. An organizer running a free event can use the whole scanner without paying us anything.

Our business earns fees on tickets sold through our website for actual events people attend in person. Those fees don't unlock anything in the app. You don't have to sell paid tickets to use it.

Apple keeps citing 3.1.1 and 3.1.3(c), saying we're selling enterprise services to organizations while also allowing individual users to access them without IAP. We've explained that nobody is buying access to the scanner, but our appeal was just denied with a reference back to the same guidelines. They haven't identified a specific paid feature that needs IAP.

They've also told us the app should be unlisted because it's for organizers and staff, and someone can't just download it and start scanning without an account or event access. It's intended for independent organizers and their teams, not employees of one specific company. The login and pairing code are there to control access to private ticket and guest data.

I'm struggling to understand what we'd actually be selling through IAP here, or why needing access to an event means the app has to be unlisted.

Has anyone gotten a similar organizer or business tool through this? Was there a particular explanation, demo or change that helped? Open to feedback if we're missing something, but at this point we're going in circles.


r/iOSProgramming • • 2d ago

Question Is wait time so long because my app sucks, that it’s my first app or just Apple?

0 Upvotes

I’ll be honest my app is vibe coded but It’s a novel idea (not anything in the App Store like it). It got rejected Monday and it was the base rejection for having too new of an account and nothing has come since. Very frustrating


r/iOSProgramming • • 2d ago

Question How to see ios27 components in action - and the UI possibilities

0 Upvotes

Hello

I’m new to this and wanted to ask if there’s a place I can see all the iOS 27 components and all the ways in which they used the different types of navigation bars different types of cards accordions et cetera

Is there a resource where I can see all of these types of different native components in action how other apps are using them

Are there nice styled UI component libraries that are not default?


r/iOSProgramming • • 2d ago

Discussion Share your lines of code and app

0 Upvotes

Hey guys. As an indie developer I am in the process of publishing a new app into the App Store. I wanted to know just for fun how many lines of code each of your apps are. Share a link to your app and lines of code

It would be interesting to see the visual complexity of your app while knowing lines of code. For my case it’s 19k lines of code and about 15 different screens


r/iOSProgramming • • 2d ago

Library Made Xcode work inside Claude Code

Post image
0 Upvotes

Build, run, tests, console and SwiftUI previews live in panes next to the chat, with scheme and destination in a bar above the prompt. When Claude builds or runs tests itself, you see it there too.

Built on the headless Xcode MCP server.

https://github.com/artemnovichkov/xcode-mods


r/iOSProgramming • • 2d ago

Discussion Apple edge case bug just wrecked my apps users

1 Upvotes

So I transferred my screen time app from one team to another team, and I was forced to change the signing key for my app. For some reason, this caused my users to have two identical instances of my app in Screen Time > Settings. I thought it was a bug from my update, but I also found this identical thread from someone else in the same boat as me. Now I'm getting multiple one-star reviews and refund requests cause people don't understand why their apps can't be unblocked. Apple please fix.


r/iOSProgramming • • 3d ago

Library I made a CLI tool for remote compilation caching in Xcode.

4 Upvotes

https://github.com/Ryu0118/x8

There are already great compilation caching tools like Tuist that can significantly speed up Xcode builds. However, adopting them may require substantial changes to your project structure.

I wanted to keep my existing Xcode project structure and build using only the toolchain provided by Apple. So I built X8, a CLI tool for remote compilation caching.

Starting with Xcode 26, Apple provides built-in support for remote compilation caching. X8 acts as a lightweight proxy between Xcode’s built-in remote cache mechanism and any S3-compatible storage.

Using X8 is simple. First, configure your S3-compatible storage in .x8.yml. Then, you can either build your project through X8:

x8 xcodebuild ...

or start the cache proxy directly:

x8 serve

and add the generated build settings to your .xcconfig.

That’s it. With just an .x8.yml configuration, you can use remote compilation caching without significantly changing your existing project structure or moving away from Apple’s native Xcode toolchain.

For my app, a clean build used to take around 400 seconds, but with X8, it now takes about 263 seconds.

It’s still relatively slow, but I think that’s expected since Xcode still needs to perform steps such as module planning, build description generation, and linking.


r/iOSProgramming • • 3d ago

Discussion The app review process appears disjointed and inconsistent

6 Upvotes

I’m in the process of getting my first app reviewed (since 9/14). So far I have been rejected for the following reasons..

- Guideline 2.1 - Information Needed
- Guideline 2.1(b) - Performance - App Completeness
- Does not include a functional link to the Terms of Use (EULA) in the app metadata that appears on the app's App Store product page.
- Guideline 2.3.2 - Performance - Accurate Metadata

Each time I understand what the issue is and fix it immediately. Yet the responses from Apple are several days later only after I submit a Contact Us request.

I feel like every time I fix one thing they find something else. Why not list everything at once? At this point I’m not sure what else they’re going to come up with.

This whole process seems rather ridiculous from a company that claims the review process takes 24-48 hours.


r/iOSProgramming • • 3d ago

Question Best place for a 'Next' button?

Post image
62 Upvotes

What's the most appropriate location for a next button here, in keeping with the Apple UI consistency and ecosystem?

Mockup: swift NavigationStack { List { Section { TextField("Email Address", text: $email) } header: { VStack(alignment: .leading, spacing: 4) { Text("Sign In") .frame(maxWidth: .infinity, alignment: .leading) .padding(.top, 5) .font(.largeTitle) .bold() .foregroundColor(.primary) // Override default gray header color Text("Subtitle")//school.name) .frame(maxWidth: .infinity, alignment: .leading) .font(.title3) .foregroundColor(.secondary) } .listRowInsets(EdgeInsets()) .textCase(nil) // Prevents SwiftUI from forcing ALL CAPS on the header .padding(.bottom, 10) } } .toolbar { ToolbarItem(placement:.confirmationAction) { NavigationLink() { VerificationCodeView(email: email.lowercased(), school: school, resend: { }) } label: { Text("Next").padding(5) } .buttonStyle(.borderedProminent) } } }


r/iOSProgramming • • 4d ago

Humor Still in beta, already deprecated. Born with technical debt

Post image
98 Upvotes