If you are already on the road of taking your idea to reality, here are a few tips to take into consideration. While developing an app for your business keep in mind that this digital product should be able to accompany your growth and give scalability to your business.
Javier Olivieri, CTO at the Puzzle Digital, elaborated a list of recommended technologies to use on the development of a scalable app:
- For mobile applications
- The mobile application should be developed using React Native (React Native CLI, version 0.63) and Typescript. Using these technologies you can use React Hooks and Apollo Hooks to manage local states and API information.
- Redux is your best choice to handle global states, since the use of useContext with React Navigation can generate some rendering problems on the screens when updating a global state.
- In terms of style and design, we recommend the Styled Components library. The consumption of services to the different APIs will be made through Apollo GraphQl.
- For navigation purposes between the different screens of the application React Navigation is the best option.
- Always test your app from end-to-end. You can do this with Jest and React Native Testing Library. And to avoid future problems don’t forget to incorporate an error tracking tool. In Puzzle we use Sentry. And if you are planning to incorporate forms, always validate them with Yup.
- For web applications
- For this type of applications is always reccomended to base it on Next Js, V.10. And for state management, React hooks (especially useContext), to replace the traditional state management libraries such as Redux or Mobx.
- Same as in mobile apps, you may use the Styled Components library.
- The consumption of services to the different APIs can be made through Apollo GrapQl.
- Also as in mobile apps for the handling of forms Javier recommends Formik, integrating it with Yup for validations.
- Always carry out integrations tests. Jest is great for this, as well as the react testing library, or, alternatively enzyme.
- For end-to-end tests will use cypress , and incorporate Sentry as an error tracking tool.
As you can see many of the tools are the same for both types of applications, but on the road, you may find some environmt variables. The handling of information related to settings and environment variables should be addressed through a .env file referenced in the code, accessing the variable that is needed as the case may be. In this way you obtain two advantages: first, avoid exposing in the repository and the code information that in some cases may be private, such as some API KEY, and secondly, offer greater flexibility.