The components of the App are built using the core components of React Native. The theme also constantly incorporates various other latest technologies.
React Native #
React Native helps in making the development work easier and allowing the developers to focus on the core app features in every new release. It is the fastest-developing mobile app development that essentially permits you to create an isolated product with often outcomes. The hymn of React Native — learn once, write anywhere. React Native takes charge of the view controllers and programatically generates native views using javascript. This means that you can have all the speed and power of a native application, with the ease of development that comes with React.
In each new release, React Native aids in streamlining the development process and enabling the developers to concentrate on the essential elements of the program. It is the mobile app development that advances the quickest and ultimately allows you to produce an isolated product with frequent results. The adage “Learn once, write anywhere” sums up React Native. React Native takes control of the view controllers and uses javascript to programmatically produce native views. This means that you can combine the simplicity of React development with all the speed and power of a native application.
Expo #
Applications for react native are created using Expo. It gives you access to a number of tools that make creating and testing React Native apps easier, as well as the user interface and service components that are typically found in third-party native React Native components. All of them are available in the Expo SDK.
Expo is used to build Enatega. Without you touching Xcode or Android Studio, it is powered by Expo SDK to provide you access to your device’s capabilities and the Expo services to handle the labor-intensive task of generating your app binary and submitting it to the store. The “bare” methodology gives you complete control over your iOS and Android projects while simultaneously accelerating development with the Expo SDK and React Native.
React Navigation #
In React Native apps, routing and navigation are handled by React Navigation. Some Navigator components are shared with Enatega.
- Drawer Navigator Its used to make a drawer when a user swipes from left to right or presses the drawer icon
- Stack Navigator Stack Navigator stacks screens on top of each other and only one screen is shown at a time
- Switch Navigator Switch Navigator is used for the authentication flow inside application. Currently no authentication happens in Enatega but for good practice all routing related to authentication is made using this
Apollo GraphQL #
GraphQL is a substitute for REST architecture modern applications aren’t fit for REST. The reason is the point-to-point nature of REST, a procedural API technology, forces the authors of services and clients to coordinate each use case ahead of time. When frontend teams must constantly ask backend teams for new endpoints, often with each new screen in an app, development is dramatically slowed down. Both teams need to move fast independently.
For Application level state management conventionally Redux is used but in our app we have used Apollo’s built in state management. The problem with Redux is too much boiler code which bloats code and has a strong learning curve for new user. Since we are already using Apollo for replacement to REST without using any third party state management libraries we have used it’s built in State management provided by Apollo Client. Our application is a medium size application and works very well with it.