This Just In

This Just In: em is now available and ready for iOS and macOS 27! Here's what I learned getting it to this point.

What I Learned Building an App
Photo by Ivan Henao / Unsplash

In case you missed it, 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!

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 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 Store
Download 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…

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!

Support Justin Cox

Become a paid supporter to help keep Justin Cox accessible to everyone.