The blog
iOS and macOS development told line by line. Filter by topic or explore the full series.
69 articles
App StoreApp Store Connect New
App Store Connect, part 2: screenshots in 2026 and what iPhone Duo requires
Which screenshot sizes are required today, the iPhone Duo sizes and the April 2027 deadline, App Review's guidance on what your screenshots must show, and a checklist to get your page ready before October 23.
App Store Connect, part 1: creative assets and the Asset Library
Oct 13, 2026
Agent Skills, part 2: what to install depending on the kind of app
Oct 07, 2026
Agent Skills, part 1: the essential set I keep installed for Apple development
Oct 06, 2026
Agent Skills, part 0: what they are and why they matter if you build for Apple platforms
Oct 05, 2026
iPhone Duo with Xcode 27.1: the 6 foldable APIs that shipped on September 18
Sep 19, 2026
Xcode 27 Agent Skills in your favorite editor: one command puts Apple's 10 skills in Claude, Cursor, or Codex
Sep 19, 2026
Goodbye Simulator.app, hello Device Hub: the new device workshop in Xcode 27
Sep 19, 2026
iOS 27 for your next app: what's worth adopting (and what's on its way out)
Sep 14, 2026
macOS CI/CD with Fastlane (part 5): GitHub Releases distribution
Sep 13, 2026
macOS CI/CD with Fastlane (part 4): auto-versioning and QA vs Release lanes
Sep 12, 2026
macOS CI/CD with Fastlane (part 3): notarization in depth
Sep 11, 2026
macOS CI/CD with Fastlane (part 2): setup, certificates and credentials
Sep 10, 2026
Apple 'Surprise and Shine' Event: iPhone Duo, iPhone 18 Pro and what it means for devs
Sep 09, 2026
macOS CI/CD with Fastlane (part 1): distribution outside the App Store
Sep 09, 2026
Pokédex in TCA (part 6): testing and a technical contrast with MVVM
Sep 01, 2026
Pokédex in TCA (part 5): debounced search and type filters
Aug 31, 2026
Pokédex in TCA (part 4): favorites with @Shared
Aug 30, 2026
Pokédex in TCA (part 3): the detail and navigation as state
Aug 29, 2026
Pokédex in TCA (part 2): remote state, pagination and visible errors
Aug 28, 2026
Pokédex in TCA (part 1): project setup and feature architecture
Aug 27, 2026
iOS security (part 5): AI-assisted coding without leaking data
Aug 11, 2026
iOS security (part 4): logs and sensitive data leaks
Aug 10, 2026
iOS security (part 3): secrets and API keys in the binary
Aug 09, 2026
iOS security (part 2): encrypting files at rest
Aug 08, 2026
iOS security (part 1): where to store tokens and secrets
Aug 07, 2026
TCA from scratch (part 4): testing in depth and an honest comparison
Jul 25, 2026
TCA from scratch (part 3): shared state and persistence
Jul 24, 2026
TCA from scratch (part 2): composition and state-driven navigation
Jul 23, 2026
TCA from scratch (part 1): building a search feature with the 2026 API
Jul 22, 2026
Concurrency that no longer bites: Swift's new defaults (6.2 → 6.4)
Jul 14, 2026
Modern concurrency in Swift: async/await, Task, actors and Sendable
Jul 13, 2026
Structured concurrency in practice: async let, TaskGroup, cancellation and actors
Jul 13, 2026
Skyllector is on the App Store
Jun 24, 2026
WWDC 2026 for devs (part 4): visionOS, Siri's shift, and the rest of the ecosystem
Jun 21, 2026
Narcisse 1.2.0 is out
Jun 17, 2026
WWDC 2026 for devs (part 3): Xcode Agent Skills and the official SwiftUI APIs
Jun 14, 2026
WWDC 2026 for devs (part 2): AI in apps, agents, and more SwiftUI
Jun 14, 2026
WWDC 2026 for developers: what we know so far
Jun 09, 2026
Building a Pokédex on iOS — Part 10: CI/CD with GitHub Actions
May 30, 2026
Building a Pokédex on iOS — Part 9: Unit testing with Swift Testing
May 29, 2026
Building a Pokédex on iOS — Part 8: ViewModel with @Observable
May 28, 2026
Building a Pokédex on iOS — Part 7: Image cache
May 27, 2026
Building a Pokédex on iOS — Part 6: Offline persistence with SwiftData
May 26, 2026
Building a Pokédex on iOS — Part 5: Domain models and Use Cases
May 25, 2026
Building a Pokédex on iOS — Part 4: Repository Pattern
May 24, 2026
Building a Pokédex on iOS — Part 3: DTOs and the API contract
May 23, 2026
Building a Pokédex on iOS — Part 2: Network layer
May 22, 2026
Building a Pokédex on iOS — Part 1: Project structure
May 21, 2026
Conditional compilation in Swift
May 15, 2026
Generics in Swift
May 15, 2026
@propertyWrapper in Swift: beyond UserDefaults
May 15, 2026
Feature flags with UserDefaults on macOS
May 14, 2026
Narcisse is now live
May 04, 2026
AlgoViewer is now available
Feb 24, 2026
FigureDex: Your Amiibo Collection, Finally Organized
Jan 02, 2026
Basic operators
Jan 01, 2026
struct — value type
Jan 01, 2026
if / else if / else
Jan 01, 2026
Basic function declaration
Jan 01, 2026
What is an Optional?
Jan 01, 2026
What is a Swift Playground?
Jan 01, 2026
What are variables and constants?
Jan 01, 2026
How to expose an HTML interface in a macOS app
Jul 04, 2025
Modeling API responses with enums in Swift: an elegant solution for unpredictable APIs
May 13, 2025
Announcing the new version of Game Progress
Sep 02, 2024
Starting a project in Xcode
Jun 22, 2021
What's new at WWDC 2021 | Part 1
Jun 11, 2021
What's new at WWDC 2021 | Part 2
Jun 11, 2021
No articles with that filter yet.