Being a React Native Developer is About More than Just Writing Good Code

Tanner West
React Native Rocket
5 min readJul 30, 2022
Photo by Barn Images on Unsplash

A lot of us get into software because we enjoy it. I certainly do. I spend a lot of my free time on React Native projects. I consider myself extremely lucky to have found a career doing work I enjoy. Even though I do get paid to write code, that’s not all my work as a software engineer entails. Whether you’re looking to land your first job as a React Native engineer, or you just want to brush up on your skillset for your next job or promotion, these are a few areas you should be proficient in to consider yourself a well-rounded React Native developer.

App Deployment

Maybe you disagree, but deploying apps to the app stores is one of the least enjoyable parts of mobile app development. I’m lucky enough now to work at a company where the mobile engineers don’t have to get too involved in the process, but other companies handle things differently. No matter how your company divides the responsibilities, you’ll definitely want to familiarize yourself with the process of deploying your React Native app to the Apple App Store and Google Play Store, especially if you hope to publish a side project one day.

As usual, the best way to learn how to deploy an app is just to try it yourself! You’ll find plenty of resources online explaining how to publish your React Native app, whether you use Expo or not. Just take it one step and a time and don’t worry if it doesn’t make sense the first time through (especially when it comes to app signing and provisioning profiles 😱).

Trying to meet all the requirements for an App Store submission

Once you get familiar with the process of submitting an app to the app stores, you’ll realize what a pain much of it can be, and you’ll be very glad to learn about Fastlane, if you’re not already familiar with it.

Fastlane is an open source tool that automates some of the most tedious and difficult parts of mobile app deployment, from uploading your app to the app stores to managing your signing certificates. Once you learn to use it, it will become of the most valuable tools in your React Native toolkit.

CI/CD

Virtually all companies have adopted some version of a CI/CD (continuous integration/continuous deployment) pipeline by now. Every company will have its own unique pipeline tailored to its needs, but most have these things in common:

  1. Developers frequently check their code into a shared repo to avoid merge conflicts
  2. App builds are automated and usually initiated by repo pull requests
  3. Tests are automatically ran against builds
  4. New app builds are automatically deployed to the app stores for beta testing
  5. Software follows a predictable testing and release cadence

There are many tools available to build CI/CD pipelines, from classic self-hosted Jenkins instances to managed platforms like CircleCI. Building a full CI/CD pipeline for your weekend side project might be overkill, but taking the time to learn the basics can give you skills that will likely come in handy at some point in your career.

CI/CD is a Rube Goldberg machine for software

If you’re looking to get your feet wet with CI/CD, I’d recommended exploring GitHub Actions. Even if you can just learn to automate building and running tests on your code when you open PR’s to your repo, you’ll have a solid foundation in place that you can build on when the time comes to go deeper into CI/CD.

Backend

The concept of “frontend developer” is starting to become obsolete at more and more companies, especially in companies that use TypeScript across their stack. It’s becoming more common for the same team of developers to maintain a React Native app and some or all of the backend APIs that power it. Even if your current role doesn’t it require it, learning the basics of building backend APIs can help open up new opportunities and take your side projects to the next level.

Node.js can be a great place for React Native developers to get started learning backend. With the Express HTTP framework, you can spin up a local server on your computer in just a few minutes and start learning how to build APIs with JavaScript. Once you’re ready to put your app online, you can easily do so with a service like Heroku or AWS Lambda, which let you deploy your code without worrying about maintaining a traditional server.

Once you’ve learned the basics of HTTP APIs and you’re ready to start exploring things like databases, file storage, and user authentication, check out managed services like Amazon’s AWS Amplify and Firebase. These services dramatically reduce the complexity of provisioning backend infrastructure for React Native Apps.

Testing

It’s notoriously easy to neglect testing even on professional software teams, not to mention in side projects, but well-written tests are a hallmark of reliable software. There are many flavors of software testing, from unit and integration tests to automated, end-to-end tests. Different companies have different needs, but as a developer, it pays to be familiar with all types of tests.

The simplest and easiest-to-write are unit tests. They’re designed to test a single piece or “unit” of your code. What’s considered a unit is often as small as a utility function, but unit tests can often encompass individual React components too.

Moving up the testing pyramid (or testing trophy) and increasing in terms of complexity and time required to write them are integration tests. These tests check to see whether multiple units or your software work in combination. Integration tests more closely resemble how your end users will interact with your app, but they can still be ran against your source code rather than the app itself.

All tests passed

In React Native, both unit tests and integration tests can be written with React Native Testing Library. Check out my article about React Native Testing Library to learn how to get started.

For end-to-end tests, the two main solutions for React Native are Detox and Appium. Both of these solutions interact with your app the way an actual user would, by providing input like touch events, swipes, and typing. These tests can be difficult to set up and slow to run, but when used correctly, can give you a great deal of confidence that your app will work as expected in the hands of your end users.

Conclusion

Writing React Native apps is fun. There’s nothing quite as satisfying as watching a feature you build come to life on a simulator or physical device. Just make sure you’re taking the time to learn the other skills that go into being a well-rounded engineer. A future job offer or promotion may depend on it!

As always, I welcome comments and questions on Twitter @useRNRocket. Follow me there and here on Medium for more React Native content!

--

--