> ## Content Index
> Fetch the complete content index at: https://justincox.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# What I Learned Building an App
- URL: https://justincox.com/blog/2026/09/what-i-learned-building-an-app/
- Published: 2026-09-17T17:36:31.000Z
- Updated: 2026-09-17T17:36:31.000Z
- Description: This Just In: em is now available and ready for iOS and macOS 27! Here's what I learned getting it to this point.
- Author: Justin Cox
- Tags: This Just In, AI, em

In case you missed it, [I built the writing app of my dreams](https://justincox.com/blog/2026/08/i-built-the-writing-app-of-my-dreams/). It's called **em** — as in em dash — and I've been using it for all of my writing for about six weeks now. I think **em** is pretty great and [it's now available on the App Store](https://apps.apple.com/app/id6797005003?ref=justincox.com)!

Getting to this point has been a journey where I learned so many things about app architecture, Apple's Human Interface Guidelines, and exactly how *not* to build an app. But hey, I did it anyway and the reality is that you could probably do it too. Without any fanfare, here's what I learned over the last few months putting this thing together:

## It’s impossible to know all of Apple's features.

I mapped out all of the things I wanted **em** to do and all of the ways I wanted it to feel like a natural and native app. I spent two months dialing in every little detail. Then, watching the iPhone announcement video last week, I saw someone talking about Siri AI and how third-party apps connect with the new API. All of my careful, detailed plans got a last-minute feature addition that I didn't even know existed.

Thankfully the groundwork was already *mostly* in place, since Siri AI uses the same App Intents that power Shortcuts. Adding that feature was relatively simple, but it also tells me that I need to keep a closer eye on the OS capabilities to make sure **em** can connect with the necessary ones in the future.

The lesson: pay close attention to everything Apple says, even about products that might not directly apply.

## Building for beta releases created silly bugs I wasn't prepared for.

I started this process on the developer beta pain train to take advantage of Apple's newest Foundation Models. As such, all of my test devices were running Apple's betas. Did I think to test on a machine *not* running os 27? Nope. Not once did that thought cross my mind.

Thankfully, one of the TestFlight testers pointed out a pretty glaring bug: you couldn't tap on any files in macOS 26\. Yeah... that was a big one. I, thankfully, had another computer that *wasn't* running the beta that I could test and hunt down the bug. But, um, oops.

The lesson: don't just rely on beta releases because something will inevitably be broken somewhere else.

*Side note: I have no idea what this means for entirely new hardware like the iPhone Duo...*

## Claude overcomplicates things more often than not.

I built **em** largely using Claude and would often run into a situation when it's explanations were practically unreadable — *side note: if you aren't using the* [*I Have ADHD skill*](https://github.com/ayghri/i-have-adhd?ref=justincox.com) *with Claude, you should be; it makes everything far more bearable*.

Anyway, Claude would often present something that sounded super complicated that needed to be fixed right away or else everything would break and the world would end. Whenever I'd press or ask for clarification, the explanation was almost always some form of, “You’re right to push back and my original assessment was blown out of proportion — the fix is much simpler." Seriously, almost every time.

The cynical side of me says this is actually a product decision someone made — if the default is to make the situation sound catastrophic, then the user will spend more tokens to let Claude fix the thing. Or, if the user pushes back, then there are still more tokens being spent to reassess the thing.

Had I hadn't already had some idea about the logic behind features or the app architecture I wanted, it would have been *very* easy to just sink a ton of money into Anthropic chasing each of Claude's delusions. Though, I did spend a decent amount of money chasing my own delusions, but that's a story for another day.

The lesson: don't trust AI coding agents unconditionally.

## You are held to various laws around the world.

To release an app in the EU, you have to comply with the Digital Services Act (DSA). This means the app's developer needs to have a *publicly* displayed address and phone number inside the App Store and, presumably, on a website. That means I either put my home address and cell phone number out into the world for anyone to access, or I purchase a separate business address (no PO Box) and business phone line to meet the compliance requirements.

For a single-person developer with what is basically a side project, the DSA requirements are just too steep. If I were some kind of conglomerate business with access to privacy protection resources — well, this is a different story.

One person on Mastodon said that Apple could really support indie developers by offering DSA compliance resources. But, alas, that's not the case. As such, **em** will unfortunately not be available for purchase in the EU.

I also learned that China does not allow access to ChatGPT. I have no idea why, but this seemingly crucial bit of information for an app that connects to a ChatGPT API at the user's request only came up when the app was rejected by Apple for violating the international legal requirements. I had two options to resolve: remove any reference to ChatGPT in the app listing *and* code for Chinese users, or remove mainland China as a distribution country. So, **em** will also not be available for sale in China.

The lesson: this one's a bit more difficult because no one should be expected to know all the intricate laws throughout the world.

## I'm pretty bad at self-promotion.

A few weeks ago I sent out a very well-received email announcing **em**. It was only *after* the email went out that I realized I *could* have activated the App Store's preorder page and, you know, given people something to do after reading. Oops.

This time around I can rectify the lesson in real time! You can now get **em** on the App Store!

[em — Markdown Writer & Editor App - App StoreDownload em — Markdown Writer & Editor by Justin Cox on the App Store. See screenshots, ratings and reviews, user tips, and more apps like em — Markdown Writer…![](https://justincox.com/content/images/icon/favicon-32-30cfcf8e-9259-4916-b1a3-ab094e8faa79.png)App StoreJustin Cox![](https://justincox.com/content/images/thumbnail/1200x630wa-f0ce99c7-b185-4a63-b82d-37899958f51d.jpg)](https://apps.apple.com/app/id6797005003?ref=justincox.com)

**em**'s introductory pricing is 50% off from now until the end of September, **just a one-time payment of $9.99 for the universal app**.

I think you're really going to love **em** — I'm quite biased but it's exactly what I wanted in a writing app.

Before I go, I want to give a special thank you to the two dozen or so testers who helped point out bugs and find other issues. You all helped make **em** ready for prime time. Thank you!