<!--
{
  "availability" : [
    "iOS: 3.0.0 -",
    "iPadOS: 3.0.0 -",
    "macCatalyst: 13.1.0 -",
    "tvOS: -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UIApplicationDelegate/application(_:didFinishLaunchingWithOptions:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(pl)UIApplicationDelegate(im)application:didFinishLaunchingWithOptions:"
  },
  "title" : "application(_:didFinishLaunchingWithOptions:)"
}
-->

# application(_:didFinishLaunchingWithOptions:)

Tells the delegate that the launch process is almost done and the app is almost ready to run.

```
optional func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool
```

## Parameters

`application`

The singleton app object.

`launchOptions`

A dictionary indicating the reason the person or system launched the app. The contents of this dictionary may be empty in situations where a person launched the app directly. If the app supports scenes, this is `nil`. For information about the possible keys in this dictionary and how to handle them, see [`UIApplication.LaunchOptionsKey`](/documentation/UIKit/UIApplication/LaunchOptionsKey).

## Return Value

Return <doc://com.apple.documentation/documentation/Swift/false> if the app can’t handle the URL resource or continue a user activity, otherwise return <doc://com.apple.documentation/documentation/Swift/true>. The system ignores the return value if the app launches as a result of a remote notification.

## Discussion

Use this method (and the corresponding [`application(_:willFinishLaunchingWithOptions:)`](/documentation/UIKit/UIApplicationDelegate/application(_:willFinishLaunchingWithOptions:)) method) to complete your app’s initialization. In an app that supports scenes:

- The system calls this method as soon as the process is done launching.
- The system then creates the scene(s) that you configured for your app.
- The system calls scene life-cycle methods, such as [`scene(_:willConnectTo:options:)`](/documentation/UIKit/UISceneDelegate/scene(_:willConnectTo:options:)).
- As the system presents a scene, it updates that scene’s [`activationState`](/documentation/UIKit/UIScene/activationState-swift.property). The app’s state is the aggregate of all the scene [`UIScene.ActivationState`](/documentation/UIKit/UIScene/ActivationState-swift.enum) values.

In an app that doesn’t support scenes:

- The system performs state restoration before calling this method.
- The system calls this method when the process is done launching.
- The system presents your app’s window, scene(s), and other UI.
- At some point after this method returns, the system calls another of your app delegate’s methods to move the app to the active (foreground) state or the background state.

This method represents your last chance to process any keys in the `launchOptions` dictionary. If you didn’t evaluate the keys in your [`application(_:willFinishLaunchingWithOptions:)`](/documentation/UIKit/UIApplicationDelegate/application(_:willFinishLaunchingWithOptions:)) method, review them in this method and provide an appropriate response.

Objects that aren’t the app delegate can access the same `launchOptions` dictionary values by observing the notification named [`didFinishLaunchingNotification`](/documentation/UIKit/UIApplication/didFinishLaunchingNotification) and accessing the notification’s <doc://com.apple.documentation/documentation/Foundation/NSNotification/userInfo> dictionary. The system sends that notification shortly after this method returns.

The system combines the return result from this method with the return result from the [`application(_:willFinishLaunchingWithOptions:)`](/documentation/UIKit/UIApplicationDelegate/application(_:willFinishLaunchingWithOptions:)) method to determine whether to handle a URL. If either method returns <doc://com.apple.documentation/documentation/Swift/false>, the system doesn’t handle the URL. If you don’t implement one of the methods, the system only considers the return value of the implemented method.

## See Also

[`applicationDidEnterBackground(_:)`](/documentation/UIKit/UIApplicationDelegate/applicationDidEnterBackground(_:))

Tells the delegate that the app is now in the background.

[`applicationDidBecomeActive(_:)`](/documentation/UIKit/UIApplicationDelegate/applicationDidBecomeActive(_:))

Tells the delegate that the app has become active.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)