Cash App

Company: Cash App
Industry: Finance
Size: 300+
JetBrains products used: Kotlin Multiplatform
Country: USA

Cash App is the easiest way to send money, spend money, save money, and buy cryptocurrency.

The app launched in 2013 as a simple peer-to-peer payment app with 4 mobile engineers, and it now has 50 mobile engineers (split across iOS and Android) and 30 million monthly active users.

The app has been built with the native Android/iOS toolchains throughout, with a few small exceptions. We introduced a JavaScript runtime to power some shared server-driven logic, and that was our first exposure to shared code. We continued to experiment with JavaScript, but we concluded that the cost of working with it outweighed the value of sharing code. Working with JS always slowed us down, both in the writing and the reviewing of it.

The decision to try Kotlin Multiplatform started in open source. A library we maintain called SQLDelight was gearing up to generate Kotlin-only APIs, and the decision was made to also use KMM to make those generated APIs platform-agnostic.

We loved the "shared business, native UI" idea that Kotlin Multiplatform promoted, and it meant that our teams did not have to give up using their preferred toolchains. We started testing the technology within Cash App in 2018 with the help of TouchLab, slowly rolling it out.

Developer happiness and productivity are the most important thing for us, and our focus right now is making sure those who want to try Kotlin Multiplatform can do so easily (and the number of people who do is growing!). The trend in the last year of more projects exploring it as an option shows the strength of the technology.

We love Kotlin Multiplatform because we didn't have to give up any of the things we love about our work. We're at a place now where the developer workflow is unchanged but there is an option to share code and get all of those benefits without stepping out of our comfort zone. Our teams are increasingly realizing the potential of KMM, giving it a shot, and seeing how powerful it is.

Alec Strong, Mobile Developer

Create your first app with Kotlin Multiplatform Mobile