Mirego’s team puts user experience first in developing products. Fluidity, performance, ergonomy, respect of the platform guidelines, and maintainability are priorities when selecting technologies.
In ensuring the delivery of high-quality products, we need to adapt and polish the UI, but also the navigation and background task management on every platform. This is why we don’t only work from a mobile-first approach but, equally, native-first.
In 2018, we started re-evaluating our options for multiplatform development. The emerging solutions at the time were React Native and Flutter. We ended up rejecting them for reasons of performance, maturity, or because they didn’t allow our team to tailor applications to each platform. Most of the solutions also required adding a new programming language to the mix, adding a new programming environment and thus, a level of complexity when interacting directly with the platform. As Airbnb mentions in their blog post, this limitation is very present in React Native applications.
Kotlin is Android’s primary language. It allows us to write functionality using both Kotlin Multiplatform and the Android SDK naturally and then integrate the shared logic on other platforms. On top of this, Kotlin Multiplatform is supported directly in App Code, a JetBrain IDE, allowing Swift and Kotlin development in parallel. Not unlike j2objc, Kotlin Multiplatform offers a lower-level solution compared to most other solutions on the market. This required the Mirego team to develop a higher-level library to accelerate multiplatform development. We named it Trikot.
When using Trikot, the shared code is imported by the native code. In a sense, it is the native code that forms the application’s outer shell. It then imports Trikot as its inner layer to create an interface between the platform and the shared code at its core. All of the common logic shared by every platform is contained within that core. Trikot handles all the data flows between the native and shared code. This explains why the first module we’ve developed within Trikot is an implementation of Reactive Streams for Kotlin Multiplatform. The native platform expert could then create a platform optimized UI, encryption module, Bluetooth interface or background task scheduler using the native language and SDK and connect it to the business logic in the application’s core.
The technologies used to build digital products evolve extremely quickly, and our products must keep pace. By isolating the business logic from the different platforms, we allow our products to immediately benefit from the new technologies available on any of the platforms supported by Kotlin Multiplatform.
Today, we proudly take the next step in Kotlin Multiplatform’s adoption and giving back to the Kotlin community by releasing Trikot’s first open-source module: Trikot.streams.