form9: idea to App Store in 13 days
Published 14 July 2026 · Agata Raap
On 28 May 2026, form9 was an idea: sudoku, but with nine shapes instead of nine digits. On 9 June it was in App Store review. On 15 June it was live. Thirteen days from empty repo to submitted binary — engine, in-app purchase, daily challenges, streaks, onboarding, full German localization, a VoiceOver pass, screenshots, and a landing page.
I want to be careful about what that number means, because “shipped in 13 days” is the kind of line that gets screenshotted without the footnotes. So here are the footnotes.
A rented deadline
The honest cause of those 13 days is not discipline. It’s that I paid for a deadline.
In late May I joined Ship or Die, a paid accountability programme run by Marc Lou and Jack Friks. The premise isn’t a one-off sprint — it’s ship an app every 30 days until one changes your life. Recurring 30-day missions, no finish line. I blew my marketing budget on it, which felt ridiculous at the time. My stated ambition was to at least earn back a Döner.
It worked for exactly the reason you’d expect and don’t want to admit: an external clock is a better forcing function than willpower. Every scope question stopped being “would this be nice?” and became “does this fit in the 30 days I’ve already paid for?” Most of the time, the answer was no. That’s the feature.
The first week is the whole bet
Day one is the whole bet, and I made it deliberately fat: the SwiftUI scaffold, the sudoku engine (generator, solver, seeded RNG so a daily puzzle is the same for everyone), the gameplay loop, the RevenueCat lifetime unlock, themes, statistics, the daily archive — and a TestFlight build uploaded the same evening. The store listing went up in App Store Connect that day too, after Apple rejected the ✦ character in my subtitle, which is a very on-brand way to learn a rule.
The rough version being installable on day one is what makes the rest of the sprint honest. Everything after that is a decision made against a thing that exists rather than a thing I’m imagining.
Then day seven happened: twelve commits in a single day. Solve scoring with an animated score sheet, graded solve words, save-and-resume with a pause-aware timer, a settings redesign, review-prompt wiring, and the streak flame — a little fire that heats from orange to red to blue to purple as your streak grows. None of that was on any plan. It came out of playing the thing every evening and noticing what felt flat.
Two days earlier I’d renamed it. It had been a capitalised, tidier name; it became lowercase form9, with a lowercase-f icon to match. Small, cosmetic, and it’s the version I’d have regretted not doing.
What I refused to cut
Day nine went to onboarding — a four-step, rule-by-rule teaching animation — plus a full German sweep to zero untranslated strings, a VoiceOver pass, and an accent colour picked to clear WCAG contrast rather than to look good in a screenshot.
That’s a day I could have “saved”. I don’t think I could have. Accessibility and localization are cheap while an app is small and genuinely expensive to retrofit once it isn’t; cutting them wouldn’t have bought me a day, it would have borrowed one from the next version at interest. A shape-based puzzle game that a screen-reader user can’t play is a puzzle game with a bug, not a puzzle game with a missing feature.
The other thing that stayed: on day twelve, the final step of onboarding became the paywall. Not a sheet fired afterwards — the last card of the tour, framed as supporting an indie dev. Being asked politely at the end of a lesson is a very different experience from being ambushed at the door.
What I cut without blinking
Game Center. iPad. The friend-challenge deep links. All three were real, wanted features. All three shipped, or are shipping, in 1.1.0 and 1.2.0 and later — and not one of them was a reason someone would keep or delete the app in week one.
That’s the whole cut rule, and the deadline is what made it easy to apply. Without it I’d have built Game Center in June and submitted in August, and told myself the app was better for it.
Then you wait
Submitted on 9 June as build 7. Review took about six days — you don’t get to schedule that part.
What I did with the wait is the least original thing in this article and the one I’d repeat: I built v1.0.1. Multi-cell pencil notes, a daily reminder smart enough not to nag you about a puzzle you already solved, a German bug squashed, and a hexagon shape swapped for a slash glyph that reads better at small sizes. It cleared review in under twelve hours after 1.0.0 went live. The queue is dead time only if you treat it that way.
The build log was the marketing
Every day of the sprint went out as a “Day N of 30” post — a checklist, a screenshot, what broke. Not because it was a clever growth strategy, but because the programme required it.
It turned out to be the marketing. When form9 went into review I posted “13 days ago form9 was an idea. Today it’s sitting in App Store review” and asked people what their fastest zero-to-submission was, and that single post outperformed everything I’d written about the app being finished. There’s a widely-shared analysis of 9,556 posts (a vendor study, one source, take it with tea-appropriate skepticism) claiming goal-share posts land in an author’s top quartile about half the time, while the generic “here’s my app, check it out” launch drop is measurably the worst-performing format there is. That matches what I saw, and it matches the obvious thing: nobody wants your link, but people are unreasonably invested in whether you’ll make it.
So: is 13 days a good idea?
Thirteen days worked here because sudoku’s rules are a solved problem. No backend, no accounts, no sync. Almost none of those days were spent on the hard part, because there wasn’t one. If your app has a server in it, this number is not your number, and anyone selling you a 13-day timeline for it is selling something.
What the sprint actually bought was a decision rule I’ve kept: anything that isn’t a reason someone keeps or deletes the app in week one goes in the next version. The deadline didn’t make me faster. It made me choose — and it turns out most of what I’d have built, given a comfortable timeline, was stuff nobody was waiting for.
form9 is on the App Store: a lifetime unlock, no ads, no tracking. €4.99 is the German base price — the other storefronts are localized to local purchasing power, so what you actually pay depends on where you’re buying from. The next one (perked) took less time than this one, and that story has a price ladder in it.
Shipping something on a deadline you regret paying for? Tell me what you cut — I’m on X and Bluesky, kettle’s on.
Frequently asked questions
- Is 13 days realistic for a solo developer?
- For a well-understood game with a small surface, yes — sudoku's rules are a solved problem, so almost none of the 13 days went into the hard part. It is not a template. Swap the puzzle engine for anything with a backend, accounts, or a sync story and the number changes completely.
- What did you cut to hit 13 days?
- Game Center (shipped later in 1.1.0), iPad (1.2.0), and the friend-challenge deep links. All three were real features and none of them were reasons a first user would keep or delete the app, which is exactly what makes them cuttable.
- Didn't the accessibility and localization work slow you down?
- It cost a day and it stayed in. Full German localization and a VoiceOver pass went in on day 9, and the accent colour was picked to clear WCAG contrast. They are cheap while the app is small and expensive to retrofit later — cutting them would have been borrowing against the next version.
- What is Ship or Die?
- A paid indie-maker accountability programme run by Marc Lou and Jack Friks: recurring 30-day missions, framed as shipping an app every 30 days until one changes your life. It is a deadline you pay for. That sounds absurd until you notice how well it works.