A false rejection and an edit-mode bug hiding in the background

Apple rejected the app under 2.5.4 — ‘unable to play audio in the background’ — but the code was right all along; the reviewer just never pressed Play. Plus a sneaky sequel to yesterday’s edit-mode fix: the invariant broke the moment you backgrounded the app.

June 12, 2026 · 4 min · Karl-Ernst Kiel

App Store rejection, IAP debugging, and a pile of small iOS fixes

The app came back rejected for an unresponsive IAP button. Tracking it down led through four separate bugs in the purchase flow, plus a handful of smaller fixes: edit mode not exiting on play, background audio sync, and a haptics regression on iPhone 15 Pro.

June 11, 2026 · 4 min · Karl-Ernst Kiel

iOS: feature complete and on TestFlight

A full day of iOS feature work — tap tempo, playlist management, export/import, library editing, StoreKit IAP — ending with a successful TestFlight submission and a real test purchase.

June 5, 2026 · 4 min · Karl-Ernst Kiel

iOS layout overhaul: portrait/landscape, controls, playlist

A full rework of the iOS main screen: a proper two-panel layout that adapts to portrait and landscape, a redesigned controls section, and a more stage-friendly playlist.

June 4, 2026 · 3 min · Karl-Ernst Kiel

The iOS port, day one

First day of the SwiftUI port. Most of Phase 5 cleared in one sitting — because the shared KMP module already handled the business logic, only the platform-specific layers (audio engine, file storage, UI) needed iOS implementations. The workflow also shifted: Claude wrote the Swift directly instead of routing through an in-IDE AI.

May 14, 2026 · 9 min · Karl-Ernst Kiel