Back to blog

Expo + React Native as a Beginner

If you told me that in the first 6 months of my 1st development job that I would be working with mobile development, I would have thought there was no way possible since I had little to no knowledge of it. I’ve never worked with mobile development, however while being here at Niedziela Solutions, I have had the opportunity to learn about mobile development by resurrecting the code of an existing app for a client and trying to update it. The mobile app was made using Expo/React Native.

Here are some of my takeaways and thoughts trying out Expo/React Native for the first time.

Initial Thoughts & Expectations

I had no previous experience working on mobile development, but ever since I became immersed into the software world, I had some growing interest in learning more about it. For whatever reason, I always imagined mobile development was easier to learn than web development (which now I know is debatable). When I learned that I would be working with React Native, it was exciting because I knew React Native was one of the more up and coming mobile app frameworks and it would be a great opportunity to learn something so potent. But I also knew I was going to have a lot of growing pains, reading through documentation and familiarizing myself with different software applications and terminology. My boss, Sarah Sunday, thought it would be good experience for me to be exposed to mobile development but also mentioned that it could be weird navigating through dependency hell in React Native. Nonetheless, I was still excited to see what mobile development entailed.

Expo

For this project I was working with XCode for the first time, using XCode’s simulator along with Expo. It was interesting to use a phone without physically touching the phone with my hands. The foundation of the app I was recreating was built off Expo, a framework that uses React Native to build cross-platform mobile apps in JavaScript.

I found my experience with Expo to be straight-forward and relatively easy to follow. The Expo documentation was well organized, and I found the instructions clear on how to install/setup the application. Of course, the process came with some challenges along the way and trying to get the application to successfully open in Expo Go on the simulator. The Expo version of the app was so old that it did not work with Expo Go so I had to upgrade it. I was hesitant to upgrade so many Expo versions at once because that could cause broken parts in other areas, but it had to be done. So I just tried upgrading to SDK 42 (the most recent version at the time) and discovered that this didn’t cause any critical problems.

During the early setup phase while struggling to get the app running, I learned how important it was to try different things but also to document all the necessary requirements for my local setup along the way and figure out what was truly necessary to get the app running on Expo. I realized that for each action I took, I needed to write each step I made down in order to know what worked and what didn’t.

React Native

When it came to the React Native side of things, it wasn’t totally foreign to me because of my experience with some React, so seeing the similarities between React and React Native and the use of JavaScript was easier for me to follow the language.

While I was trying to resurrect the outdated codebase, I ran into a lot of deprecated package issues, version mismatches, and other missing dependencies that added to some of my obstacles along the way. Whenever I ran npm install in the terminal, I was given a list of dependencies to upgrade, or packages that were deprecated. I made version changes in the package.json and again ran npm install in the terminal to see what stuck and what changes I had to make for the app to function properly. This was one of the obstacles working with React Native that Sarah had mentioned because different dependencies must be using a compatible version of other dependencies. I realized that just when I thought I had figured one solution, many more problems arose.

Despite the dependency problems, I feel that because JavaScript is so universally used in the development world and is such an essential language, React Native is an obviously strong mobile framework choice to use.

Final Thoughts

Overall, my experience working with Expo and React Native was very positive yet challenging. Through this project, I was able to highlight that mobile development has many similar yet different advantages/challenges to web development.

Like any other challenges I’ve faced in the Software world, it’s normal to not know everything and that there are going to be many more problems to solve along the way.

If any other opportunity comes along to work with Expo or React Native, I’d be more than interested in using those technologies again. I’m glad I had this experience to work with Expo and React Native because I know mobile development is going to continue to be present in the world and will only continue to grow.

Read more on similar topics