← Back to blog

Hello from Carcará

We are Carcará. We build solutions for mobile developer experience and indie apps, and we build them with Kotlin Multiplatform. This is the first post on our blog, so it is worth saying plainly what that means and why we are here.

What we do

Most mobile teams still write the same feature twice, once for Android and once for iOS, or they reach for a cross-platform framework and trade away how native the app feels. We think there is a better middle. Kotlin Multiplatform lets you share the logic in one codebase while keeping the UI native on each platform, SwiftUI on iOS and Compose on Android. One place for the rules, a first-class experience on every device.

Two kinds of work come out of that belief:

  • Developer experience. The tooling, harnesses, and conventions that make shared mobile code pleasant to work in day to day, from module boundaries to the skills and CLIs that keep a large codebase consistent.
  • Indie apps. Small, focused apps we build with the same stack, where the shared logic pays off and the native feel still matters.

Why Kotlin Multiplatform

We did not arrive here from a whiteboard. We rewrote a production mobile app from Flutter to Kotlin Multiplatform, and the six months that followed taught us where the approach earns its keep and where it still hurts. The app came out faster and more stable, it shares a data layer with the web, and it opened the door to people outside engineering shipping features on their own. We wrote the whole story down in From Flutter to KMP.

KMP is stable enough now to bet on. That was not obviously true a couple of years ago, and part of why we write here is to show what “stable enough” looks like in practice, with real numbers instead of promises.

What we open-source

When we build a tool we needed for our own work and it turns out to be useful on its own, we release it. The first is kotlinx-locale, a small library for locale and language-tag handling across Kotlin platforms, born from keeping currencies and dates consistent between our app and our web portal. You can find what we have published so far on the libs page.

What to expect here

This blog is where we write down what we learn building mobile software with shared code. Migrations, architecture, testing, developer experience, the tradeoffs we hit and the calls we made. Some posts will be war stories, some will be small and practical. All of them come from work we actually shipped.

If you are working with Kotlin Multiplatform, or thinking about it, we hope some of it is useful. More soon.