Building White-Label Mobile Apps: Architecture Decisions That Matter
A single codebase, many brands. The architectural decisions that make white-label apps work — and the ones that are expensive to change after launch.
Most mobile apps are built for one brand and one audience. White-label apps invert that assumption: a single codebase, configured differently for each partner, deployed as separate apps under separate brand identities. Getting this right requires making architectural decisions early that are expensive to change later. This case study covers a white-label travel app built for a global travel affiliate platform with 400,000+ partners — and the key decisions that shaped the outcome.
The product requirement
The platform runs an affiliate network connecting travel brands, bloggers, and content creators to flight and hotel booking products. The goal was to let any partner — a travel blogger, a regional carrier, a lifestyle brand — launch their own branded booking app without writing code. The app needed to:
- Be configurable to a partner's brand identity without development work
- Support both iOS and Android
- Handle flight search and hotel booking with filtering
- Be publishable to both stores by following a step-by-step guide
- Also be available as separate SDK modules for partners who want to embed functionality into existing apps
The technical specification ran to 41 pages of requirements and 120 pages of API documentation — before a line of code was written.
Native, not cross-platform
The team chose to build separate native apps for iOS (Swift) and Android (Kotlin) rather than using a cross-platform framework. The reasoning:
- Native apps follow platform guidelines more naturally — iOS and Android have different interaction patterns that cross-platform frameworks often paper over
- Long-term maintainability favors native when the platforms evolve differently
- Performance on the full range of partner devices — which could be budget hardware — is more predictable with native rendering
This decision meant building and maintaining two codebases, which increased initial development effort. The shared configuration system compensated for this by allowing both apps to be customized simultaneously through a single file.
The configuration system
The core architectural problem for any white-label product is: how does one codebase produce many brands? The solution here was a single configuration file that drives both native apps.
The design system was built with three base UI styles and several icon families. A partner sets their primary color; the system derives secondary, accent, and semantic colors automatically. This prevents the situation where a partner's brand color creates a contrast or accessibility issue — the derived palette handles those constraints.
RTL (right-to-left) layout support was built into the design system from the start, targeting partners in the Middle East. Retrofitting RTL support into an existing layout system is significantly more expensive than building it in from the beginning.
Analytics and SDK structure
Firebase Analytics was integrated to give Travelpayouts and individual partners visibility into how users interact with each branded app. This includes feature discovery, conversion funnels, and drop-off points — data that drives iterative improvement of the shared template.
The SDK variant of the product allows partners with existing apps to embed specific modules — flight search, hotel booking — rather than adopting the full white-label template. This required the modules to be genuinely independent: no implicit dependencies on global state, consistent API surface, and packaging that works cleanly as a dependency in third-party build systems.
What makes white-label architecture different
Standard app development optimizes for one product and one brand. White-label development optimizes for a design space — a range of brands the system can express without custom code. This changes several decisions:
- Design tokens must be externalized from the start — colors, typography, spacing driven by configuration, not constants
- Every screen must work with any brand color — not just the one the design team had in mind
- The configuration format must be stable — partners who configure the app once shouldn't have their settings break when the template updates
- Documentation for non-technical users is a core deliverable, not an afterthought — the value of the product is that partners can deploy it themselves
The publishing guide as product
One component of the project often underestimated in scope: the step-by-step guide that allows a non-developer to take the configured template and publish it to both app stores. This guide covers Apple Developer account setup, provisioning profile creation, App Store Connect configuration, and Google Play console setup.
Writing this guide revealed gaps in the configuration system — steps that were clear to the development team but ambiguous to someone without iOS or Android experience. Each gap required either a product change (making the step simpler) or documentation improvement (making the explanation clearer). Both are forms of product work.
Ready to build?
Tell us about your project
Free estimate within 48 hours. No commitment required.
Get a free estimate