What do I mean by native? Native means the application is running directly on the mobile device and is not virtualized in any way such as a web app.
With React Native, you don’t build a “mobile web app”, an “HTML5 app”, or a “hybrid app”. You build a real mobile app that’s indistinguishable from an app built using Objective-C or Java.
Laura, Introduce yourself. What do you do?
My name is Laura Medalia and I am a software engineer working at a health tech startup in NYC. I also have a blog all about tech, fashion, productivity, and career tips. I have a tee shirt company where I sell stylish tech themed shirts:
And then I have an Instagram account (@codergirl_) with about 63K followers all about life in tech:
What’s it like being an iOS software engineer?
It’s a lot of fun. Before this I worked on front end, backend, and more devops/infra related work. This definitely feels most similar to front end code. It’s a lot of user facing work and highly design focused. Creating things like animations and styled pages.
My iOS work also has elements of backend and devops. We have to control data management within the app and deployment process. I build out the API endpoints/data stores for the mobile app.
What is React Native?
React Native is a framework for building native mobile apps with React. Right now the supported operating systems are Android and iOS.
How is this different than React for Web Development?
I think a good way to explain this is to note the differences in what the return functions do. So first off, React components return markup from their render function which tell us how they will look. While ReactJS for the web provides an abstraction around the DOM, React Native is providing an abstraction around native app components.
For the web, the markup will be translated into something the browser can understand- HTML. For React Native, the markup the render function returns will get compiled down to something the host platform can understand. With IOS this occurs by invoking Objective-C APIs to render to iOS components and with Android this occurs by invoking Java APIs to render to Android components. Being able to do this creates other differences between the two, but again the major difference is that they are taking React syntax and compiling it down for 2 different types of consumers. I really like this article which goes into a little bit more detail on how React Native works (the bridge aspect being something cool to know about).
What is the benefit of learning React over Swift, for example?
Honestly there are so many pros and cons to learning any language- and I’ve always been someone who learns a language for a use case/the job. So I think high level the right language/Framework for you is going to depend on what you are doing.
Again for me, I’ve typically learned on the job- I learned React Native because it was a job requirement. I think that with a good project you can pick either of these up quickly, and the IOS specific aspects of this (like splash screens or certs) you can share between the two. Another note is that for smaller applications like the one I am using React Native is a viable option, but I do think that with larger applications native strongly typed languages make more sense. If your company is big enough to invest in iOS specific devs, Swift makes sense. At my company, I also do web development. Choosing React Native allowed my company to hire devs that can work on the app and website. We (our team and our app) are not big enough that we need a group of devs to just be iOS focused.
Can you go in a bit more depth on your app setup / deployment setup?
We use Bitrise for CI (continuous integration). For testing we generally run linting + unit tests. And we have been looking into running integration tests with Detox. I am currently building out screenshot testing functionality. We test against a Testflight. We also use CodePush to deploy updates to user devices.
You mentioned you also use Ruby, Where does Ruby come in?
How do I pick up React and start building? Where do I start / learn?
If you are interested in learning I recommend checking out React’s documentation. They do a fantastic job explaining the framework and walking you through great examples. The same for React Native. After that I would recommend trying to build out a simple app for yourself, and then continuing to look up online solutions to any blockers you have.
Once we’ve developed some knowledge and practice with react native, how do you suggest I get a job in this field?
Update your LinkedIn profile to add React Native as a language skill and then start looking for companies using it and reach out to them! You can also apply to job search platforms like Vettery and request React Native positions.
Where do you see react in the next 1-5 years? Is this what we should focus on or is there something newer or better we should consider?
I don’t have a crystal ball so I can’t know for certain. Again I think the answer to this depends on the companies your looking to work at and the products you are trying to build.
Any Final thoughts?
Like with any other language or framework there are going to be pros and cons to choosing yours and those will mostly be informed by your particular use case. Do your research and be thoughtful about your priorities- that should lead you to making the best choice for you.
How can we connect with you?
Anyone else you’d like to see me interview? let me know in the comments section below. Any follow up questions or suggestions for beginner iOS / React Native developers? Leave a comment 🙂.