Friend App - Choosing a Mobile Stack

Nov 29, 2024

I wanted to make a mobile app that reminds me when I haven't been in contact with a friend for a while. People are busy these days are it is easy to forget about keeping your friendships in tack.

So this leads me to figuring out which method to use to build a mobile app.

Should I go native or use one of the many Javascript/Typescript frameworks out there?

If I go native then my app will be exclusive to iOS, since that is what I use. This means I would need to learn Swift.

On the other hand, it seems like React Native Expo is the most popular way to develop mobile apps with Typescript. This might be the ideal since I know React and Typescript so it would be quicker to learn.

I began reading the documentation on how it all works. It seems fairly easy to understand if you know React. However, there seems to be some limitations of accessing some of iOS features.

Although the app I am building most likely won't run into these limitations, I figured I may as well look at how Swift works.

It seems like modern Swift has been made easier to develop with these days. They introduced SwiftUI to replace UIKit, and SwiftData to replace CoreData. The Swift syntax will probably take some time to get use to, but it doesn't seem too difficult to understand.

The Decision

I decided to develop in Swift so I can get a good grasp on how developing natively works. I think if I have some knowledge in native iOS development, it would make it easier to switch to React Native Expo if I decide to.

Plus I figured it would make it even easier to work with React Native Expo, since they allow Native Modules (i.e. Connecting React Native Expo to native Swift code).

So if I run into any limitations with React Native Expo, then I will be in a position to solve it with native Swift code.

As of now, Swift hasn't been too difficult to work with. Unsuprisingly, most issues I have are syntax issues. The good thing is, XCode tends to catch these issues and I end up looking up the documentation or code examples to solve it.