Mercari Karthi Nov 20, 2025

Android Engineering Strategy for Global App Launch

Article Summary

Karthi from Mercari's Android team reveals why they ditched cross-platform frameworks for their global marketplace launch. The decision wasn't about native vs. hybrid ideology, it was about leveraging 10M+ downloads worth of battle-tested infrastructure.

Mercari built a new global e-commerce app serving multiple countries with a small team and aggressive timeline. Despite having Flutter and React Native experience across their product portfolio, they chose native Android with Jetpack Compose by making strategic bets on reusability over theoretical speed.

Key Takeaways

Critical Insight

Mercari shipped a global Android app faster by strategically reusing their native foundation rather than starting fresh with cross-platform tools.

The article details their specific monorepo structure rules and explains the hidden complexity costs they avoided from their Flutter experience.

About This Article

Problem

Mercari needed to adopt gRPC across their global Android app while keeping REST APIs in shared services. This meant developers and QA had to debug two different client stacks at the same time.

Solution

Karthi's team picked Wire from Square for their gRPC implementation. Wire has an API similar to Retrofit and works with OkHttp, which let them build type-safe contracts and streamline how clients and backends talk to each other without needing custom validation.

Impact

Mercari used the modules-graph-assert plugin to enforce strict monorepo dependency rules. This stopped product modules from crossing boundaries and prevented library modules from depending on product code. The result is a clean architecture that can handle a growing codebase.