App Tracking Transparency in SwiftUI
A practical guide to App Tracking Transparency in iOS, covering the Info.plist usage description, the ATTrackingManager API, authorization statuses, and when to actually prompt the user from SwiftUI.
// Swift and SwiftUI tutorials, Objective-C archaeology, React Native survival guides, AI experiments, and other rabbit holes I fall into.
Requires iOS 26.0+
Explore the cutting-edge APIs introduced in iOS 26. StoreKit enhancements, new SwiftUI modifiers, and the latest platform capabilities. Stay ahead with tutorials on brand-new features.
Build beautiful, declarative UIs for iOS 13+ with SwiftUI. Master views, state management, and cross-platform development.
Learn powerful UIKit patterns for iOS apps. Integrate with SwiftUI or build traditional view controller-based applications.
Master Swift fundamentals, best practices, and advanced language features for writing clean, efficient code.
Create immersive spatial computing experiences for Apple Vision Pro
Build health apps, complications, and watch faces for Apple Watch
Develop native desktop applications with AppKit and SwiftUI
Share code across iOS, iPadOS, macOS, and more
Master debugging tools, write effective tests, and troubleshoot issues efficiently
Build intuitive forms with TextFields, validation, and smart keyboard handling
Control data flow with @State, @Binding, @Observable, and Environment patterns
Implement sheets, modals, NavigationStack, and complex navigation flows
Boost productivity with Xcode features, shortcuts, and advanced workflows
Fast solutions to common problems - get unstuck quickly with focused answers
A practical guide to App Tracking Transparency in iOS, covering the Info.plist usage description, the ATTrackingManager API, authorization statuses, and when to actually prompt the user from SwiftUI.
Continuations bridge completion-handler APIs into async/await. The checked variant catches the two ways you can get it wrong, and the unsafe one trusts you completely.
SE-0491 introduces the :: operator to disambiguate names that come from different modules. Here is when you actually need it and the gotchas worth knowing.
Swift 6's data-race safety is real, but it has blind spots. Here are the places the compiler can't see, and how to stop treating a clean build as proof your code is thread safe.
OSAllocatedUnfairLock wraps os_unfair_lock with a closure-based API that makes it impossible to forget to unlock and keeps the lock's storage alive for as long as you need it.
If your React Native build started failing after upgrading to Xcode 26.4 with a consteval error from the fmt library, here's a targeted Podfile fix that gets you back up and running.
Get notified when I publish new tutorials on Swift, SwiftUI, and iOS development. No spam, unsubscribe anytime.