LocalAuthentication in SwiftUI (iOS 26): Face ID and Touch ID Complete Guide
How to add Face ID, Touch ID, and Optic ID to a SwiftUI app on iOS 26 using LocalAuthentication, with LAPolicy tips, LAError handling, and Keychain binding for secrets.
Swift Crafted is where our team works through the rough edges of shipping iOS apps, not the marketing demos. We write for engineers who already know SwiftUI compiles and now need to figure out why their scroll view stutters on an iPhone 12 mini, or why their Liquid Glass tab bar looks fine in the simulator and broken on TestFlight. Every article starts from a real Xcode project, a real Instruments trace, or a real App Store rejection, and ends with code you can paste into your own target.
Apple's new Liquid Glass material system is the biggest visual overhaul since iOS 7, and it breaks more than it advertises. Toolbars, sheets, and tab bars all opt into the new translucency by default the moment you link against the iOS 26 SDK, which means custom backgrounds, hard-coded tint colors, and any view that relied on UIBlurEffect need a second look before you ship. We walk through the actual glassEffect() and backgroundExtensionEffect() modifiers, when to fall back to the legacy material on iOS 18, and how to keep your design system coherent across both.
We also cover the parts Apple's WWDC sessions skipped: how Liquid Glass interacts with Dynamic Type at AX5, why your custom navigation bar suddenly has a 1px hairline again, and the accessibility settings (Reduce Transparency, Increase Contrast) that silently disable the effect for roughly 8% of your users. If you're auditing an app for the iOS 26 submission window, start here.
The SwiftUI 6 renderer rewrote how Observation tracks dependencies, and most of the "best practice" advice from the StateObject era is now actively harmful. Our performance pieces lean hard on Instruments: the SwiftUI template, the new Hangs instrument, and Time Profiler with the main-actor lane filtered in. We show how to read a body re-evaluation chart, when @Observable beats ObservableObject, and why splitting a giant view into smaller ones is sometimes slower, not faster.
Expect concrete numbers. A 60fps List with 10,000 rows is achievable on an A15, but only if you understand identity, equality, and lazy stack diffing. We benchmark common patterns against each other rather than guessing from Twitter threads.
Xcode 26 ships with predictive code completion, on-device model inference for the new intelligence APIs, and a redesigned scheme editor that quietly changed how test plans inherit arguments. Our workflow articles cover the daily-driver stuff: keeping derived data sane on a 512GB MacBook, wiring fastlane match into Xcode Cloud without duplicating signing config, and using swift-format as a build phase without making your CI logs unreadable.
We also dig into Swift Testing (the macro-based replacement for XCTest), how to migrate a mature test suite without rewriting it in a weekend, and the parallelization settings that cut our own CI runs from 14 minutes to under 4.
New articles land most weeks, and the full archive is below. Browse the latest posts, filter by tag for the topics you care about, or jump straight into the Liquid Glass and SwiftUI 6 series if you're mid-migration.
How to add Face ID, Touch ID, and Optic ID to a SwiftUI app on iOS 26 using LocalAuthentication, with LAPolicy tips, LAError handling, and Keychain binding for secrets.
A hands-on guide to SwiftUI KeyframeAnimator in iOS 26: multi-track parametric keyframes, when to reach for it over PhaseAnimator, and how to sync motion with haptics.
Keychain Services is Apple's hardware-backed secure storage API for saving passwords, tokens, and cryptographic keys. This iOS 26 guide covers SecItemAdd, access control, biometric protection with LocalAuthentication, iCloud Keychain sync, and Secure Enclave keys with CryptoKit.
Master the SwiftUI toolbar in iOS 26. ToolbarItem placements, keyboard bars, Liquid Glass styling, VoiceOver, and cross-platform behavior on iPhone, iPad, and Mac.
Learn Swift's ~Copyable types with borrowing, consuming, and the consume operator. Real-world resource wrappers, generics, common pitfalls, and Swift 6 examples.
Master the Combine framework in Swift 6, then migrate the pieces that make sense to async/await and AsyncSequence for cleaner iOS 26 code.
SwiftUI TextRenderer in iOS 26 gives you glyph-, run-, and line-level control over Text drawing. Learn the protocol, three working effects, and the Dynamic Type edges that trip most people up.
A practical guide to Apple's unified logging in Swift for iOS 26: how Logger replaces print, when to use each log level, how privacy annotations protect PII, and how OSLogStore and OSSignposter power in-app diagnostics and performance tracing.
SwiftUI's PhaseAnimator walks a view through ordered animation phases from a single trigger, replacing @State flags and asyncAfter chains. Learn per-phase curves, trigger patterns, and how to combine it with CustomAnimation, plus real-world code for like buttons and toasts.
Profile SwiftUI apps with Xcode Instruments in Xcode 26. A real-device workflow for finding hangs, frame drops, and memory leaks, plus custom signposts with OSSignposter.
Ship real HealthKit features in SwiftUI on iOS 26: async authorization, hourly step buckets, live heart rate as an AsyncSequence, workout builders, and background delivery, with all the Info.plist gotchas laid out.
SwiftUI matchedGeometryEffect morphs a view's frame between two states via a shared @Namespace. Learn the API, spring tuning, and hero animation patterns for iOS 26.
Choose your preferred language to explore our content