Optimizing Mobile App Warm 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 Warm Start Time
Complex
~2-3 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 Warm Start Time

Warm start occurs when the app was previously launched and process is alive in memory but Activity/ViewController is recreated. On Android this is typical after swiping from Recent Apps and reopening, or after system kills Activity but leaves process. On iOS — returning to app after prolonged background stay when ViewController was unloaded.

Warm start is slower than hot start (when process and Activity are alive) but faster than cold start — JVM/Dart VM/JS runtime already launched, Application code already executed. Problem is recovery during warm start is often done incorrectly.

Android: SavedInstanceState and ViewModel

Main warm start trap on Android — incorrect SavedInstanceState handling. When Activity is destroyed, system calls onSaveInstanceState, developer saves data, Activity recreates with savedInstanceState != null. Good — until Bundle contains big objects.

Bundle isn't designed for serializing large data. 500KB images in Bitmap, serialized list of 200 objects — TransactionTooLargeException at best, silent crash at worst. Rule: in Bundle — only ID, minimal state. Data — in ViewModel that survives Activity recreation.

ViewModel with SavedStateHandle — correct approach: SavedStateHandle stores only ID/primitives in Bundle, full data stored in ViewModel.stateFlow, restored from repository by ID when needed.

Heavy operations in onCreate during warm start — classic mistake. Developer writes code for cold start, forgetting that during warm start onCreate is called again. Room initialization, Retrofit client creation, WorkManager start — none should repeat per onCreate. Dagger/Hilt @Singleton solves it for infrastructure components, but initialization logic needs monitoring.

iOS: Lifecycle and State Restoration

On iOS warm start occurs returning when ViewController was unloaded due to didReceiveMemoryWarning. viewDidLoad is called again, viewWillAppear too. Problem — if all screen init logic is in viewDidLoad, it executes again: makes extra network requests, recreates UI, loses scroll position.

UIKit State Restoration API (encodeRestorableState, decodeRestorableState) — correct mechanism, but rarely used due to complexity. More common is manual approach: save state in UserDefaults or via Codable to file.

SwiftUI handles this better via @StateObject and @AppStorage — state automatically survives View recreation. But using UIKit-hosting (UIHostingController) requires ensuring @StateObject isn't recreated per wrapping.

Main loss source on iOS during warm start — repeated network requests for data already loaded before unload. Proper caching layer in repository (NSCache for in-memory, CoreData/Realm for persistence) instantly shows cached data with background update.

Practical Case

E-commerce app with product catalog. Warm start on mid-range Android took 1.8 seconds. Profiler showed: 900ms — Retrofit/OkHttp client recreation in Fragment.onCreateView, 400ms — synchronous Room query to load categories, 500ms — inflating complex RecyclerView layout.

Fixes: Retrofit in @Singleton via Hilt, Room query moved to ViewModel.init with viewModelScope.launch, categories cached in memory with 5-minute TTL, layout simplified with ViewBinding precompile. Result: warm start 0.4 seconds.

Metrics and Tools

Android: adb shell am start -W package/activity — shows TotalTime for warm start. For detailed analysis — Perfetto with ActivityThread.handleStartActivity section. Firebase Performance Monitoring auto-tracks startup traces in production.

iOS: Instruments → Time Profiler with App Launch template. MetricKit in iOS 13+ collects MXAppLaunchMetric with cold/warm/resume breakdown.

Optimization timeline: one to two weeks depending on screen count and architecture complexity.