There is lots of good info in this SO question, particularly this answer, and the linked tweet.
Quoting that:
Apple's documentation is incorrect, here is the behaviour observed on iOS 15:
UIApplicationMain() always runs, including during prewarming.
What happens after this depends on whether your app uses the UIScene life-cycle.
For apps that do support scenes:
application:didFinishLaunchingWithOptions: may be called (doesn't always happen)
scene:willConnectToSession:options: is not called - in fact the SceneDelegate is not created until the app is opened.
For apps that do not support scenes:
application:didFinishLaunchingWithOptions: is not called.