
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.
Before Swift Concurrency, it was possible to accidentally access mutable state from multiple threads at the same time. These bugs were notoriously difficult to reproduce because they depended on timing and thread scheduling. An application might work perfectly for months and then suddenly crash or corrupt data in production.
Swift Concurrency fundamentally changed how asynchronous programming works in Swift. Before async/await arrived, developers relied heavily on completion handlers, delegates, Combine pipelines, and Grand Central Dispatch (GCD). These approaches worked, but they often made asynchronous code difficult to reason about, debug, and maintain.
A deep dive into Apple's standardized component for empty, unavailable, or failed content states. Before iOS 17, every app built the same VStack with an icon, title, description, and button. ContentUnavailableView provides a canonical system component with platform consistent styling, accessibility defaults, and Dynamic Type support. The article covers basic usage with title and systemImage, the built in search variant (ContentUnavailableView.search), custom initializers with view builders for actions (like a retry button for network failures), real world production examples (failed requests, first time UX, empty invoices), accessibility considerations, state driven patterns with enum based loading states, common mistakes (overbuilding, generic messages, missing recovery actions, showing empty state during loading), and when not to use it (onboarding, paywalls, interactive tutorials).
The article explains Apple's Accelerate framework for high performance vectorized computation. It covers what Accelerate is (optimized APIs for vector math, matrix operations, signal processing, image processing, linear algebra, FFT, statistics), why it matters (naive loops miss SIMD hardware), the core philosophy (bulk computation instead of scalar iteration), major components (vDSP, vForce, BLAS, LAPACK, BNNS), practical examples (array addition, scalar multiplication, dot product, statistics, matrix multiplication with cblas_sgemm), performance considerations (Float vs Double, memory layout, benchmarking), common mistakes, and when to use or avoid it.
The article explains why recursive enums need the indirect keyword. It covers the problem (value types need a known size at compile time, but recursive cases create infinite size), the solution (indirect stores the case via heap reference), case level versus enum level indirect, practical examples like expression trees and file systems, and trade offs including heap allocation and indirection cost.
The article explains what inout parameters are, how copy-in copy-out works under the hood, and when to use them versus return values. It covers basic examples (incrementing, swapping, mutating collections), important rules (using &, variables only, no conflicting access), common mistakes, and best practices.
Sagar has been building apps since 2015 and has worked with startups and companies on some truly exciting projects.
Over the years, he has focused on creating apps for iOS, watchOS, and iPadOS, using Swift and, more recently, SwiftUI. He has also worked with frameworks like React and React Native, which has helped him adapt to different kinds of projects. He loves keeping up with new tech and trends — always learning and improving.
Outside of work
Sagar is a passionate runner. He started running regularly in October 2023, and it quickly became something he looks forward to every week. These days, he runs around 30KM per week, and in 2024, he hit a big milestone by running over 1,000KM in total!
Follow his running journey on Instagram (@sagar.runs) or Strava, where he shares updates and photos.
Beyond code
When he's not coding or running, Sagar enjoys spending time with family and friends. He's a huge foodie — always exploring new dishes and flavors. And as a big cricket fan, he enjoys both watching games and playing whenever he gets the chance.
Join the Mobile Signal Talent Directory and make your profile visible to hiring teams searching for iOS talent.