Sensidev logo
Hero Image

Building a Multi-Platform Driver Onboarding Application with React Native

by Gabriel Macovei8 months ago 5 min read

This article explores the development process behind a mobile application designed to streamline the driver onboarding process for Bolt and Uber in Romania. The target audience for this app is represented by new drivers in Romania, and the primary technical challenge involved creating a reusable and scalable cross-platform solution.

We want to take you behind the scenes of building mobile apps at Sensidev, and discover both our methods and our findings, which can also help you to build better. Our superstar #sensidev who was in charge of this is Gabriel Macovei, React Native Developer, who told us all about the process of building such an app.

Here are all the findings 👇🏻

Cross-Platform Development with React Native

React Native was chosen as the development framework due to its ability to create native-looking applications for both iOS and Android platforms. This approach reduced development time and ensured code maintainability across different operating systems.

Streamlining Document Input with a Stepper Component

A core feature of the application is a multi-step document input flow. This flow, implemented as a stepper component, guides users through the process of uploading required documents such as driver's licenses and car registrations. To ensure code reusability and maintainability, custom components were developed to handle the document input sections, with specific logic implemented to address any variations between document types.

Type Safety and State Management with TypeScript and Redux

TypeScript was incorporated into the project to provide type safety and improve code maintainability. This static type checking helped identify potential errors early in the development process. Redux was utilized as the state management solution, ensuring predictable data flow and management throughout the application.

Camera Integration and Local Development Challenges

The application leverages the device's camera functionality to capture photos of required documents. However, during development, challenges arose related to testing camera integration on iOS simulators, which lack built-in camera functionality. To address this, the development team relied on physical device testing and implemented workarounds for specific scenarios during local development. These workarounds involved leveraging the simulator's storage to utilize pre-captured photos for testing purposes while ensuring thorough camera functionality testing on physical devices.

Scalability for Future Growth

As the user base of the application grows, it's crucial to ensure the solution can handle the increased load. The development team implemented mechanisms to gracefully handle potential backend service overload scenarios. By incorporating retry logic for failed API requests, the application can maintain a smooth onboarding experience even during peak usage periods.

Performance Optimization Techniques

To optimize application performance, the software development team employed several techniques. Asynchronous data loading ensures a responsive user experience by preventing UI-blocking tasks. Non-blocking buttons further enhance responsiveness by allowing user interaction during ongoing data operations. Memoization techniques were implemented to cache function results and improve performance. Finally, the team utilized efficient UI libraries optimized for handling large amounts of data, ensuring smooth rendering and data display.

Performance Monitoring with React Native Debugger

The built-in performance monitoring tools within the React Native debugger were utilized to monitor application performance throughout the development process. This allowed the team to identify and address any performance bottlenecks, resulting in a well-optimized application.

In conclusion, this project demonstrates the effectiveness of React Native in developing cross-platform mobile applications. By leveraging reusable components, type safety with TypeScript, state management with Redux, and addressing platform-specific challenges, the development team built a scalable and performant application that streamlines the driver onboarding process for Bolt and Uber in Romania.

Interested in mobile app development? Contact us now!

Dev Thoughts