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 is used for routing and navigation in React Native apps. Navigator has some common elements which Enatega uses.
- 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
Modern apps are unsuited for REST architecture, hence GraphQL serves as a replacement. The point-to-point structure of REST, a procedural API protocol, makes it necessary for service providers and users to plan out each use case in advance. Development is noticeably slowed down when frontend teams must continually ask backend teams for new endpoints, frequently with each new screen in an app. Both teams must work separately and quickly.
While Redux is typically used for application level state management, we used Apollo’s built-in state management in our app. Redux’s flaw is an excessive amount of boilerplate code that bloats the code and requires a steep learning curve for new users. We have leveraged its built-in State management capabilities given by the Apollo Client as we are already utilizing Apollo as a replacement for REST without needing any third-party state management libraries. Our medium-sized application integrates seamlessly with it.