
At WWDC 2026, Apple introduced a new tab role for SwiftUI: .prominent.
The API is straightforward.
The design implications are not.
Ever since the announcement, I've notice developers will immediately treat .prominent as a replacement for floating action buttons, toolbar actions, and the classic "+" button.
I think that's the biggest mistake developers will make with this new API.
The prominent tab is not Apple's version of a Floating Action Button.
It is not a replacement for a navigation bar button.
It is not a shortcut for presenting a sheet.
A prominent tab is still a tab.
Understanding that distinction is the key to using this feature correctly.
Most validation code is one giant function that walks a tree and appends to an error array through a forest of if statements. OpenAPIKit showed me a better way, a validation is a small composable value, the description states the correct state, and every error already knows where it lives
At WWDC26, Apple extended the Foundation Models framework with support for server-side language models. The idea is simple: the same LanguageModelSession API that drives the on-device model can now drive any remote model that conforms to the LanguageModel protocol. Anthropic was quick to adopt it and released ClaudeForFoundationModels — a Swift package that makes Claude a drop-in model for your sessions. Streaming, guided generation with @Generable, and tool calling work the same way.
In this post, we'll build GiftGenie — a small app that generates gift ideas — and let the user switch between the on-device model and Claude with their own API key.
Before iOS 27, swipeActions(edge:allowsFullSwipe:content:) only worked on rows inside a List. Applying it to views in a LazyVStack, a LazyVGrid, or a custom layout had no effect. iOS 27 removes that restriction with a new modifier, swipeActionsContainer(), that activates swipe action support for any container inside a scroll view.
We have to apply the new swipeActionsContainer() modifier directly to the ScrollView and then add swipeActions(edge:allowsFullSwipe:content:) to each row inside it.
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.
There was a great Swift Group Lab session recently. And this follows a similar concurrency-specific session which was also wonderful. I think the format is a little challenging for the panelists, but they manage to do a great job regardless. It's so valuable to have real questions answered by the people that built the stuff. And I happen to really enjoy the live, unscripted discussion.
I joined most of the sessions and, as usual, prepared a transcript: grouped, polished, and enriched with time codes. And there are plenty of sessions still to go! So I decided to start a series, probably a long one, with gathered Q&A from those Labs.
As usual, the goal is simple: make the questions easier to scan, easier to revisit, and easier to connect with real app development problems.
Following the release of iOS 26 I was left with one strong impression (leaving liquid glass aside): Apple Intelligence seems pretty powerful. I’d love to be able to feed it an image along with some context about the use of the image, and get Apple Intelligence to generate an appropriate description. As a developer, there are times when alt text is not available because the person who chose the image didn’t add it, and this leaves VoiceOver users missing a ton of content.
With the first Beta release of iOS 27 and Xcode 27, we can do just that.
Join the Mobile Signal Talent Directory and make your profile visible to hiring teams searching for iOS talent.