← Back to work

Case Study: Native iOS

Built for the aisle, not the desk.

Copia turns a recipe into a grocery list sorted the way you walk the store. I designed and built it solo, launched it in September 2026, and shipped six updates in the six weeks after, each one aimed at what users and competitor reviews said.

Solo: research, design & engineeringNative iOS (SwiftUI)Live on the App Store
Download on the App StoreFree on iPhone
6updates shipped in the first six weeks
3,052competitor reviews analyzed to set the roadmap
20cookbook pages read as one recipe in a single scan
Copia App Store screenshot, 'Every list, one place': the Lists screen with an active-trip hero card, a route progress dial, a pinned quick-top-up list, and category rows

At a glance

Problem
Grocery apps are designed for writing the list at a desk, then ship the same dense screen into the aisle, where you have one hand, a cart, and about a second per glance.
Evidence
In 687 one-to-three-star reviews of the top ten grocery apps, 25% blamed sync and sharing, 23% blamed aisles that weren’t remembered, and 21% blamed paywalls.
My role
Everything: research, interaction and visual design, the SwiftUI build, and the App Store release.

Key decisions

01

Sort the list by the walk, not by when you typed it

Items file into aisles automatically, and the shopping view reads as a route: aisles are stations, tap targets are sized for one thumb, and the screen stays awake. When you move an item to a different aisle, Copia remembers it on every list, and you can set your own aisle order.

Trade-off: I didn’t use a retailer API for “real” aisle numbers, because it would need an account and a network call. The on-device order is a little rougher, and it stays entirely on the user’s phone.

Copia's shopping screen: aisle stations with item rows (Carrots, Bananas, Ground beef, Cheddar cheese)

02: the reversal, reversed

Removed the quantity, then brought it back

Watching someone shop, I saw that “eggs 3” read as a measure, not a count, so 1.0 shipped with no numbers on the row. After launch, several users asked to set how many of an item to buy. That meant my assumption was wrong, not their reading. In 1.2.1, counts came back as “×3” (read aloud by VoiceOver as “3 of them”), with a stepper in the add field.

Trade-off: the most-glanced row gets one more element. The “×” keeps a count from reading as a weight, and recipe measures still stay off the row.

03

Make a nine-page scan feel like progress, not a spinner

Each page is read on its own and the results are merged at the end, so one bad page costs one page, not the whole scan. Ingredients stream in as each page lands. Since 1.6, every import ends in a single review step where you can edit, untick or move items before they reach the list.

Trade-off: every import gets an extra screen. That’s worth it, because a wrong ingredient costs a tap at home but a second trip once you’re in the store.

Copia App Store screenshot, 'Stop retyping ingredients': camera framing a cookbook page, 'Reading page 4 of 9,' ingredients streaming in below
Copia's scan review screen: parsed ingredients with amounts, ready to add to the Weekly list

04

Charge for the habit, never for the household

Free scans are capped over your lifetime, not per day. A daily reset teaches people to ration, while a lifetime cap lets them use the feature properly before deciding. After launch I raised the free tier (from 5 to 10 scans, from 2 to 4 lists) and made sharing free. Sharing is the action that puts Copia on a second phone, and paywalls were a top-five complaint about competitors.

Trade-off: Pro has less to sell. In return, sharing is free, and sharing is the one way a solo app spreads without an ad budget.

Copia Pro paywall: Monthly, Annual (selected as best value) and Lifetime options with a free trial

Outcome

Copia has been live on the App Store since September 8, 2026, and went from 1.0 to 1.6 in six weeks. Every update answers one of the complaint themes above. Shared-list sync bugs are fixed, and lists show who checked what. Aisles are remembered, and you can set your own order. Imports get one review step, and there are no surprise paywalls. Widgets, Siri and Apple Watch arrived along the way.

Next: a much larger recipe library, so finding a recipe is as fast as scanning one.