“We continue to receive nearly perfect reviews in the app stores.”

Tonal's intelligent trainer and its companion app

Tonal's intelligent fitness system is the first truly personalized approach to strength training. Combining cutting-edge, all-in-one equipment and personalized virtual coaching, it's like having an entire gym and personal trainer, on-demand, in the convenience of your home. By using digital weights to create electronic resistance in a single machine for a full-body workout, it is the only fitness system of its kind in the world.

The Tonal wall-mounted trainer runs on Android and is complemented by a companion app for iOS and Android devices, written in Flutter. Between the two, their entire product range centers around mobile technologies. The mobile app was built in under one year and was released this April.

The company is growing rapidly and has closed an impressive $45 million Series C funding round, which brings the total capital raised to date to $90 million. Tonal currently has 130+ employees, three of which work in Flutter.

A mobile app with full feature parity: introducing Flutter

While they were designing their companion app, the Tonal team was sure that they wanted to launch Android and iOS versions simultaneously, so they looked into the available cross-platform mobile solutions. They ultimately chose Flutter, which enabled them to launch the iOS and Android apps on the same day, with full feature parity.

When they first launched the companion app, their mobile teams did not have any CI/CD tool in place, which meant there was no automated checking on pull requests, and no mechanism to generate and deploy nightly builds, either. This resulted in a variety of challenges, such as lint issues, static analyzer issues, or unit test failures that would end up in a commit on the master branch.

Back then, the team would have to dedicate a computer to run every new build — and triggering them remotely was not an option. As there were no regularly running production builds, whenever they were ready to deploy a new release to Google Play and TestFlight, they would be caught off guard by new issues created in between releases. Not having an easy way to test new features mid-sprint posed some challenges for the QA team as well.

Finding the right CI/CD tool for a cross-platform framework

While looking for a CI/CD tool, one of their Android engineers, Gabriel Peal, reached out to his Twitter followers for suggestions. As there were many positive mentions of Bitrise, they decided to give it a shot, and started by implementing a workflow to analyze pull requests, which they were able to get working in less than a day. They initially only used Bitrise to build their Android app running on the hardware, but later started using it for the Flutter mobile app, and integrated all the essential Flutter steps as well.

Since they started using the platform, they have automated their pull request reviews, which has made them more confident throughout the merging process. They’ve been also using the Bitrise pull request build to run the Flutter analyzer and the unit tests to ensure that there are no issues. Now, anyone on the team can trigger a new production build by simply clicking a button. Tonal has also introduced nightly builds for the QA team: every evening, a new build of the app is generated for both Android and iOS with the Auto Provision step, so they can test the latest code and immediately troubleshoot any build failures.

More seamless and frequent releases of updates to both iOS and Android

“We continue to receive nearly perfect reviews in the app stores.”

Max Lapides, Lead Mobile Engineer @ Tonal

These new steps and upgrades in Tonal’s workflow have transformed their processes and made them much more efficient. Their Flutter team now runs around 120 builds per week, most of which are set to analyze their pull requests. These builds save them a lot of time — now, at the end of a sprint, instead of being surprised with new failures on the production build, they can be confident that the code passes all of the automated checks and will build successfully.

Since Tonal started using the Bitrise, they have automated most of the manual tasks in their processes and begun releasing more seamless and frequent updates. One of the many features which Tonal makes daily use of is the ability to build for both iOS and Android in one workflow, and distribute them to both stores simultaneously, even with their rapidly increasing number of updates. The numbers speak for themselves: Tonal's customers regularly keep leaving perfect reviews in both app stores and continue to commend the company for its apps' exemplary quality.

Check out Tonal's website to learn more about their product or details on how to try the at-home gym in one of their showrooms.

‍