Skip to main content

There’s a comment in a config file on my studio site that’s longer than most of the code around it. It documents a decision I made on July 28th: analytics stays null. Not “not yet” — null, with the reasoning written down so that future me can’t quietly reverse it during a weak moment.

I want to talk about that decision honestly, because the way it usually gets written up is dishonest. “We don’t track you” is a marketing line. What it actually means, operationally, is that I shipped four apps and I do not know what a single person does inside any of them.

What I Actually Refused

My apps have no accounts, no ads, no trackers, and no analytics SDK. Data stays on the device. Where a server is genuinely unavoidable, it gets the least it can and stores nothing. The marketing site loads zero external scripts.

That last one is the part that made the decision easy to write down and hard to walk back. The homepage says “no ads, no tracking, no nonsense.” Anyone can open devtools and check. A third-party beacon phoning home from that page is a visible contradiction to any stranger who looks — and once your claim is checkable, you’ve handed people the tool to catch you. That’s the point of making it checkable.

So the refusal isn’t a principle floating in the air. It’s a thing that can be falsified in about four seconds, which is the only reason it’s worth anything.

What I Still Know

I want to be precise here, because “no analytics” gets read as “flying completely blind,” and that’s not true either.

Cloudflare proxies the site, so the zone dashboard gives me requests, unique visitors, top paths, referrers, and countries — server-side, from traffic that was already happening, with no code added to the page. Apple keeps its own server-side records of downloads and sales, readable through the App Store Connect API with my own credentials. Neither of those requires shipping anything to a user.

That’s the distinction that actually matters, and it’s the one the privacy conversation usually flattens. There’s a real difference between observing traffic you’re already serving and installing a thing on someone’s device to report back on them. The first is a log. The second is surveillance with a friendlier name and an SDK.

I’ll take everything in the first category. I’ve taken nothing from the second.

The Part That Costs

Here’s what it takes away, specifically.

I can’t tell you whether a feature is used. PayoffPilot has a settings screen. Feastmark has a cook mode with step timers. I have no idea whether anyone opens either one. When I sit down on a Tuesday night with ninety minutes and have to choose what to build, there’s no number that answers the question. I’m guessing, informed by nothing but my own use and whatever lands in support email.

I can’t see where people get stuck. No funnel, no drop-off, no session recording — that last one being a thing I’d refuse even if I had it. If a screen is confusing, the only way I find out is if someone is annoyed enough to write to me, and almost nobody is ever annoyed enough to write to you. Silence reads exactly like satisfaction and means nothing of the kind.

I can’t A/B anything. Not the onboarding, not the pricing, not the App Store screenshots. Every one of those is a judgment call I make once and live with.

Retention is invisible. I won’t know if people open an app twice and never again. For a meal planner, that’s arguably the only number that matters, and it’s one I’ve chosen not to have.

None of this is a complaint. I’m listing it because the honest version of a privacy promise includes what it costs you, not just what it costs the other guy.

The Workaround Has Its Own Trap

Since Apple’s records are server-side, I started designing a small local tool that pulls sales and aggregate analytics into a SQLite database on my own machine — my credentials, my disk, nothing shipped in the app, nothing collected from anyone.

Design’s paused mid-brainstorm. No code yet. But the research turned up something worth passing on, because it’s a deadline nobody warns you about.

The ongoing analytics report in App Store Connect has to be requested before you need it. It takes 24 to 48 hours to produce its first report, and it only covers data from the moment you created it forward. There’s no backfill. Ask for it on launch day and you have permanently lost launch week — the one week whose numbers you’ll want to look at for the rest of the app’s life.

There’s a second one: the API access request is reviewed by Apple case-by-case, and the credentials have to be a Team key with the Admin role. An Individual key can never read sales data at all. That’s a request with a human review attached, sitting in front of a report with a 48-hour warm-up, sitting in front of a launch date.

The privacy-preserving path doesn’t just have fewer features. It has a longer lead time, and the lead time is invisible until you’ve already missed it.

Why Solo Is What Makes It Possible

I don’t think I’m unusually principled. I think I’m unusually unpressured.

An analytics SDK is the default in this industry because someone has to answer “what are users doing?” in a meeting. I don’t have that meeting. Subscriptions are the default because someone has to show a recurring-revenue chart to someone else. I don’t have that chart — my apps are free or a one-time purchase, and nothing about that has to be defended quarterly. Ads exist because free software has to earn somehow, and I’d rather charge a dollar than sell attention.

Working alone doesn’t make you principled. It removes most of the pressure that erodes principles, which is a different and much less flattering thing. Every one of those defaults exists because a real person had to justify a decision to another real person who wanted a number. I’ve just never been in the room.

That’s the actual advantage of being solo, and it’s the one I’d give up last. Not speed. Not focus. The ability to make a choice that can’t be overruled by someone who needs a chart.

The Trade I’d Make Again

Four apps, no idea what happens inside them, and a promise that a stranger can verify in four seconds.

I still think that’s the right trade, and I’d rather state the price out loud than pretend there isn’t one. The version of this post that just says “we respect your privacy” is the version I don’t believe when other people write it.

What I don’t have an answer for is a related problem: I’ve built four apps that collect nothing and nobody knows they exist. I wrote about that one recently, and I still haven’t solved it.

The code keeps being the easy part.


The apps live at bigbeardapps.com.

Raul C. Peña

Raul C. Peña

Senior Software Engineer at Dell Technologies. Air Force veteran, 20+ years as a Texas real estate broker, self-taught coder. Passionate about DevOps, IBM Vault (formerly HashiCorp Vault), and building things that matter.