Advanced Swift Concurrency: Launch Speed Optimisation
You can parallelise app launch work in didFinishLaunchingWithOptions using a GCD DispatchGroup to wait and Swift's taskGroup to parallelise steps
This avoids performing all critical work serially on the main thread - but use this with caution - any main-thread isolated work can deadlock if you don't understand what you're doing.