<BlockSwitcher>
<Block name="SwiftUI">

Create a custom `AppDelegate`, and add to your `application:didFinishLaunchingWithOptions` method

```swift
class AppDelegate: NSObject, UIApplicationDelegate {
  func application(
      _ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    do {
        let datastoreConfiguration = DataStoreConfiguration.custom(authModeStrategy: .multiAuth)
        let dataStorePlugin = AWSDataStorePlugin(
            modelRegistration: AmplifyModels(),
            configuration: datastoreConfiguration
        )
        try Amplify.configure()
        print("Amplify configured with DataStore plugin")
    } catch {
        print("Failed to initialize Amplify with \(error)")
        return false
    }

    return true
  }
}
```

Then in the `App` scene, use `UIApplicationDelegateAdaptor` property wrapper to use your custom `AppDelegate`

```swift
@main
struct MyAmplifyApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
```
</Block>
<Block name="UIKit">

Add to your AppDelegate's `application:didFinishLaunchingWithOptions` method

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

    do {
        let datastoreConfiguration = DataStoreConfiguration.custom(authModeStrategy: .multiAuth)
        let dataStorePlugin = AWSDataStorePlugin(
            modelRegistration: AmplifyModels(),
            configuration: datastoreConfiguration
        )
        try Amplify.configure()
        print("Amplify configured with DataStore plugin")
    } catch {
        print("Failed to initialize Amplify with \(error)")
        return false
    }

    return true
}
```
</Block>
</BlockSwitcher>