Sushi Friday: Scaling a Franchise Business with Kotlin and Compose Multiplatform
We do not just use modern technologies. We tame them. When no ready-made tools exist to implement business ideas, IceRock engineers build them from scratch. We develop cross-platform mobile solutions that save budgets without compromising on quality and performance, providing you with a solid foundation to scale your business.
Successful franchise business growth requires a powerful, scalable, and easily maintainable IT infrastructure. When the company faced the task of developing the Sushi Friday mobile app, the goal was not just to create another delivery service, but to establish a technology base for active growth and attracting new franchisees.
Below, we detail how the IceRock Development team delivered this ambitious project in 2,000 hours by selecting a cutting-edge technology stack and successfully overcoming unconventional engineering challenges.
Strategic Technology Selection: Balancing Innovation and Reliability
For CEOs and business owners, mobile development often becomes a source of unpredictable expenses, especially when it requires supporting two separate teams for iOS and Android. To optimize the client’s resources, we made the strategic decision to leverage advanced cross-platform technologies:
- Kotlin Multiplatform (KMP) to implement unified business logic.
- Compose Multiplatform to build a common UI.
This stack allows writing code once and deploying it across both platforms, significantly accelerating time-to-market and reducing long-term maintenance costs. However, working with cutting-edge technologies is always a challenge that demands the deepest technical expertise.
IceRock Expertise in Action: Solving Advanced Challenges
Innovative frameworks often hide a few gotchas. During the development of Sushi Friday, our team encountered several obstacles that served as a rigorous test of the IceRock Development engineers’ expertise.
1. Integrating a Payment System Without Ready-Made Tools
A payment gateway is a crucial component of any food delivery app. The customer required YooKassa integration, but no official SDK version existed for KMP projects.
For a run-of-the-mill developer, this could have been a reason to abandon the chosen architecture and revert to costly native development. For IceRock, this became an engineering challenge:
- Solution: We designed and implemented a custom set of interfaces and wrapper classes over the platform-specific YooKassa SDKs. This enabled us to invoke native functions from the unified KMP layer.
- Business outcome: The client received reliable and secure payments on both platforms while retaining the economic benefits of the cross-platform approach.
2. Overcoming Platform Barriers (iOS vs. Android) While working with YooKassa, we identified significant discrepancies in the SDK implementation across platforms. While the Android payment error handling method offered an open API to retrieve the cancellation reason, the iOS counterpart was private.
- Solution: Lead Engineer A. Mikhailov developed a unique solution to intercept responses on the iOS platform. We learned to extract the necessary information directly from network responses, bypassing the limitations of the closed SDK.
- Business outcome: Stable analytics and consistently high-quality user experience, regardless of whether the client uses an iPhone or an Android smartphone.
3. Taming the UI: Compose Multiplatform and Complex Design
Compose Multiplatform is presented as a technology that allows for easy migration of existing Android code. However, the reality of developing complex enterprise solutions can be quite different.
The Sushi Friday project featured an overly complex interface logic that degraded user experience (e.g., triggering dialogs from within other dialogs). Implementing such logic natively was challenging, and doing so with an emerging technology proved even more difficult.
We had to grapple with immature APIs and platform-specific UI behavior:
- System margins: What worked perfectly on Android produced unexpected results on iOS. Keyboard system margins appeared doubled.
- IceRock’s Solution: We did not wait for updates from framework authors. Leveraging KMP API capabilities (expect/actual), we implemented custom system margin handlers for each platform. This restored focus on UI stability and predictability.
- Performance optimization: Within Compose for Android, optimizing the UI often demands trade-offs with development time, which potentially increases costs by 1.5 to 2 times. We structured the process to ensure complex UI elements run smoothly even on low-end devices, without inflating the project budget.
Project Results
- Implementation time: 2,000 hours
- Business objective: A scalable platform for franchise growth was created.
- Technology: Unified codebase (KMP + Compose) reducing Total Cost of Ownership (TCO)
- Reliability: Custom payment system integrations bypassing closed SDK limitations
Implementing a mobile app based on Kotlin Multiplatform provided the customer with a powerful sales tool.
We are committed to achieving results where standard practices fall short. Our expertise transforms ambitious business ideas into stable, production-ready code, managing the risks of emerging technologies and turning them into a competitive advantage for our clients.