For advanced use cases where Amplify does not provide the functionality you're looking for,
you can retrieve the escape hatch to access the underlying SDK.

import ios0 from "/src/fragments/lib/ios-escape-hatch-warning.mdx";

<Fragments fragments={{ios: ios0}} />

The escape hatch provides access to the underlying `AWSCognitoIdentityProvider` instance.  Import the necessary types:

```swift
import AWSCognitoAuthPlugin
import AWSCognitoIdentityProvider
```

Then retrieve the escape hatch with this code:

```swift
func getEscapeHatch() {
    let client: CognitoIdentityProviderClient
    
    // Get the instance of AWSCognitoAuthPlugin
    let plugin = try? Amplify.Auth.getPlugin(for: "awsCognitoAuthPlugin") as? AWSCognitoAuthPlugin
    
    // Get the instance of CognitoIdentityProviderClient
    if case .userPoolAndIdentityPool(let userPoolClient, _) = plugin?.getEscapeHatch() {
        client = userPoolClient
    } else if case .userPool(let userPoolClient) = plugin?.getEscapeHatch() {
        client = userPoolClient
    } else {
        fatalError("No user pool configuration found")
    }
    print("Fetched escape hatch - \(String(describing: client))")
}
```
