The Bekal Islam application is a da’wah application developed by the UFA team. With this application, users can learn Islam in a basic and comprehensive manner. This application contains a lot of fundamental knowledge about Islam such as Tawhid, Pillars of Faith, Pillars of Prayer, Hajj, and so on. This application was previously available and developed by a developer, but unfortunately due to the busyness of the developer, the application cannot keep up with technology update trends. Finally, sometimes the application does not run on some cellphone models and crashes. Some features also don’t work well.
Because there are so many ustad’s jama’ah, this application is downloaded by hundreds of thousands of people, especially in Indonesia. Of course, this is a challenge in the world of da’wah because the mainstream media are not really effective. The mainstream media supports da’wah, but it is mixed with other content which sometimes distracts users from focusing on studying religion. For example, sometimes unwanted ads, joke content, and other content appear. Application users are very diverse, ranging from young people to the elderly. Our challenge as developers is to develop applications that are comfortable to use for all people, and they can change their display preferences, especially when reading books.
To meet these needs, I decided to use React Native (init) as a support for mobile application development. Compared to native or Flutter which has very good performance, it’s not a reason to leave React Native. Of course, I’m not just choosing, this is based on several considerations:
2. Save much more cost and time. I can handle mobile applications and their back end in one language at the same time.
3. Lots of library support such as state management, database, maintenance, and so on. Accompanied by a large React community.
4. Can run both on Android and iOS.
5. Development, maintenance, and updates can be lightning fast due to Code Push support.
6. According to our analysis, users don’t need extreme application performance like Gojek, Tokopedia, BukaLapak, etc. So React Native is able to handle this need.
- For the database, I use Realm because of its convenience, high performance, and good support from MongoDB.
- For state management, I use Recoil over Redux. Why? The reason is that there are several cases that require high flexibility and ease of writing. Recoil is a great choice for flexibility compared to Redux which has to write multiple configurations and reducers. The first time, I tried to use Jotai state management. After a few times, Jotai wasn’t really good when integrated with AsyncStorage + TypeScript instead of Recoil. That is the reason I replaced Jotai with Recoil.
- For push notifications, I use Firebase. This is the most mainstream.
- For code maintenance and update, I prefer to use Microsoft App Center. This platform supports Code Push for making instant maintenance and updates.
- For the back end, I prefer to use PHP for managing the content temporarily. Sometimes I will replace it with NodeJS.