Do Less on the Main Thread
Move noncritical work after first frame. Lazy-load features behind the first screen, and initialize only when users actually navigate there. Replace eager singletons with on-demand factories. Ask yourself, what must be ready at first tap, and ruthlessly delay the rest.
Do Less on the Main Thread
Large DI graphs can balloon startup. With Dagger or Hilt, split modules and defer heavy bindings. Replace automatic ContentProviders with AppStartup or manual triggers. On iOS, avoid constructing complex services in AppDelegate; build them lazily in feature boundaries.
Do Less on the Main Thread
No synchronous disk reads or JSON parsing on the main thread. On Android, use coroutines with Dispatchers.IO; on iOS, GCD or OperationQueue. Batch small reads, compress preferences, and precompute expensive results during idle frames or post-launch background windows.