
Swift 6.4 arrives with a set of language refinements and standard library additions that make everyday code cleaner and more expressive. This article walks through the most notable changes from WWDC26.
When you embed web content in a WKWebView, you often want it to stay on a set of trusted domains. A login flow that wanders off to an arbitrary site, or a help page that turns into an open browser, is both a security and a product problem. There are two ways to control this. One is declarative, handed to WebKit through your Info.plist. The other lives in your navigation code, where you decide each request yourself.
iOS 18 introduced interactive controls that live directly in Control Center and on the Lock Screen. Unlike widgets that only display information, control widgets respond to taps, letting users trigger actions without opening the app. A ControlWidgetToggle is the simplest form: it represents a boolean state and fires an AppIntent when the user taps it.
This article walks through building a Focus Session toggle. Tapping it starts or ends a focus block, and the control reflects the current state each time the user opens Control Center.
Text recognition using Apple's Vision framework. The article compares the old API (VNRecognizeTextRequest with VNImageRequestHandler, synchronous perform, completion handlers) and the modern API introduced in iOS 18 and macOS 15 (RecognizeTextRequest, Swift native, Sendable, async/await). The modern version is cleaner: configure the request as a value type, call try await request.perform(on: image), get observations, extract top candidates. The article also covers recognition levels (.accurate vs .fast), language detection (automatic or manual), multi line documents, and the newer RecognizeDocumentsRequest for paragraphs instead of lines.
Two keywords that turn actor isolation from a wall into a precision tool. nonisolated opts a member out of isolation (useful for computed properties that read only constants, and for fixing delegate crashes from CLLocationManager and similar). isolated on a function parameter makes the function run directly on whatever actor you pass in. transaction closure pattern with isolated parameter lets you group multiple operations without multiple suspension points. #isolation captures caller isolation automatically. nonisolated(unsafe) is a migration escape hatch for legacy globals. isolated deinit in Swift 6.2. And the shift from nonisolated async always hopping away to nonisolated(nonsending) vs @concurrent.
Khoa Pham is a Senior iOS and Web Developer at DNB in Oslo, Norway, where he works on Mobilbank and Spare. He has been developing iOS apps since 2016, formerly at Shortcut AS working on the Cutters app, and at Hyper Interaktiv AS where he built apps including Cubus Friends, BikBok Life, Atea Community, TINE Handel, Displom Is Bilen, Motimate, MyCubus, and TINE Jakten. He also built the Grete Roede app using React Native. Khoa contributes to open source and shares his knowledge on his website onmyway133.com. His philosophy is simple: what you don't know is what you haven't learned.
Join the Mobile Signal Talent Directory and make your profile visible to hiring teams searching for iOS talent.