Phonebook: a Storybook-style preview gallery for SwiftUI and Compose, built for agents
TL;DR I built Phonebook , an open-source CLI and MCP server that turns existing Jetpack Compose @Preview s and SwiftUI #Preview s into a static, sel…
Tech news from the best sources
TL;DR I built Phonebook , an open-source CLI and MCP server that turns existing Jetpack Compose @Preview s and SwiftUI #Preview s into a static, sel…
Why computed properties help readability, what @ViewBuilder actually does, and when a separate View type matters Every SwiftUI codebase eventually g…
I was cleaning up the UI on a side-project iOS app and did one thing: set Dynamic Type to XXXL and screenshot every screen. Reading the code had tur…
You've seen some View in every SwiftUI file you've ever opened. Now let's find out what it actually means, why it exists, and why returning a plain…
MVVM with swiftUI When learning SwiftUI, one of the first architectural patterns you'll encounter is MVVM (Model-View-ViewModel). In this tutorial,…
Supporting Multiple iOS Versions in SwiftUI Without Turning Your Views Into a Mess One of the nicest things about SwiftUI is how quickly it evolves.…
Part 2 — Search, palette, and settings Level: Intermediate · Time: ~35 minutes · Builds on: Part 1 — Contacts app Part 1 got you shipping. This one…
"I'll just write a quick button style... and a text field with validation... and a card component..." Two weeks later you have a bespoke design syst…
Part 2 of 2. This tutorial builds on Part 1 — DesignFoundation core . If you haven't added the base package and theme yet, start there. The core pac…
Every time you create a struct instance — like AnimeCharacter(name: "Naruto", powerLevel: 9000) — you're calling an initializer . Swift generates on…
So far we've been working with Swift's built-in types — String , Int , Bool , Array . But what if you need a type that doesn't exist yet? What if yo…
You built a Mac app, you want to sell it outside the App Store, and now you need licensing: a key the customer enters, an activation that sticks, an…
A countdown timer is the perfect use case for Live Activities — and also a great way to discover everything the ActivityKit docs gloss over. When I…
So far we've been passing closures into functions that Swift provides — like sorted() , filter() , and map() . But what if you wanted to write your…
TimeLog started from a very simple email at work: “Reminder to register working hours.” That was enough to make me think about the way I track my ti…
Off By One started from a single premise: what if the whole game was just "find the one that's off"? A grid of geometric shapes, all nearly identica…
I recently open-sourced SysMonitor, a native macOS menu bar app for tracking system resources like CPU, RAM, Disk I/O, and Network speeds. I built i…
Dumpert is a Dutch video site I've watched for years, but there's never been an Apple TV app, so I built one. DumpertTV is an unofficial, open-sourc…
Imagine an AI chatbot that forgets everything the moment you close the app. Every interaction starts from scratch, every preference is lost, and the…