Reducing App Launch Times: From Diagnostics to Optimization
summary
Breaks down exact instrumentation and fixes: use Instruments’ App Launch template, OS signpost, MetricKit and sysctl to capture pre-main start time, and an injected timing tool that hooks objc_msgSend (fishhook + assembly) and a Swift function injector to log every function call. Shows reducing a demo app launch from over 10 seconds to about 1 second by moving IO off the main thread, lazy UI, merging dynamic libs (build option merge binary automatic), bypassing homepage on deep links, and using Swift concurrency task groups with prioritized background work.
AI-written summary · about
chapters (15)
- 0:00App launch times intro
- 1:06Pre-main vs post-main phases
- 2:34Measuring launch with Instruments
- 4:21Pre-main time with System Control
- 6:30MetricKit for data collection
- 7:36Automated time measurement
- 9:46Hooking Objective-C functions
- 10:30Swift function timing
- 11:36Common launch issues
- 13:22Launch optimization case study
- 14:07Optimizing launch path
- 16:17Multi-threaded startup tasks
- 18:28Reducing app size
- 20:56Detecting unused classes and functions
- 22:06Summary and tips
related talks
01h 02mOptimizing iOS App Launch Time
58miOS App Startup Time Optimization
37mBring me to life; A tale of dyld, and how iOS launches your app
42mTuning your app using Xcode's Instruments
30miOS Observability & Performance Metrics
41mInstruments: Profiling Your App in Practice
43mCode That Doesn't Slow Down: Performance Secrets on iOS
29mSpeeding up as an iOS developer
