What I Learned the Hard Way Launching My First App


That's what the app looked like when we started -- rough around the edges, barely holding together, but functional enough to start answering the question I actually needed to answer: can we do this? My only prior experience was TAing a mobile app development course in college. I had zero published apps. My magnum opus at the time was a silly fishing game. There's a meaningful gap between "I can build something that functions" and "I can build something that holds up when real people start using it at scale," and I didn't know which side of that gap we were on.
We Had the Audience Before We Had the App
Aisle is a grocery cash-back app. The concept is pretty simple: buy something, take a picture of your receipt, get a Venmo or PayPal deposit back. I led the engineering effort for the mobile app. We ended up at 190,000 users, $768,000 in added revenue, and a 4.8-star rating -- numbers I'm proud of, but numbers that are a little misleading if you're trying to reverse-engineer what caused them. Whenever someone asks how we pulled it off, I give them an answer that's kind of unhelpful: we had the audience before we had the app.
Before a single user downloaded anything, Aisle had built up a list of a few hundred thousand people who had already opted in to receive SMS marketing -- some carried over from earlier products, some new signups accumulated over time.
![SMS marketing flow [modal]](/assets/blog/first-app-launch/sms-flow.webp)
That screenshot is what the flow looked like in practice. Someone texts in, gets a welcome message explaining the cash-back mechanic, receives a link to the app. So when we launched, we weren't staring at zero and hoping to get discovered. We were texting hundreds of thousands of people who already knew who we were, which is an almost unfair advantage when you think about how most consumer apps go to market.
I wrote about this dynamic in more depth in a previous post, but the short version is that distribution is a separate problem from product, it's usually the harder one, and the conventional advice -- build something great, post on Product Hunt, get featured in the App Store -- treats it as an afterthought. By the time we were ready to ship, the distribution problem was mostly already solved.
The Engineering Work That's Boring to Talk About
The actual engineering work was hard in the ways app engineering tends to be hard -- not the algorithmic parts that look intimidating on a whiteboard, but the reliability stuff that's boring to talk about and painful to get wrong. A good example: once users download a version of your app, a meaningful number of them never update it again. Apple doesn't love over-the-air updates either. So something as mundane as wanting to change a banner ad a month after launch becomes a genuine architectural question -- do you ship a new version and hope people update? Do you build a feature flagging system? Do you set up some kind of client-server connection for things you previously assumed could be static? You end up making those decisions early, under pressure, in ways that are hard to undo later.

That's me outside a Target confirming that the geofencing -- detecting when a user enters a store and surfacing the right offers -- was actually working. That was mostly my coworker Vinny's project, but I did the very important work of standing in a parking lot watching a push notification appear on my phone at exactly the right moment, which felt more satisfying than it probably should have.

Look at my dead, tired eyes.
The Chaos of Launch
The lead-up to launch was about four weeks of Prototypical Startup Energy -- late nights, the kind of pace that feels heroic in the moment (and mildly stupid in retrospect). We got the thing out the door, and I'm proud of that, but the experience left a mark.

That's what getting on the same page actually looks like working remotely. Every one of those little diagram flows represents something that had to be talked through, clarified, agreed on. Not a clean handoff or a tidy spec -- just accumulated work product from people trying to stay in lockstep.
The rhythm of it was exhausting in a specific way: we'd be operating at full sprint, then hit a wall waiting on product decisions or leadership direction, then sprint again. Feast and famine, over and over. During one of the quieter stretches I made this chart.

The idea isn't complicated -- engineering works better when the workload is steady rather than spiking and crashing. It is the same "flattening the curve" concept as during the pandemic, but for engineering productivity. The execution of this, however, is another story entirely.
What it boils down to is strategy. It's coordinating a developer team to unblock a marketing team who will unblock a sales team who will unblock a leadership team who will unblock a developer team. It's sort of like planning a multi-course meal and trying to serve everything hot at once. Except I guess in this metaphor the oven has thoughts and feelings (and also you can't just "turn it down" for a few minutes).
What User Feedback Can Tell You
One other thing I thought about a lot during the early testing days was what to do with user feedback.

I made this meme during the thick of it, but it pointed at something real. The temptation when you get frustrating feedback is to categorize the user as not getting it and move on. Sometimes that's even the right call. But the more useful habit, and the harder one to build, is to treat the suggestion as a symptom rather than a diagnosis. When someone says "make the button bigger," that's almost never actually what they want -- but "I can't figure out where to go next" or "the UI feels overwhelming" or "I don't understand what this screen is for" is real signal worth taking seriously. The complaint is the "smell" that something is wrong, but the problem is underneath it.
Watching the Numbers Climb


The first sign that something was actually happening wasn't the App Store analytics -- those take a few hours to propagate, so you're flying blind for a while. The first sign was the deletion requests, which spiked hard, and which I immediately interpreted as catastrophic. My working theory was bots, or possibly something worse: people downloading the app, hating it, and deleting it.
That wasn't what was happening. The deletion requests were spiking because everything was spiking -- downloads, deletions, active sessions, support tickets, all of it moving together, because someone had posted about Aisle somewhere online and the audience we'd spent months building had finally found a second gear we hadn't experienced yet. When your numbers go up, all your numbers go up, including the ones that look alarming if you don't notice the others moving with them.
What was genuinely surprising, and is still the thing I think about most when I look back at that period, was the shape of the growth curve. It wasn't smooth -- it was stepwise. Downloads would plateau at some baseline for days or weeks, then a spike would hit, and when the dust settled, the new floor was meaningfully higher than the old one had been. Plateau, spike, new floor, repeat. Each step up felt less like momentum and more like the whole thing had ratcheted into a higher state of existence, one that it was going to hold whether or not we did anything to deserve it.
Build the List First
If I were starting from scratch today, the first thing I'd focus on building isn't the app. It's the list. Emails, phone numbers, a newsletter, a community, a waitlist -- anything that gets people to opt in before you need something from them, so that by the time you launch, you're telling people the thing they signed up for is finally ready, not cold-pitching strangers and hoping the algorithm notices you. Distribution was the hard problem, and we had a significant head start on it before we wrote a single line of code.
Overall
I'm so FREAKING proud of what we built. I look back fondly at this whole experience. It's cliche, but it was a wild time that I wouldn't trade for anything. I learned a ton, and it was thrilling to see something I worked on being used by people.
I don't have the words to describe how it felt to see the numbers climb. Surreal? Validating? Terrifying? I can't wait to do it again someday, but maybe with a little more sleep next time.