White-Label Mobile App Development

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
White-Label Mobile App Development
Complex
from 2 weeks to 3 months
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Developing White-Label Mobile App

White-label mobile app is single codebase compiling into multiple independent products for different clients, brands, or markets. Each instance has own Bundle ID, icon, color scheme, feature set, and sometimes own backend. Developers work with one repository.

Complexity isn't the idea itself—it's laying architecture day one to avoid spaghetti from if (tenantId == "brand_a") throughout codebase in six months.

Architectural Solutions

Product Flavors (Android) and Schemes/Targets (iOS)

Platforms' basic mechanism—Build Flavors on Android and Xcodeconfig/Targets on iOS—allows changing resources, string constants, and compiler flags without code changes.

Android: product flavors

// app/build.gradle.kts
android {
    flavorDimensions += "tenant"

    productFlavors {
        create("brandA") {
            dimension = "tenant"
            applicationId = "com.brandA.app"
            resValue("string", "app_name", "Brand A")
            buildConfigField("String", "API_BASE_URL", "\"https://api.brand-a.com\"")
            buildConfigField("String", "TENANT_ID", "\"brand_a\"")
        }
    }
}

Resources (icons, colors, strings) override via directories:

app/src/brandA/res/drawable/ic_launcher.png
app/src/main/res/...  ← shared resources

iOS: Xcodeconfig + Multiple Targets

Each client—separate Target sharing code with main target:

MyApp.xcodeproj
├── Targets
│   ├── BrandA        ← Bundle ID: com.brandA.app
│   └── Shared Code   ← common Swift Package
├── BrandA/
│   ├── Assets.xcassets   ← brand icons, colors
│   └── Config.xcconfig   ← API URL, feature flags

Feature Flags per Tenant

Different clients often have different feature sets. Flags in xcconfig/BuildConfig determine compilation:

if (BuildConfig.FEATURE_PREMIUM_ENABLED) {
    setupPremiumFeatures()
}

For dynamic flags (changeable without recompile)—Firebase Remote Config per tenant or shared project with tenant-specific params.

Theming Engine

Colors, fonts, sizes—load from Theme config, not hardcode:

data class TenantTheme(
    val primaryColor: Color,
    val fontFamily: String,
    val logoResId: Int
)

object ThemeProvider {
    fun getTheme(tenantId: String): TenantTheme = when (tenantId) {
        "brand_a" -> TenantTheme(
            primaryColor = Color(0xFF1A73E8),
            fontFamily = "Roboto",
            logoResId = R.drawable.logo_brand_a
        )
        else -> defaultTheme
    }
}

CI/CD for Multiple Artifacts

Each main push should build all tenant builds. On GitHub Actions:

strategy:
  matrix:
    flavor: [brandA, brandB]

steps:
  - name: Build APK for ${{ matrix.flavor }}
    run: ./gradlew assemble${{ matrix.flavor }}Release

Each flavor deploys to separate Play Store account or single account with different Package Names.

Repository Organization

repo/
├── app/                        ← Android app module
│   └── src/
│       ├── main/               ← shared code
│       ├── brandA/             ← Brand A resources
│       └── brandB/             ← Brand B resources
├── core/                       ← shared business logic
├── features/                   ← feature modules
└── tenants/
    ├── brand-a.properties
    └── brand-b.properties

Monorepo with clear boundaries. No tenant-specific file should reach main/ or core/.

Common White-Label Mistakes

Tenant logic in business code. if (tenantId == "brand_a") showSpecialButton() in ViewModel—chaos path. Correct: tenant-specific behavior via DI or config object injected externally.

Shared strings with hardcoded brands. strings.xml with "Welcome to Brand A" in common directory. Brand names only in tenant directory.

Single Firebase project for all tenants. Firebase Crashlytics and Analytics confuse crashes and events. Each tenant needs own google-services.json.

No tests per flavor. Unit tests pass, but specific flavor doesn't compile—flavor overrode resource test uses. Run tests for each flavor in CI.

Process

Audit and Design—analyze all tenant requirements: shared functionality, differences, planned client count. Choose strategy.

Base Architecture—setup flavors/targets, ThemeProvider, FeatureFlags, CI pipeline.

Module Development—feature modules with dependency inversion for any tenant to include/exclude.

New Tenant Onboarding—config template + checklist: icons, colors, API URL, Firebase project, app accounts.

Timeline

MVP white-label app with 2–3 tenants on one platform—8–14 weeks depending on feature complexity. Cross-platform on Flutter/React Native with 5+ tenants and full CI/CD—16–24 weeks. Cost calculated individually.