Right suspect, wrong reason
Camaïeu 1.1 is on the App Store. It fixes a small bug that nudged the image closer to the top edge each time the app was quit and reopened (the swipe that closes the app was being recorded as the last image position), and it carries my first ever performance pass. That second part is the story.
I had a list of suspects going in. The pacer ring in breathing mode redraws itself on every frame: surely expensive! The app runs a full-screen shader on a 120 Hz phone: surely it was drawing twice as much as it needed to! I had been carrying these two worries for a month.
So I measured. I had never opened Instruments before, so I asked Claude to walk me through it, one step at a time. It also wrote me a memo I can reuse for the next app: which tool answers which question, in what order, and how to read each screen.
Metal HUD first, the little overlay iOS can put on any app: 60 frames a second, pinned, 5 milliseconds of GPU work per frame out of a budget of 16. Then Instruments. The whole app used about seven percent of one CPU core, the render loop less than one; the memory graph was a ruler-straight line for three minutes.
Both my suspects were innocent. The pacer ring cost nothing measurable. The frame rate was already capped where I wanted it, by a default I had never set.
Then came the one test I would not have thought of on my own (thank you, Claude): Xcode can pretend the phone is overheating. Under that condition the GPU clock halves. The picture still held 60, but start a breathing session and it fell to a stuttering 50. The ring that had cost nothing on a cool phone was now fighting the picture for a budget that had shrunk. Right suspect, wrong reason, and only visible under conditions I had to fake.
Three small changes came out of it. The ring now redraws thirty times a second instead of sixty; a dot circling once per breath doesn't move a pixel between frames anyway. When you pause a session, the app stops drawing entirely until something changes: stillness now costs nothing. And when iOS reports that the phone is running seriously hot, Camaïeu drops to 30 frames a second and comes back up as it cools. The motion doesn't change speed; it just asks less of a tired phone.
Next: the demo video.
Camaïeu is built for RevenueCat's Shipaton 2026. #Shipaton #BuildInPublic