Optimizing Mobile App Cold Start Time

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
Optimizing Mobile App Cold Start Time
Complex
~3-5 business days
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

Optimizing Mobile App Cold Start Time

Cold start is launching an app from zero: process doesn't exist in memory, OS creates process, loads binary, initializes runtime, starts Application/AppDelegate, renders first screen. On Android this is from icon tap to Activity.onResume(). On iOS — from tap to first rendered frame.

Cold start slowdown almost never has one cause. It's accumulated debt: SDK initializations in Application.onCreate(), heavy operations on main thread, bloated splash screen, synchronous database reads at startup.

Where Time Gets Lost: Android

Android Vitals in Play Console shows "Startup time" metric — percentage of sessions with cold start > 5 seconds. But this is an aggregate. For diagnosis you need Android Studio Profiler → App Startup or Perfetto.

Typical picture during audit: Application.onCreate() takes 800-1200 ms on mid-range device, and most of it is synchronous Firebase, Amplitude, AppsFlyer, OneSignal, and three more SDKs initialization. Each does SharedPreferences.read, creates HandlerThread, registers BroadcastReceiver.

Solution: App Startup Library (androidx.startup) with explicit dependency graph. SDKs needed immediately (Crashlytics) — sync. Analytics, push — via ContentProvider lazy init or background thread with 2-3 second delay after first render.

Second loss source — Dagger/Hilt dependency graph at startup. If @Singleton components are heavy (Room database, Retrofit instances) and created all at once — visible as drop in Profiler right after onCreate. Solution: @Lazy<T> for components not needed on first screen, backgroundScope.launch for repository init.

Baseline Profiles (Jetpack) — pre-compile hot code paths to AOT before JIT sees them. ProfileInstaller + BaselineProfileRule in tests allows reducing cold start by 30-40% on first launches after install/update. This isn't magic — explicit markup "these classes need early compilation".

Where Time Gets Lost: iOS

os_signpost + Instruments Time Profiler — only right way to see real picture. Xcode shows time from tap to applicationDidFinishLaunching, separately — time to first significant render.

Main culprits on iOS: +load methods in Objective-C classes and C++ static constructors. They execute before main(), and their time isn't visible in usual Profiler without special markup. DYLD_PRINT_STATISTICS in environment variables shows real pre-main time.

Swift initialization is faster than Obj-C, but traps exist: @UIApplicationMain class with heavy init, singletons via static let shared = ... created in application(_:didFinishLaunchingWithOptions:) chain.

URLSession, CoreData stack, Keychain — all should initialize lazily or in background. CoreData NSPersistentContainer.loadPersistentStores — async by default, but developers often wrap it in semaphore, making it synchronous call on main thread.

Metrics and Target Values

Device Type Good Acceptable Poor
Android high-end < 1.0 s 1.0–2.0 s > 2.0 s
Android mid-range < 2.0 s 2.0–4.0 s > 4.0 s
iPhone (last 3 generations) < 0.8 s 0.8–1.5 s > 1.5 s
iPhone (5+ years) < 1.5 s 1.5–3.0 s > 3.0 s

Measure metrics on real devices, not emulator. Emulator doesn't reflect real I/O and JIT performance.

Flutter and React Native

In Flutter cold start bottlenecks on Dart VM and engine initialization. FlutterActivity vs FlutterFragmentActivity — 50-100 ms difference. Pre-initializing engine via FlutterEngineCache + FlutterEngineGroup allows engine reuse between launches. Splash screen via flutter_native_splash properly synced with native launch screen.

In React Native the problem is JS bundle load time. Hermes engine (compile to bytecode) reduces parse-time 2-3x vs JSC. RAM Bundles and inline requires allow loading only code needed for first screen.

Optimization Process

First measure — without baseline metrics unclear what to optimize. Profiler session on 3-5 real device types. Next — analyze hot paths, prioritize by contribution to total time. Implement changes iteratively with measurement after each change. Final before/after comparison on same device set.

Work timeline: one to three weeks depending on architecture complexity and platform count.