blog.wildcat.io
Why SwiftUI Is Detrimental to Client-Side App Development
Excerpt
SwiftUI has gained significant attention, yet many teams find that its design and tooling introduce serious obstacles for complex, production-grade apps. Below is a structured overview of the main pain points developers encounter. ## 1. Implicit Styling Makes Advanced Theming Difficult • Context-driven modifiers automatically change fonts, colors, and layout based on parent views. • Customizing these defaults to align with a strict design system often requires deep, undocumented workarounds. • Small projects (≤1 K lines) usually cope, but large codebases spend excessive engineering hours undoing or overriding SwiftUI’s implicit behavior. ## 2. Limited Backwards Compatibility • New SwiftUI APIs (e.g., `NavigationStack`, `Observable` macro) are tied to the most recent iOS, macOS, or watchOS releases. • Shipping the latest OS is unrealistic for many user bases; as a result, teams either drop older devices or implement parallel UIKit code paths—both costly options. • For businesses with wide device support requirements, this incompatibility can directly impact revenue projections. ## 3. Slow Incremental Builds and Previews • SwiftUI’s preview system and dependency-heavy build graph often double or triple compile times compared with Android, Flutter, or React Native equivalents. • Large Swift packages sometimes require clean builds to resolve preview inconsistencies, further slowing iteration. • Longer feedback loops inflate development budgets and delay feature releases. ## 4. Business Risk Assessment Choosing SwiftUI can increase the probability of project delays or missed market windows when: - Your brand demands pixel-perfect, non-standard UI. - You must support users on OS versions > 1 year old. - Rapid iteration speed is critical to product-market fit. Conversely, SwiftUI may still be viable if: • You control the target OS distribution (e.g., first-party Apple apps). • Your UX requirements align with Apple’s Human Interface Guidelines out of the box.
Related Pain Points
Slow Incremental Builds and Preview System Performance
7SwiftUI's preview system and dependency-heavy build graph often double or triple compile times compared to other frameworks. Large Swift packages sometimes require clean builds, significantly slowing iteration and delaying feature releases.
SwiftUI backward compatibility limitations
6SwiftUI requires minimum OS versions (iOS 13+, macOS 10.15+, tvOS 13+, watchOS 6+) and many features only work on newer versions (e.g., TextInput focus on iOS 15+). Projects supporting older OS versions cannot use SwiftUI or must maintain UIKit fallbacks.
Difficulty creating design systems in SwiftUI
5SwiftUI lacks a natural, straightforward mechanism for creating reusable design systems. Developers must choose between adding modifiers to every component, creating artificial extensions, or scattering style constants throughout the codebase—none of which are clean solutions.