How I vibe coded an iPhone app that I now use every day
Step-by-step of how made a React Native app with no React Native experience
A couple of months ago I got sick and was having a hard time remembering when I took my cold medicine. I started just snapping a picture of the decongestant box when I took the medicine, but my camera roll started getting full of these pictures 🤦♂️
I did a quick App Store search for medicine trackers, but each one had one or more of three problems:
The app was mostly built around medicine reminders, which wasn’t the UX I needed
The app had a subscription, which felt silly
The app had a weird privacy policy
The vibe coding trend had just kicked off, so I decided to see how quickly I could build my own medicine tracker, completely with AI.
If you’re unfamiliar with vibe coding, you might like my post on the topic:
Using ChatGPT to get started
I have some experience with Swift development, but the AI integrations for XCode aren’t really that good yet. I wanted to write a mobile app and use Cursor, but I didn’t have any React Native experience.
I started with a quick chat to list out what I wanted, and ChatGPT gave me some instructions to get started:
In hindsight, I could’ve just dumped these requirements into Cursor. I really only used step one here.
Sure, I could’ve gotten a similar start with a Google search, but when I ran into problems testing even the app scaffold, it was easier to debug with an LLM than a handful of searches.
Using Cursor to get moving on the application
I then opened up the project in Cursor and put my requirements into Composer (now just called Chat):
I'm making a medicine tracker app. Here's some details
- Very simple and pretty layout. Easy to find the core things
- I want to use react native and expo
- I want it to look very native, I'm only interested in iOS
- I want a tab that lets you select from a list of your medicines and opens a model to select a quantity and tap "log". This tab will also let you add a new medicine to the list
- I want a tab that shows a history of what's been taken and when
I just have a fresh expo project here. Let's get started
The agent started scaffolding what I wanted and even started fixing its own linter errors completely unprompted:
With just that single prompt, Cursor set up:
Two tabs: Log Medicine and History
A clean iOS-native look with proper styling
A list of medicines with a modal to log them
A history view showing past logs
Then it gave me a list of options to proceed:
Add proper state management (AsyncStorage + Context)
Add the "Add New Medicine" functionality
Implement the actual logging functionality
Add data persistence
I chose to do the first 2 next, and the agent got to work:
Fixing bugs with Cursor
This pretty much made the whole app. At this point, I’d spent probably 20 minutes and not written a single line of code myself. But don’t get too excited the app had some bugs.
While AI tools are super powerful and have come a long way, it still takes skill and experience to produce good software. My expectation for the future of software engineering is that while software engineers aren’t going to be replaced entirely by AI tools, the field is going to get more competitive. The best software engineers 5 years from now will be those who augment themselves with AI tools, supercharging their productivity.
If you’re really serious about using AI to grow your career, consider becoming a member. Paid members get access to the full newsletter, including some of my favorite parts:
Case studies on how developers are using ChatGPT, Claude, Cursor, Copilot, and other AI tools to augment their work.
Detailed step-by-step guides like this one outlining how YOU can use AI in your software engineering role to ship better products even faster.
Reports detailing what’s new in AI. All signal, no noise.
Monthly subscriptions are just $6 - cheaper than going out to lunch once a month
This was my first real project with Cursor, so I was curious to see how it handled bugs. I just briefly described the two biggest problems to the agent, and it got to work fixing them.
At this point I started to have a little more oversight, reviewing each diff closely to make sure it wasn’t going too far off the rails. It mostly fixed the bugs I was finding without too much guidance, though sometimes it required a bit of encouragement like this prompt:
Still, tapping "add medicine" dismisses the keyboard but doesn't actually add the medicine until i tap it a second time. Fix that next, you can do this!
Getting the app to the App Store
After about an hour, I had a fully-functional app that fit my needs exactly. I figured I’d already made it this far, might as well try to get it on the app store.
First, I used ChatGPT image generation to make a simple logo with a bit of back and forth:
The rest of the process of getting ready for App Store submission took much longer than making the actual app:
Getting an Apple Developer account (and paying my $100 fee 🤮)
Setting up my Expo dev account
Making a signed production build
Making app store screenshots
Submitting the app details for review
These things together took about 2 hours. So in around 3 hours, I had a working medicine tracker on my phone and the app submitted to the app store. 24 hours after that, the application was approved! Now you can download it from the App Store yourself if you want to see how Cursor did.
I hope this was genuinely useful for you! One of my favorite things about AI tools like Cursor is how much easier they make it to tinker on side projects like this one. Let me know what you’d like me to write about next!
Really impressed by how quickly you got through the App Store submission process! I’ve tried similar things with a few different apps, my first was a MacBook app, and figuring out certificates and provisioning profiles was a whole workout (even with help from Cursor).
Loved this bro 🤜🤛. Opening a whole new world for non-engineers.