In 2020 React Native once again became the most frequently used framework among the developers to create cross-platform applications.
Several reasons stand behind this. Firstly, cross-platform applications are getting more popular due to low cost and high speed of development. Secondly, React Native is written on JS, which makes the transit easier for developers if we compare it to other cross-platform frameworks.
If you decide to apply this technology for your project and you don’t know where to find a React Native developer, this post is right what you need.
What does a React Native developer do
There are many React Native developers. Firstly, you should understand who you need and determine the amount of work this person needs to accomplish on a project.
These are the typical tasks for a React Native developer:
- Write JS in compliance with the recommendations;
- Integrate React Native modules to the application;
- Review peer code;
- Use git as a version control system;
- Support product through the entire life cycle: concept, development, and release;
- Work with engineers, designers, and other members of a development team to tweak the final product;
- Code optimization to improve performance, stability, and reliability.
The quantity and complexity of these tasks will determine the choice criteria for a software developer. Therefore start with defining your needs in particular.
What are the main skills of a React Native developer
To solve the set tasks a developer should possess appropriate skills. The more skillful he is, the more complex task can be accomplished.
It’s worth mentioning that both soft and hard skills play an important role when choosing a developer. Our post Why Soft Skills Matter When Hiring a Software Developer provides more detailed information on soft skills.
Must have hard skills of React Native developer
Here is a minimum skill set a React Native developer should possess:
- Knowledge of JS (ES6+).
- Knowledge of JS CSS.
- Knowledge of JS React Native.
- Knowledge of JS React.
- Knowledge of JS Redux/Redux Thunk.
- Professional experience of work with TypeScript.
- Knowledge of any VCS.
The required skill set can be broader depending on the specifics of your project.
React Native component libraries every mobile developer need to know
These days almost no projects are created with pure React Native. Ready solutions like libraries are used for more convenience, better speed, and reliability. A library is a collection of components and components are independent, separate application interface elements. Components can be as simple as buttons, input fields, and more complex like video players, popup windows, etc. For instance, if a button is required the developer will not create it from scratch but will style a ready element from the library.
Below you can see a list of the most frequently used component libraries for React Native.
To learn more about React Native component libraries we recommend you to visit Github. You can have a thorough look at the libraries that might be helpful for your project and which of them a future candidate should be familiar with.
We would recommend having a CTO involved in this process (if you are not a CTO yourself).
The importance of having a CTO in the software development team and how to hire one is presented in our article How to Hire a CTO for a Startup and Not to Fail.
What question to ask during React Native interview
All React Native developers can be divided into three seniority levels: Junior, Middle, and Senior. The higher the level the more knowledge and experience a candidate possesses. More information about each of the levels and skills standing behind them, tasks a developer can handle, and cases this or that level should apply to, read in our article 5 software developer levels: whom to choose.
To understand if a developer conforms to the level specified in the CV it is reasonable to interview a candidate. The difficulty of asked questions should depend on the seniority level of a developer required for your project.
An interview includes 2 stages: theoretical knowledge assessment and a coding task to test practical skills. Here we can help you in listing the questions you can ask to check the developer’s theoretical knowledge.
Junior React Native interview questions
Q1. What basic components does React Native use?
A1. <View>, <Text> ,<FlatList>, <Image> .
Q2. Flux is a framework or a library?
A2. Neither of them. Flux supplements React and assists in managing the application state.
Q3. What is JSX?
A3. JSX is XML/ HTML like syntax used by React to extend ECMAScript. Thus XML/HTML -like text can co-exist with JS/React code. Syntax is intended to be used by processors (Babel transpiler for instance) to transform HTML-like text found in JS files into a standard JS object.
Q4. When would you use ScrollView instead of Flatlist and vice versa?
A4. Use Flatlist to render a list of similar elements from an array or a huge data list. When a dataset is relatively small and the content should be displayed in a scrollable container ScrollView should be used.
Middle React Native interview questions
Q1. What is the difference between useState, useRef, useCallback, and useMemo hooks?
- useState – saving data between the renders (refresh leads to repeated rendering)
- useRef – saving data between the renders (refresh doesn’t result in repeated rendering)
- useCallback – store of the call back itself (reference equality) between the renders
- useMemo – storage of calculation result between function calls and between the renders.
Q2. What is the difference between flexbox in React Native and the browser?
A2. Flexbox in React Native works the same as CSS on the web, with some exceptions:
- FlexDirection uses a column instead of a line by default
- Flex parameter supports only a single number
Q3. How and what is JSON used for?
A3. JSON – is a text data format that can be used to store nearly everything (from a single number to lines, objects, and massives in the text). In most cases, JSON is used to communicate data from a server to a browser.
Q4. What is the value of the ScrollView component?
A4. Ability to scroll/swipe the content that takes more space than can be displayed.
Senior React Native interview questions
Q1. Describe the process of rendering in react native (how, how many times, etc.)? While interviewing a candidate ask additional questions about conditions. For instance, how many renders will be executed when changing the reference and/or state [useRef() useState()].
Q2. What is the expected result if a hook with a state inside (useState) returns a function that adds some data to the state (for instance, state + 1 or concatenate strings or adds a new element to the array)? There are also 2 components that use this hook and at the same time trigger hook setter function. What is the expected result? To solve this, reference should be used instead of state and everything will work.
Q3. Are there any peculiarities of using modal windows on android and iOS? What are the behavioral specifics? How would you organize navigation, what are the options, transitions options, etc?
How much does it cost to hire React Native developers
By now you should know how to assess the level of developer’s knowledge. We still need to know the rates of React Native developers and where to find them.
The average salary of React Native developers is listed below. The data is taken from Payscale, Glassdoor, Indeed, Salaryexplorer.
The cooperation model will determine where to find a developer. Read more in our post How and Where to Find Software Developers Who Meet Your Needs.
Now you are familiar with the key aspect to consider when hiring a React Native developer:
- Scope of activities a developer should be responsible for;
- Core skills a developer should possess to fulfill the activities;
- How to interview a developer considering experience and seniority level;
- Hourly rates of developers depending on their experience and country of residence.
Knowledge of this information will make the hiring process less challenging. We hope that you will find the developer with whom you push the boundaries.