React Native is a relatively new framework. The developers who work with these libraries come from different backgrounds. We have gathered stories of Frontend, Mobile and Junior Developers who shared their thoughts on how to learn React Native. Meet Kacper, Alex and Dominika: 3 different paths and attitudes, one aim: to start their adventure as a React Native Developer.
Kacper – His professional background was control system engineering, but frontend development got his heart. He has been in commercial software development for over 5 years.
Alex – passionate about iOS development. Over 4 years of experience as a Mobile Developer.
Dominika – ex-pharmacist. She began her adventure with React Native as a junior software developer.
What were your beginnings with React Native?
Kacper: I started using React Native more than a year ago. Back then it was still a very young technology and hype for it was at its peak. The beginnings were hard, but the promise of being able to create mobile apps with JS and React components approach was very compelling for me.
Alex: I’m a native iOS developer. One day I was asked if I’d like to implement my next project in React Native. I wasn’t happy about that, but decided to give it a go and took that free time between the projects to familiarise myself with this technology. I’ve studied Javascript at my university a while ago and didn’t use this language since. As you can guess a lot of things have changed. I’ve started with ES6 Javascript course and continued to React Native for beginners. I was having a really tough time with Flex layout. The framework itself wasn’t stable enough for me (it was somewhere around v0.2) and I wasn’t very impressed by it. A lot of strange warnings and errors, but then it was probably because of my lack of knowledge.
Dominika: During my internship I became a part of React Native team, but I had only some experience with React. I started with writing automated tests (E2E) and I wasn’t happy with it. As a newcomer, I wanted to write ambitious code, not only tests. It was my first lesson. It taught me how much I had to learn and how important the tests were. Now I know it was a great move of my preceptor. I had time to get to know the new framework basics, the project structure, navigation, components and many more things that were completely new to me. After a few weeks, when I was ready, I started writing new features.
How has your attitude towards React Native changed during your work with this framework?
Kacper: It hasn’t. I enjoy working with React Native so much! 🙂 But seriously speaking, it’s just really hard to describe my attitude. It was positive from the beginning and more experience just confirmed that I really enjoy creating mobile apps.
Alex: At first, I was very sceptical about this framework, but now, after I’ve successfully finished a couple of projects, I can say that I even like it 😛 I still don’t want to be 100% React Native developer, but if I get a proposition to make the next project in React Native, I will accept that. At the moment, the actual version is 0.55 and there is a huge difference between this and let’s say 0.2. Can’t wait to see what will be in the version 1.0! I believe I’ll develop an iOS app faster using Swift, but let’s not forget that in React Native we get 2 apps in one 🙂
Dominika: At first I had doubts if I could handle the new challenges, after all, there were so many new concepts, but it only motivated me to spend every single minute learning React Native. Now, when I know how the navigation works, I am familiar with the basic concepts of the two platforms, and I know a little about the native configuration of a project, I sleep well. But still, I spend every moment to improve my freshly learnt skills.
What are the biggest challenges with React Native?
Kacper: Most of the challenges React Native presents for me are connected to the native platform code and their style guides. For a dev like me, coming from the front-end environment, the learning process would be longer, if not for the help from the native developers. Personally, my biggest challenge was implementing animated charts. I was surprised by the number of methods to render a simple chart.
Alex: For me, it’s a Flex layout. When I do a layout using constraints, usually, looking at the designs, I already know how I am going to implement that. This is not the case for React Native. Sometimes I need to reimplement a layout, because I forgot about some rule and the same layout can be achieved using less code. Fortunately, I don’t need to build my app every time I change something 🙂
The second biggest challenge is Android and everything that is related to that system. In my opinion, to be a good React Native developer, you should know both native platforms or at least, know how to add an app icon, splash screen, distribute an app etc. When something isn’t working on iOS, I can handle it, but the real fun begins when the app starts crashing on a random Android phone. And what if you need to integrate a native library to your app? Now I think I should start learning Android too.
Dominika: Now it is ridiculous to me, but at the very beginning, the biggest challenge with React Native was looking for reasons why the project didn’t compile on my computer with Linux in contrast to my colleague’s computer, a MacBook 😉 I had to look for solutions to these bugs and often change some of the native code. It was very stressful because I also had no experience with any native code for Android or IOS.
Advantages of React Native development?
Kacper: It seems to be cheaper to have one code base for many platforms and I’m not talking about Android / iOS, but also about web development! We didn’t have projects including all three platforms, but I can see the potential in code sharing for web and mobile apps.
Alex: Mostly one code base but two platforms, live reload. You learn Javascript, which is the most popular programming language in the world and you can use that knowledge to start making apps in Node.js for example. There is even React Native for a web project! It’s always good to change your development stack to learn something new and use this knowledge in your field of expertise.
Dominika: I think that the most important advantage is that developers write one code for both platforms, which decreases the time of development, which decreases the final cost and encourages investors to create mobile applications. So far, customers have always wanted Responsive Web Design applications, but thanks to React Native getting mobile applications became cheaper than writing code for Android and IOS separately. It made mobile apps more available even for small companies.
What would you advise people who want to start their adventure with React Native?
Kacper: iOS development seems to be much easier, and as a result, the Android development gets pushed into the background. Yet, if you aim for Android and iOS, I suggest trying to do the opposite, meaning starting from Android. Also, don’t neglect learning some things about the platform guidelines, try to implement some easy apps on Android and iOS. That broadens perspectives and makes developing RN apps much easier.
Alex:
- If you are a native developer (iOS or Android), just give it a go. You’ll definitely learn a lot of new stuff which you can use even in a native project. Knowledge of React Native and Javascript will make you a more skilled developer overall.
- If you are a front-end developer with React knowledge, I suggest taking at least basic application development course for a platform you’re more interested in, preferably both. This course should also cover application release, since there are a lot of things to do in order to sign the application and make it available either for beta testers or on the App Store / Google Play. Then you should read Human Interface Guidelines from Apple and/or Material Design Guidelines from Google. This will make you familiar with navigation and interface essentials on mobile platforms, because these are different from the web. Alternatively, you can start from React Native course right away and learn all this stuff as you go, but I strongly recommend to familiarise yourself with mobile platforms before creating any apps, because this can lead to the web experience on a mobile platform, which is really bad.
Dominika: Do not be afraid to start learning React Native on your own, write your own code and enjoy it!
How do you think React Native will develop in the future?
Kacper: Flutter is said to be React Native’s opponent and an alternative solution. It will be used more and more. However, I don’t think RN will go away any time soon. It’s understandable that developers get bored and tend to look for different technologies, but React with its community seems to have settled here for longer.
Alex: Right now React Native has support for iOS / tvOS / Android / Android TV apps. I think that watchOS / wearOS support can be added in the future. There are also rumors that Apple will introduce universal apps between iOS and macOS, which means that React Native apps possibly could be run on macOS too. Perhaps, we will be able to write a code that runs on 7 or more platforms! Of course, there will be platform-specific code, but business logic and maybe some basic views can stay the same.
Dominika: In my opinion React Native is the future of Hybrid App Development. The most important fact is that reusable components are written in JS for both platforms, but they render natively.
The app has got the look and the functionality of a native mobile application, but the development is faster and cheaper. Applying React Native UI components to an existing code written in other hybrid framework is also possible. Furthermore, RN is an open-source project, so the community cares about its development. I believe React Native Applications will supplant native applications in the future.
Thank you for sharing your insights!
Eager to move forward with React Native? Or maybe you are already an experienced React Native developer?
If you’re interested in applying for a developer position and would like to see what it’s like to work at DeSmart, check out our recruitment info and join us!