Auto-translation used

We saved the Android app by providing a development team

Shred Labs is a Los Angeles—based startup founded in 2018 by two personal trainers. Charlie Hale and Adam Summer wanted to develop online fitness, so they launched a mobile app with workout recordings for classes at home and in the gym.

At the start, the client's company focused on developing an iOS app. The startup proved successful and attracted about two million users. Two years later, the company decided to launch an Android app to reach users of another platform.

The Android team at Shred initially consisted of three people, as did the iOS team. For various reasons, Android developers took turns leaving for other companies, and eventually there were no Android experts left at Shred. At the same time, the Android app was still lagging behind the iOS version in terms of functionality. For example, only one type of training was available instead of three. The client turned to Resolventa as a trusted partner with a request to promptly take up the development of the application.

Together with the client, we formulated exactly what tasks need to be solved when developing an Android application.:

  • to catch up with the functionality of the iOS app, first of all, add video classes and various programs based on them;
  • to ensure the release of new functionality simultaneously with iOS;
  • if possible, update and refine the legacy code.

Resolventa provided an experienced Kotlin developer who took over all the tasks of the Android team. He understood the existing code without help, since by that time there were no Android specialists left at Shred. There was no one to clarify how the already implemented functionality works. In addition, there was a lack of detail and decomposition of tasks. Because of this, the client often did not understand what the development team was doing and why. Due to the lack of communication, the entire project suffered. We have set up processes, worked through documentation and detailed tasks, which made development more transparent, faster and more convenient for the client.

In addition, the application was built on the basis of two architectural approaches at once. Some of the old code was written using Android View, and the other part was written using Jetpack Compose. Back then, it was a rapidly gaining popularity framework, the most modern development tool for Android. When Resolventa joined the project, it was logical to write new functions immediately on Jetpack Compose, and to update legacy as necessary and gradually rewrite it to a new style.

Our developer took care of the missing features of the application. The fact that we were already developing a backend for Shred helped speed up the work. If there were difficulties, colleagues from the PHP team suggested how the backend works and how exactly the iOS version interacts with it. Back then, an Android developer used a similar solution. Some functions could not be adapted for various reasons, for example, due to errors in the documentation or features of the solution on iOS. Sometimes it was easier to tweak the backend code than to try to adapt the Android version to an existing API.

It was the well-established communication between the teams that made it possible to catch up with the iOS version very quickly and maintain a high pace of development.

First, we added a second type of training to the app: a video session with a trainer (Classes). Most of the recordings were prepared by professional fitness trainers, but users can also upload their own videos to the app.

Classes differ from regular workouts in that you can start an online broadcast and practice at the same time with other users, or record and share the video later. This is a free and largely key functionality that has long been available only to users of the iOS version. It increases interest and trust in the product, as it turns an ordinary fitness app into a real social network.

Many users are interested to see how friends or strangers train. In the app, you can mark entries, search for like-minded people, train together, and compare results. You can also share your progress and send workout recordings to Facebook via your Google account.

After that, a third type of workout appeared in the Android application: full-fledged programs made up of several Classes from professional fitness trainers.

A new feature that has appeared simultaneously on iOS and Android is the calculation of the load on a muscle group and a board of leaders on this indicator for each type of training. This functionality is available to users by subscription, it arouses interest and desire to train more often.

We have also completely redesigned the interface of the main screen, making it more convenient and understandable for users. Finally, we rewrote part of the application to integrate the latest version of the Google payment system.

At the start, more than 70% of the application was written using Android view. Currently, the old architecture occupies no more than 15%, and all new functions are implemented on Jetpack Compose.

Over the past year, we have caught up with the functionality of the iOS app, and with the help of a single developer. He put the development processes in order, added to the Android application the most important functionality that had previously been available only on iOS — the ability to study online (Classes) and share successes with friends.

Currently, the Android application is not inferior to iOS in terms of development speed, and all new features appear simultaneously on both platforms.

Kotlin, Android SDK, Dagger/Hilt, Room, MVI, Jetpack Compose, Android View, Coil, Retrofit, okHttp3