Using Cursor
How I ended up developing with Expo
The Development of the DARO React Native SDK
I previously wrote about my experience developing the React Native DARO SDK. The SDK was finished and tested in a sample project, but we needed to test it in a live project. So, I decided to build a brand-new app using Expo. I had built up some experience with React Native and was also eager to give Expo a try. Most importantly, an exciting idea had just popped into my head.
The Idea
It all started with a thought: what if an AI weathercaster read the weather out loud in easy, natural language? I figured it would be even more fun if the caster was a cute animal, and that I could easily pull this off using the ChatGPT API or the Eleven Labs API.
AI Weathercaster (feat. Voice)
My English nickname is Lion 😜
I designed it as a simple app with a tab-based screen structure.
Referencing the Expo React Conf App
There’s a presentation from an Expo developer at ReactConf 2024 explaining Expo and EAS, which was really helpful. They actually built the ReactConf app with Expo and released it as open source. When I first wrote code in Expo, I found the file system-based routing incredibly convenient. It also offered a ton of ways to customize tabs and navigation bars.
The Development Process and Cursor
I have to mention Cursor here. Simply put, Cursor is a fork of VSCode with a ton of built-in AI-assisted code editing features. If you've used Copilot in VSCode, you know what it’s like. Just imagine something 10 times better than Copilot, packed with various useful features specifically designed to boost your productivity.
If you write a PRD and add a .cursorrules file, Cursor becomes even smarter. Cursor mainly features two tools: Chat and Composer. Chat gives the engineer more control. Instead of automatically applying the generated code, Cursor lets you add only the parts you want. Try using Chat when you need to understand the code. It feels exactly like having an engineer sitting next to you who already knows all the history.
Composer is the main feature. It has normal and agent modes, and you should definitely use agent mode. Since the terminal is integrated, you can even commit and push directly. It allows for quick iterations where you can understand the code, develop, and find bugs all at once.
I'll dive deeper into my praise for Cursor in the next post.
My Experience with EAS
EAS (Expo Application Services) is a cloud-based service provided by Expo that lets you easily manage the build, deployment, and updates of React Native apps.
It even automates deployments to the Play Store and App Store. Especially with the retirement of Visual Studio App Center, using EAS Update seems like the natural choice. If you're developing as an individual, the cost of EAS doesn't seem like it would be much of an issue.
Pros and Cons of React Native and Expo
Pros
Fast development, especially Hot Reloading
Cross-platform
Streamlined workflow
Cons
Native feature constraints
Cost issues
Wrapping Up
Using Expo, you can develop a working prototype or a production-ready app for both Android and iOS in a very short amount of time. If you throw Cursor into the mix, your development speed becomes several times faster. While SwiftUI's Preview still has many limitations and is quite slow, React Native's Hot Reloading is incredibly fast.