From Zero to Monetized iOS App in 10 hours with Bolt.new, Expo, and RevenueCat
More of my Bolt.new $1M Hackathon Experiences, this time focusing on using Expo to build native apps
As part of the Bolt.new hackathon, I was able to go to from an idea to a monetized iOS app in about 11 hours of focused work. The app is called Systematic, and its a flashcard app to review key concepts on databases, networks, and API designs to prepare for tech system design interviews. You can find it on the App Store here. Here’s a screenshot of it:
I measure my time spent on projects in my time-tracking app, Interstitch, and it took me about 6 hours of focused work to go from “idea” to “in the App Store” and about another 6 hours of focused work to add the subscription monetization features with RevenueCat. Pretty good!
A couple weeks ago, I wrote about speedrunning an AI art app using Bolt.new, Supabase, and Replicate. The goal there was to build an app with a last-minute deadline as a favor for the organizer of an AI Art Meetup, but I was also motivated to use Bolt.new because of their hackathon with over a million in prizes.
Bolt.new also has several $25k prizes for apps that use Expo and RevenueCat to build monetized native iOS / Android apps. And as someone who already has an app using Expo and RevenueCat in production, I was eager to try out Bolt.new’s integration so I can circle back to that app with new tools.
So, I set out to again try to ship and monetize an app as fast as I could.
This post walks through what it took to go from zero to shipped, what went well, and what still had rough edges.
First Pass In Bolt.New
I started with the following prompt:
Build a mobile app that is a system design flashcard app. It should be minimal and offer a few quizzes on :
databases
networking
api design
All the flashcards can be statically stored for the first pass. No user login is needed. Keep it simple and minimal, but good looking, with maybe a few visual fx like confetti.
I stressed to keep it minimal and simple since sometimes AI agents can get a bit too creative and start adding up lots of UI for features like user authentication that don’t exist and aren’t necessary for a v1.
The request for the confetti was to make sure there was some visual “juice”, though if I were to be more thorough here, I should have first brainstormed different “juice” ideas with the AI, then asked it to add that. But showering confetti on a right answer seemed like a good start, and the agent did an excellent job with the animation.
My Favorite Prompt Engineering Trick
The first pass of the app looked great, but there was a slight problem. Whenever I answered a question, and clicked “got it right”, and expected to move to the next question, it would “flicker” the old question for about a second. It was minor, but very distracting and made the app look unprofessional.
I told the agent to fix the flicker several times, and it went into the frustrating loop that AI agents sometimes get into, where they repeatedly say:
They understand the problem
They have a working fix
The fix is implemented
….but then I check and the issue is still broken
fortunately, I was able to re-use a trick that I mentioned in my post on the Vibe Coding Game Jam.
I prompted the model in the following way:
First, determine the logic for when the next question should be rendered and replace the current question
Next, determine the logic for the timing of when the “question answered” buttons are pressedVerify those occur at the exact same time. If not, fix it.
This prompting strategy fixes it. Giving the LLMs a way to make a multi-step plan is a well-known way to get agents to accomplish tasks, but helping the agent by providing your own plan can sometimes get it out of a rut.
Minor Bumps On The Road
After I had a pass of the app working in the Bolt.new preview, I synced it to a Github repo and finished most of the building and App Store publishing in my local repo using Cursor.
There were a few minor issues with building it for the App Store, which was fixed when I ran npx expo doctor
, which is an Expo tool to make sure all dependencies are on the same page.
I was surprised to get errors related to permissions to use the iPhone Camera when I deployed to the App Store. Turns out, the Bolt agent added a bunch of dependencies to set up the Camera to my flashcard app, which makes no sense, and once again shows that the AI-generated code still benefits from human review.
Publishing the App and Trying Out RevenueCat Paywall
To create the iOS screenshots, I used App Mockup. I initially generated fancier ones but they got rejected during review. iOS review is notoriously inconsistent—they encourage straightforward screenshots, yet nearly every top app disregards that guidance. So in my experience you have to try a few times until you get a more permissive reviewer. For now, I used simpler screenshot annotations and will try a fancier one in a future update.
The hackathon requirement mentioned using RevenueCat’s Paywall system, which lets you design a paywall in a web design kit, that you can then experiment on without changing your code. Here’s what my Paywall design looked like:
As you can see, the design tool is similar to Figma.
I’m a little unclear what the value proposition of this tool is. I think the idea is that a developer can build an app, and then the marketer can just iterate on the paywall without a developer’s assistance, and without re-publishing the app. This makes some sense since the paywall will be one of the most important pieces of monetization, and a screen you’re going to iterate on more than average.
But this doesn’t seem to add much value to me, since using AI like Bolt.new to build screens is faster than what I’ll slowly design myself, and you can already publish Expo apps OTA (over-the-air) without going through the full app publication lifecyle.
So I found their desire to highlight an “old-school no-code” feature as part of a “new-school AI no-code” hackathon a bit odd. However, I am curious to try this Paywall feature along with RevenuCat’s Experiment features. It’s possible that the Paywall still makes pricing A/B tests easier, so I’m open to exploring more there.
Wrapping Up
About 2 years ago, I wrote a post on my old blog about going from an app idea to a paid subscriber in one month. At the time, I thought that was a pretty ambitious schedule and I was happy to have succeeded. (as an aside, that app and blog post have since been removed - long story).
Throughout my 13+ years at big Silicon Valley companies like Google and Pinterest, I mostly did backend work. When I set out to build my own apps, both as side projects while working and when focusing full time on indie apps, writing frontend code was a huge time sink. I know React and React Native fairly well, but doing good UX design in Figma, translating that to CSS, and just churning through the high volume of code required was a massive drag on my velocity.
AI frontend-generators like Bolt.new massively accelerate that velocity and unlock the ability to experiment with many more small apps to see what gets traction.
But, I will note that while Bolt was fantastic for creating UI screens, I found myself syncing to Github and working in Cursor for all further work, such as setting up RevenueCat. Both Bolt and Cursor are using similar models like Claude under the hood, so the difference really came down to the rest of the development environment. Cursor is still built for coders and makes working with the code easier, and even though I’m letting the AI do most of the coding, Cursor lets me “keep an eye” on things more as I fill in the rest of the backend.
One rough edge I hit was that Bolt’s one-project-per-repo structure doesn’t play well with my Turborepo setup, which I use to manage a growing portfolio of apps in one repo with standardized dependencies and tooling. I’m toying with the idea of building an AI agent to sync Bolt-generated screens into larger codebases.
Signing Off
Thanks for reading! Let me know if you checked out the app, have any questions about Bolt or Expo, or any other thoughts on AI no-code UI generators. Feel free to get in touch by replying to this email, leaving a comment on Substack, or emailing me using the email listed on my personal site.
This is awesome. I've appreciated your recent posts, Bill. One recently inspired me to try to create a site using AI.
I wonder what you think about this idea.
I'm gathering interest for a 100% free tool called MakerMatch.
"Find Your Perfect Bootstrapped Business Partner: Connect with like-minded entrepreneurs who'd rather build profitable, sustainable, enjoyable businesses. No VC funding or large teams."
Like OkCupid for bootstrapped business partner matching.
Want to see what I have so far?
I was impressed that AI made most of this page within minutes.
https://makermatchapp.vercel.app
P.S. I'm building it because Y Combinator Co‑Founder Matching connected me to super impressive people, but none of them wanted to build a bootstrapped, sustainable, profitable business. They all wanted to take investors and aim for unicorn status. That's not my dream. My bet is that many other entrepreneurs would prefer to find a bootstrapping-minded partner too.