Kotlin Multiplatform / Why Businesses Choose Kotlin Multiplatform Mobile: Native UI and Improvement Potential

Why Businesses Choose Kotlin Multiplatform Mobile: Native UI and Improvement Potential

In most cases, entrepreneurs have an idea for what they would like an app to do, but are uncertain as to what technology would make it efficient, user-friendly and cost-effective. As experts in Kotlin Multiplatform Mobile, we will use this article to explore how this technology helped us create Moika-Moika (“Carwash-Carwash” in Russian) — a car wash search app for the Ucar company, and how our client benefited from it.

What the client wanted

The app had been commissioned by Ucar, a car wash marketplace. Since we had prior relationship with Ucar, the client was already familiar with our approach and came to us specifically looking to take advantage of our expertise in KMM with plans to create two versions of the app — Android and iOS.

The product was supposed to solve the problem of access to car washes — the idea was to create something like Uber, but for car washes. At the same time, we needed to incorporate the client’s backend with up-to-date information on car washes in the area, such as operation hours, prices and promotions, as well as to set up a feature for service selection and payment.

The app was intended primarily for cab drivers, carsharing service providers, and commercial vehicle drivers. We also included a separate set of features for private car owners.

How we made searching for car washes convenient

The app helps car owners find the most suitable car wash on the map in terms of location, price and current promotions. For this we developed several features and provided access to up-to-date information.

  1. Moika-Moika shows car washes on the map with all the necessary information: working hours, prices, promotions, and free capacity status.
  2. The app chooses rates depending on whether the user is a taxi driver or a regular car owner.
  3. Users can pay for the services straight away in the app. This way, when they arrive at the car wash, the employees are already aware of which services they are supposed to provide and can identify the client's car by the license plate.
  4. You can add several cars to the app to find the best option for each vehicle. Services for passenger cars and large-sized vehicles are priced differently, so this can be a useful feature for multiple car owners.

unnamed2.png You choose a service in Moika-Moika like you would order a cab: select the service package and the rate and proceed to payment

unnamed3.png The app allows you to get a discount via a promo code

How the Moika-Moika app was developed

We started the development from scratch. The task wasn't difficult, so we had just one developer and a team leader involved. To accelerate the implementation, we used our MOKO libraries. We regularly create and update KMM open-source libraries to expand their applicability to specific tasks.

When creating the architecture, each feature (e.g., authorization, service selection, rate selection) was isolated into a separate module. This is a standard approach that allows developers to work on their own modules concurrently while not interfering with others.

We prefer to handle all aspects of development, but this time the client did the design and the backend by themselves and had us develop only the mobile app. Since the app was being developed at the same time as the server, the API configuration would sometimes get changed without coordination with our developer. This affected the launch date. For example, when the client would introduce a change in specifications which we would discover only towards the end of the sprint, it delayed the delivery date of the whole volume of performed works. To accelerate the development process, we agreed with the client to inform each other about any changes beforehand. This allowed us to avoid potential errors in the app.

How long it took

It took us two months to create the MVP app. The entire project, however, was seven months long. We worked in two-week Agile sprints. The start of a sprint included task setting and distribution, and calls every other day with questions or preliminary results. At the end of the sprints, we released builds and received feedback on what modifications were required.

The app was released in summer 2021.

Currently, Ucar is cooperating with a large number of taxi companies and is receiving a lot of positive feedback on the app. As of now, we continue to support and update the app with works to introduce general UX improvements and update the bonus system in the pipeline.

Why we used the Kotlin Multiplatform Mobile

KMM has two major advantages: it allows you to write code for both platforms, Android and iOS, while implementing a fully native UI. In other words, the resulting app will look as envisioned by the designer, or the way the users of a given platform are accustomed to. This feature of KMM allowed us to develop the Moika-Moika app based on the design delivered in advance by the client.

How the client benefited from KMM

We had already launched the Android version with a shared code and were ready to quickly create an iOS version, as originally planned. However, after the launch it became clear that the demand for an iOS version was still insufficient. Because of that, its development was shelved.

Ultimately, the customer didn't incur any losses, since the cost of developing an Android version in KMM is the same as creating a native Android app. And if the demand for the iOS version increases, the client will be able to utilize the existing code to develop it faster and more cost-efficiently.

This is why both we and our clients appreciate KMM so much — it's a reliable tool for developing complex projects. By writing a common code for iOS and Android, you can save money short-term due to shared logic compared to native development, and in the long term, you are able to save on labor costs for updates.

We'd be happy to consult teams and businesses on mobile app development with Kotlin Multiplatform Mobile or help with development. You can contact us on this page.