My experience using Replit to create a native mobile app
Nearly four years ago, I wrote about my experience using a no-code tool called Thunkable to build our mobile app. I explained in that article that the mobile app is largely just another way to offer the website experience for those who prefer a native app, and that it leverages WebViews to do most of the work. In that sense, the mobile app is pretty simple. It requires native login and sign up screens, along with some WebView screens.Despite this simplicity, building and refreshing the app every 4 to 5 years was a grueling process. Obtain a Macbook, learn how to write Swift and navigate Xcode, write the code itself, and learn the process of deploying the app to the App Store - this could take many months. Eventually, I started outsourcing this work. That was better, but costly. I usually had to pay a developer several thousands of dollars, and I still had to help QA and "project manage" the effort to ensure it got done.
My experience with no-code, as you can read in the above linked article, was generally positive. But it still took a lot longer than I would have preferred, and it came with some limitations that the no-code tool could not overcome. When I returned to Thunkable years later to try to refresh my app, it no longer worked, leaving me stuck at ground zero once again. So when Replit announced they had rolled out Native Mobile App builds, I had to give it a try.
My prior experience with Replit and other "vibe coding" tools had not been great. While I was impressed with how quickly these tools could generate a basic prototype, the process fell apart when I tried to do anything complex. The more bugs that got introduced, the more tokens I had to use to try to fix the bugs, and the costlier it became. Overall, I gave up on "developer-less" vibe tools and returned my focus to using code assistants.
While code assistants have been absolute game-changers, I found them pretty lousy at helping with Native Mobile App development. I gave up for a while on my mobile app, deciding my current app was sufficient enough, and that I could afford to wait for these tools to improve in the native-app space. When I finally dove into Replit for native-app work, I didn't have high hopes. I figured I would run into a brick wall at some point. But what the heck, $25 (which is the monthly subscription fee for a Core user) was a worth a shot.
So how did it go? The short answer is, it went shockingly well. This was, hands down, the most amazing and time-efficient creation of the Pennant Chase mobile app in my 15 years of doing native mobile apps. I benefited from having access to my prior app on Thunkable, where I was able to walk through the logic blocks I had constructed and write a multi-paragraph prompt for Replit. This allowed me to give Replit a detailed description of my app in a single prompt.
Replit went to work, and in mere minutes I had a nearly perfect app, without the feature limitations I ran into four years ago on Thunkable. There were a few minor struggles: Replit couldn't seem to get the logo and the title of the app on the Login screen without them overlapping, so I had to settle for the logo only. Other minor formatting bugs Replit was able to resolve in a couple tries.
At this point, my mind was pretty much blown. I had spent maybe 45 minutes on the project. Four years ago, it took me months (easiy 30+ hours in total, if not more) to complete my app in a no-code tool. This time, it took me less than an hour. I was hoping I would not run into any unexpected issues getting across the finish line. As it turned out, there was one minor hiccup: Since I was updating an existing app, I needed to put the correct version in the app.json file. It took me a while to figure out how to do that, but it was a minor inconvenience considering how magical the experience had been up to that point.
Testing and Deployment. By the time my app was pushed to TestFlight, I burned a mere $7 worth of credits and spent maybe 90 minutes on the project. That's insane. Once I logged into App Connect, it took me twice as long to get everything sorted in the App Store as it did to build the product itself! I found myself annoyed that I was having to spend a few hours trying to get screenshots of my app into the correct format for Apple!
Within a couple days of starting this project, I hit "Submit for Review" and held my breath as I waited out the 48-hour Apple Review Process. In a couple days, Apple came back with three minor issues, two of which were unrelated to the app itself. The third issue involved the App Tracking Transparency framework, which is a newer requirement for apps like mine that may use browsing history to display ads. Replit was able to add the framework into the app with ease. After my second submission, the app was approved. All the App Store nonsense took most of the time required to build and deploy this app.
What about a second app? I also have a basketball-themed app, which is largely the same as the baseball app, but loads some different WebViews. Three years ago, this was an area where Thunkable really shined (at least when Thunkable was actually working properly). In Thunkable, I was able to copy my app, change a few values and images, and boom! I had a second app in minutes. I tried the same with Replit with mixed results. Replit was able to modify my existing app in seconds, but I couldn't deploy that new version through Expo Go to a different app in my App Store Connect account. Since the project was already "tied" to a specific app, I was stuck. I had to start from scratch in Replit. I tried to give Replit the files from my prior project so that the second project would be easy, but Replit failed to simply import the files and make a few changes. I tried a few different prompts to coax it into doing what I wanted, but then it complained it couldn't unzip my prior project.
While this was mildly annoying, Replit delivered the second app in much the same way. I was able to ask it to reference the first app to fix a few of the identical issues that cropped up, so that was helpful. I had always wanted to create a football version of my app as well, so I repeated the process a third time. Interestingly, the design of the third app had some notable differences, but with some prompting I was able to get the third app to look and feel nearly identical to the first two.
Back to the App Store. I was better experienced this time getting all my ducks in a row for the App Store, so it took less time to submit the Basketball and Football versions of the app. Basketball was approved on the first try, and Football had a minor issue in the title that I needed to fix. But, to my complete surprise, I had all three apps live with almost zero effort on the actual app development.
To put it mildly, this was a game-changing experience. I still had $5 of credits left even after all three apps were live! What cost me either months of time or thousands of dollars in the past cost a mere $25 and no more than maybe seven or eight hours (75% of which was spent dealing with Apple's App Store). My mind is still blown.
To be fair, my app is relatively simple, and I was able to reference my past work to create an extremely detailed prompt for Replit. Both factors helped make this a success. Vibe coding remains wildly frustrating if you are trying to accomplish something complex. But, if these are the "early days" of vibe coding, who knows where we will be in a few years. The jump from the "no code" experience I had with Thunkable a few years ago to the "vibe coding" experience I had with Replit was utterly astonishing.


