Making Póca
A quiet app. A loud education.
I submitted Póca to the App Store this week. It is a read-later app for iPhone, iPad, and Mac. You save articles, you read them beautifully, on your own terms. No algorithm, no unread count, no guilt.
I built it entirely on my own, alongside client work, over several months. What follows is an honest account of what that was actually like.
Multiplatform is genuinely hard, and Mac will humble you
SwiftUI promises write once, run anywhere. This is true in the same way that a map is true: accurate at a certain level of abstraction, increasingly misleading the closer you get to the ground.
The reality of building for iPhone, iPad, and Mac simultaneously is three distinct interaction models, three distinct mental models for how users navigate space, and three distinct sets of expectations about what an app should feel like. Touch is immediate and physical. The pointer is precise and indirect. The keyboard is invisible until it isn't, and then it's everything.
I built the iPhone experience first. Cards that slide in as you select an article, a bottom tab bar for navigation, a floating button row for actions. It feels right on a phone because it maps to how you hold and use a phone. You can feel the app in your hand.
Then I started on the Mac.
The easy path was Catalyst or the Mac idiom setting in Xcode: take the iPad layout, scale it up, add a title bar. Apple has made this path very accessible. I understand why developers take it. You can ship a Mac app in an afternoon.
I did not take it.
A Mac app should feel like a Mac app. It should have a proper sidebar. It should respond to keyboard shortcuts. It should use the menu bar. It should feel at home next to Safari and Mail and Notes, not like a tourist that wandered in from a different operating system.
Building the Mac version of Póca properly took longer than building the iPhone version. Three-column layout with a native sidebar, toolbar items in the right places, settings in a tabbed window rather than a sheet, full keyboard navigation. Every one of those decisions was small. Together they are the difference between software that feels native and software that merely runs.
It was worth it. When you open Póca on a Mac, it looks like it belongs there. That is harder to achieve than it sounds.
Privacy-first is a product decision, not a compliance checkbox
At some point in the planning for Póca I made a list of everything I was not going to collect. Location. Contacts. Browsing history. Identifiers. Purchase history. Crash logs tied to user identity. The list was long.
Then I made a list of what I was going to collect. Anonymous analytics via TelemetryDeck: article saves, reading mode usage, onboarding completion. Nothing tied to a person. Nothing that could identify anyone. That was the whole list.
The App Store privacy nutrition label for Póca is almost empty. Usage data, not linked to you. That is it.
This was not primarily a legal decision or a marketing decision, though it helps with both. It was an architectural decision. Every third-party SDK you add is a dependency you maintain, a privacy policy you inherit, a data flow you have to reason about. Keeping the data collection minimal meant keeping the architecture minimal. There is no analytics dashboard to check obsessively. There is no data to breach. There is no GDPR compliance programme to run.
The product is also more honest as a result. Póca is a quiet app. It should not be watching you while you use it.
CloudKit is remarkable and maddening in equal measure
Póca syncs across iPhone, iPad, and Mac via iCloud. Articles you save on your phone appear on your Mac. Your reading position is preserved. Your starred articles and archive follow you everywhere.
I built none of the sync infrastructure. Apple built it. CloudKit with CoreData does the work, for free, with no backend server to maintain or scale or secure. For an indie developer building alone, this is an extraordinary gift. The alternative is building, hosting, and maintaining your own sync service, which is a significant project in its own right.
The catch is that CloudKit is a black box. When sync works, it is invisible and magical. When sync does not work, you have essentially no visibility into why. There are no logs you can read, no dashboard you can consult, no error messages that tell you what actually happened. You infer from behaviour.
I learned several things about CloudKit the hard way.
It does not guarantee uniqueness. If two devices independently save the same article before sync has propagated, both create a separate record, and CloudKit will faithfully sync both records to both devices. You now have duplicates. I built a deduplication service that runs after every remote sync notification and sweeps for articles with the same URL, keeping the richer record and deleting the rest.
The merge policies matter more than the documentation suggests. Getting the right merge policy for your data model is the difference between sync that quietly resolves conflicts and sync that silently loses data.
Testing sync properly requires two physical devices and a lot of patience. The Simulator shares a single CloudKit environment and cannot reproduce the timing issues you will encounter in the real world.
None of this makes CloudKit the wrong choice. It remains the right choice. But the gap between "it just works" and "I understand why it works" is wider than the documentation implies.
Pricing was the hardest product decision, and it was not a technical one
I built the full pricing system. Free tier with a 15-article cap enforced at three points in the codebase. A one-time unlock at €9.99 that removed the cap and added Brief and Night reading modes. A monthly subscription at €1.99 that added the newsletter inbox. StoreKit 2 integration, entitlement checking, paywall views, gate logic, restore purchases. All of it. Several weeks of work.
Then I deleted it. Every line.
Póca is a paid app. €9.99, yours forever. You download it, you pay for it, everything works. There is no free tier, no subscription, no features held back, no prompts to upgrade, no guilt about not upgrading.
This sounds simple. It was not simple. It was the result of a long conversation with myself about what kind of product Póca is and what kind of relationship I want with the people who use it.
The free tier argument is compelling: lower the barrier to entry, convert some percentage of free users to paid. The subscription argument is also compelling: recurring revenue is more predictable, more fundable, more scalable. These are real arguments that serious people make.
But Póca is a quiet app. It is trying to create a reading experience without pressure, without noise, without anxiety about unread counts and upgrade prompts. A free tier with a cap creates exactly the anxiety the app is trying to eliminate. A subscription creates an ongoing financial relationship where the user is always aware that they are paying, always evaluating whether they are getting their money's worth this month.
A one-time purchase creates a different relationship. You decided this was worth €9.99. You paid it. Now it is yours. Come back whenever you want. There is no meter running.
The simple model was the right model. But I needed to build and then delete the complex model to be sure of that. I do not regret the time it took. The confidence in the final decision comes from having genuinely considered the alternatives.
On the name
Póca is the Irish word for pocket. It felt right before Pocket shut down earlier this year, and it still feels right now. Maybe more so.
A pocket is a quiet place for the things worth keeping. You do not open your pocket anxiously, worrying about how many things are in it. You put things in when they matter and take them out when you are ready. Nobody has ever felt guilty about their pocket.
That is what I was trying to build.
Póca is available on the App Store for iPhone, iPad, and Mac.
Download on the App Store€9.99 · One purchase · Yours forever
John Murphy is an enterprise architect and indie developer based in Ireland. He writes about technology, architecture, and building things at ailiniu.ie.