SwiftUI AppStorage
@AppStorage Looked Like Free State Management. It Isn't Watching What You Think.
@AppStorage feels like @State that happens to persist. It's actually a thin wrapper over UserDefaults with a KVO bridge bolted on, and that difference bites the moment a widget, an app extension, or a background task touches the same key.
6 min read
Swift ActivityKit
Live Activities and the Dynamic Island: A Decision Matrix, Not a Demo
Day 26 of the 30-day iOS series. A real ActivityKit countdown for BrewLog's pour-over timer, the one-function decision matrix that decides which brew methods even get one, and the exact reason it still won't show up on a Lock Screen.
10 min read
Swift WidgetKit
WidgetKit and App Intents: Logging a Brew Without Opening the App
Day 25 of the 30-day iOS series. A real App Intent that logs a brew from Spotlight or a widget button, the @Dependency crash that nearly cost me an evening, and the honest line between what's tested and what's still a mechanical Xcode step.
9 min read