Accidental Tech Podcast
Accidental Tech Podcast

491: Salmon and SwiftUI

* Casey and Marco have 99 problems, and SwiftUI is every. damn. one. of. them. * Casey’s problems * PhotosPicker * FB10491818 * FB10566546 * presentationDetents() * FB10636765 * ImageRenderer * FB10393458 * Under the Radar #246: Hard Forks * UIStackView * UIViewRepresentable * UIHostingController *

Featured Speakers

Marco Arment, Casey Liss, John Siracusa Host

Topics Discussed

Episode Summary

Executive Summary: The episode centers on Marco's difficult but optimistic attempt to rebuild Overcast in SwiftUI, highlighting SwiftUI's strengths for simple screens but major pain points around navigation, customization, and interoperability. The hosts also cover macOS support cycles, IPv6 security, Twitter's value and toxicity, BMW's controversial subscription features, and Sony's new gaming monitor as a strong mid-priced option.

Main Topics: Marco’s SwiftUI migration and friction points: Marco explains his goal of moving Overcast’s UI to SwiftUI with minimal code and maximum maintainability, but reports repeated failures with photo pickers, drawers, screenshotting, navigation, split views, and theme control. He is willing to sacrifice some fidelity, but not to ship buggy or fragile behavior. SwiftUI’s limits for complex navigation and customization: The discussion emphasizes that SwiftUI works well for single-screen layouts but becomes fragile for modal flows, split views, custom transitions, and mixed-content navigation. The hosts argue that the framework’s guardrails can feel like walls when building highly customized apps. Developer ergonomics: language complexity, enums, and conditional modifiers: John’s if-modifier experiment leads into a broader discussion of SwiftUI’s type-system complexity, the difficulty of optional bindings, protocol limitations, and how declarative code can become less readable when optimized for framework behavior. Twitter’s continuing utility versus its toxicity: The hosts discuss what would make them leave Twitter, concluding that network effects and the platform’s usefulness for work, questions, and updates keep them there, even as they acknowledge its hostility, negativity, and the need for careful posting and muting. Apple ecosystem and hardware/design updates: They cover macOS support longevity trends, Apple’s post-Jony Ive design era, and the implications of his departure. The consensus is that the current hardware design team deserves credit, and the transition away from Ive was long overdue. Consumer hardware pricing and subscriptions: A major rant focuses on BMW charging monthly subscriptions for seat heaters and steering wheel heating, with the hosts arguing that it feels chintzy, undermines luxury branding, and is likely to provoke backlash despite being technically cheaper over time. Gaming monitor market gap and Sony’s new display: John praises Sony’s 27-inch 4K gaming monitor as a rare mid-priced product that meaningfully bridges the gap between expensive HDR displays and cheaper but compromised gaming monitors, comparing it to Apple’s Studio Display niche-filling role.

Key Arguments: SwiftUI can dramatically reduce code and make simple interfaces elegant, but it becomes brittle when pushed into advanced navigation, custom animation, or mixed-view architectures. The documentation and examples for SwiftUI are often too trivial, outdated, or misleading for real-world app architecture, making learning and debugging hard without extensive searching. Many SwiftUI problems come from the framework’s type system and declarative model, not just user error; protocols, bindings, and conditional structure can confuse both compiler and runtime. Twitter remains valuable because its network effect, audience, and realtime discovery are hard to replace, but users should aggressively curate follows, mute aggressively, and avoid posting recklessly. BMW’s subscription model is bad because it charges twice for hardware already installed, breaks the luxury experience, and feels like nickel-and-diming rather than premium ownership. Apple’s design team should be credited for recent hardware successes without the lingering symbolic weight of Jony Ive, whose public role outlasted his practical involvement. Sony’s monitor is notable because it occupies a long-missing middle ground: good specs, useful HDR, high refresh, and a more reasonable price than boutique HDR displays.

Data Points: Photo picker / drawer / screenshot features: 3 requested SwiftUI-related features - Marco says all three WWDC-era features he wanted are currently failing or unusable for his app App version target: iOS 16 - Marco’s prototype requires iOS 16 so he can use the newest navigation APIs without warnings Mac OS support lifespan low: 4.13 years - Ars Technica chart cited in discussion of how long Macs can receive the latest macOS after purchase Mac OS support lifespan high: 8.13 years - Upper end of historical macOS support range referenced in the support-cycle discussion Google/Stack Overflow-style iterative work: 1 week - Marco says he has spent about a week fighting SwiftUI with relatively little to show for it Seat heater subscription: $18/month - BMW’s quoted monthly charge for heated front seats Seat heater annual subscription: $180/year - BMW’s quoted yearly plan for heated seats Seat heater 3-year subscription: $300/3 years - BMW’s quoted multi-year plan for heated seats Seat heater lifetime access: $400 - BMW’s quoted one-time unlimited access fee for heated seats Heated steering wheel subscription: $12/month - BMW’s quoted monthly charge for heated steering wheel use Camera recording feature: $235 unlimited - BMW charges for the ability to record footage from the car’s cameras Iconic sound support package: $117 one-time - BMW’s fee for downloadable engine sounds Sony gaming monitor size: 27-inch - Monitor discussed as the ideal size for a desktop gaming display Sony gaming monitor resolution: 4K - Monitor resolution cited in the gaming-monitor segment Sony gaming monitor refresh rate: 144 Hz - High refresh support highlighted as a key feature Sony gaming monitor HDR rating: DisplayHDR 600 - The monitor’s brightness/HDR capability as discussed Sony gaming monitor local dimming zones: 96 zones - Used to explain the monitor’s HDR performance and halo tradeoffs Sony gaming monitor price: $900 - Presented as the monitor’s standout reasonable price point Apple Studio Display price: $1,600 - Used as a comparison point for premium monitor pricing Apple XDR brightness: 1,600 nits - Referenced when contrasting HDR-capable displays Apple Studio Display brightness: 600 nits - Referenced in comparison with Sony’s monitor and HDR behavior Twitter ownership horizon: ~15 years - The hosts reference their long tenure on Twitter when discussing network effects and value Podcast ad sponsors: 3 sponsors - Stack Overflow Podcast, Hover, and Linode sponsored the episode

Pivotal Quotes: "I want as little code as I can. I want to do things in the cleanest, least complicated way that I can do them." — Marco: Explaining the goal of rewriting Overcast UI in SwiftUI "I think Apple is deluding themselves if anybody there thinks that either Swift or SwiftUI is suitable for beginners." — Marco: Marco argues SwiftUI is too complex and indirect for newcomers "Those guardrails aren't just guardrails, they're entirely like 500-foot-tall brick walls." — John: Describing SwiftUI’s limits when users need to go beyond its preferred patterns

Implications: SwiftUI may be the future for Apple UI work, but real apps still face hard edges around navigation and customization. Meanwhile, platform power users are increasingly valuing products that feel premium without subscription gimmicks or brittle abstractions.

🔓 Sign Up for Unlimited Episode Search

About Accidental Tech Podcast

View all episodes from Accidental Tech Podcast