> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-docs-event-stream-action-templates.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Authentication Methods Management on iOS

> Render a full-screen UI that lets users enroll, review, and remove MFA factors, passkeys, and recovery codes using the Auth0 My Account API on iOS.

export const ReleaseStageNotice = ({feature, stage, plans, contact, terms}) => {
  const stageTextMap = {
    "beta": "Beta",
    "ea": "Early Access"
  };
  const stageText = stageTextMap[stage] || "a product release stage";
  const prsLink = "/docs/troubleshoot/product-lifecycle/product-release-stages";
  const linkify = (text, url) => {
    return <a href={url} target="_blank" rel="noreferrer" class="link">{text}</a>;
  };
  const includeDetails = (plans, contact, terms) => {
    const hasDetails = terms || plans || contact;
    if (!hasDetails) return null;
    return <span data-as="p">
            {plans && <>This feature is available for {linkify(`${plans} plans`, "https://auth0.com/pricing")}. </>}
            {contact && "To participate, contact " + contact + ". "}
            {terms && <>By using this feature, you agree to the applicable Free Trial terms in Okta's {linkify("Master Subscription Agreement", "https://www.okta.com/legal")}.</>}
        </span>;
  };
  return <Warning>
            <span data-as="p">
                <strong>The {feature} feature is in {linkify(stageText, prsLink)}.</strong>
            </span>

            {includeDetails(plans, contact, terms)}
        </Warning>;
};

<ReleaseStageNotice feature="Auth0 Universal Components" stage="beta" terms="true" contact="Auth0 Support" />

The Universal Components for iOS SDK includes the `MyAccountAuthMethodsView` component, a SwiftUI view that handles every enrollment, verification, listing, and removal flow using the [My Account API](/docs/manage-users/my-account-api).

It uses the My Account API's [authentication methods management](/docs/manage-users/my-account-api#manage-authentication-methods) capabilities to render a complete UI for managing a user's authentication methods.

With the `MyAccountAuthMethodsView` component, you do not need to orchestrate navigation, call endpoints, or manage state.

<Frame>
  <img src="https://mintcdn.com/docs-dev-docs-event-stream-action-templates/Ul2mhPH2EuhkGqPW/docs/images/universal-components/my-account/ios/my-account-auth-methods-view.png?fit=max&auto=format&n=Ul2mhPH2EuhkGqPW&q=85&s=027229833629966654ed74d70be9984a" alt="MyAccountAuthMethodsView component showing sign-in methods and verification methods" style={{maxWidth: "300px", display: "block", margin: "0 auto"}} width="568" height="919" data-path="docs/images/universal-components/my-account/ios/my-account-auth-methods-view.png" />
</Frame>

## Setup requirements

Before rendering the `MyAccountAuthMethodsView` component, follow [Build a Self-Service Account Security Interface](/docs/get-started/universal-components/ios/components/my-account-overview) to install the SDK, configure your Auth0 tenant, and initialize the SDK with a token provider.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  The `MyAccountAuthMethodsView` component reads its configuration, token provider, and passkey settings from the initialized SDK.
</Callout>

## Supported factors

The component handles every authentication method factor configured with the My Account API. Each factor's screen inherits the component's active theme. To learn more, read [Customize Style and Themes](/docs/get-started/universal-components/ios/ios-theming).

| **Factor**                                                                                       | **What the component renders**                                                                                            | **SDK notes**                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Email OTP](/docs/secure/multi-factor-authentication/configure-mfa-email)                        | Email input → 6-digit OTP verification                                                                                    | Platform OTP autofill (iOS QuickType) populates the OTP field automatically.                                                                                            |
| [SMS OTP](/docs/secure/multi-factor-authentication/configure-sms-notifications-for-mfa)          | Country-code picker + phone entry → 6-digit OTP verification                                                              | Autofill via the system keyboard works normally.                                                                                                                        |
| [TOTP (Authenticator application)](/docs/secure/multi-factor-authentication/configure-otp)       | QR code with manual-entry key → 6-digit OTP verification                                                                  | Renders the standard `otpauth://` payload. No custom brand logo injection into the QR.                                                                                  |
| [Push notifications](/docs/secure/multi-factor-authentication/enable-push-notifications-for-mfa) | QR code for [Auth0 Guardian](/docs/secure/multi-factor-authentication/auth0-guardian) scan → "waiting for approval" state | End users need the public Auth0 Guardian application. Enterprise customers with a branded Guardian SDK build must surface their own install link outside the component. |
| [Passkeys](/docs/get-started/universal-components/ios/components/factors/passkeys)               | Educational screen → OS biometric prompt → enrolled entry in the list                                                     | Requires Apple Associated Domains (`iOS 16.6+`). See the dedicated page for platform setup.                                                                             |
| [Recovery codes](/docs/secure/multi-factor-authentication/configure-recovery-codes-for-mfa)      | Display-once code list with a copy action and an "I've saved my codes" confirmation                                       | Codes are displayed to the user and never returned to the caller. The copy-to-clipboard action uses the platform's standard clipboard API.                              |

## Get started

Add the `MyAccountAuthMethodsView` component anywhere in your SwiftUI hierarchy, typically behind a settings navigation link.

```swift SettingsView.swift wrap lines theme={null}
import SwiftUI
import Auth0UniversalComponents

struct SettingsView: View {
    var body: some View {
        NavigationStack {
            List {
                NavigationLink(destination: MyAccountAuthMethodsView()) {
                    Label("Authentication Methods", systemImage: "lock.shield")
                }
            }
            .navigationTitle("Account Settings")
        }
    }
}
```

The Swift view takes no initializer parameters. To customize behavior use SwiftUI view modifiers and environment values.

## Parameters

The `MyAccountAuthMethodsView` component accepts the following modifier and environment values:

| **Modifier / environment values** | **Type**                  | **Purpose**                                                                                                                                                                  |
| --------------------------------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `.auth0Theme(_:)`                 | `Auth0Theme`              | Override design tokens—colors, typography, spacing, radius, sizes. To learn more, read [Customize Style and Themes](/docs/get-started/universal-components/ios/ios-theming). |
| `.embeddedInNavigationStack()`    | —                         | Mark the view as embedded in a host `NavigationStack` so the SDK pushes onto your stack instead of creating its own.                                                         |
| `\.hostNavigationPath`            | `Binding<NavigationPath>` | Environment binding the SDK uses to push destinations onto the host navigation stack. Required when you call `.embeddedInNavigationStack()`.                                 |

## Customize

Theming is applied to the component as a whole; individual factor screens inherit the active theme.

To learn more about the full token catalog and dark-mode patterns, read [Customize Style and Themes](/docs/get-started/universal-components/ios/ios-theming).

## Embed in a host NavigationStack

By default, the `MyAccountAuthMethodsView` component manages its own `NavigationStack`.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  If your application already owns a navigation stack, nesting a second stack breaks back-button behavior and swipe-to-go-back gestures. Embed the `MyAccountAuthMethodsView` component into your stack instead.
</Callout>

```swift wrap lines theme={null}
NavigationStack(path: $path) {
    List {
        NavigationLink("Authentication methods", value: "auth-methods")
    }
    .navigationDestination(for: String.self) { value in
        if value == "auth-methods" {
            MyAccountAuthMethodsView()
                .embeddedInNavigationStack()
        }
    }
}
.environment(\.hostNavigationPath, $path)
```

There are two requirements when using embedded mode:

* Add the `.embeddedInNavigationStack()` modifier to the `MyAccountAuthMethodsView` component so it skips creating an inner stack.

* Add the `\.hostNavigationPath` modifier to the outer `NavigationStack` so the SDK knows which path binding to push onto.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  The SDK also exposes a `Router` helper class for applications that want a type-safe navigation controller for their own routes.

  It is not required to drive the SDK's internal navigation. Only use it if you want to apply the same pattern to your application's screens.
</Callout>

## Localization

Universal Components for iOS do not ship localized strings. User-facing copy is in English.

If localization is a blocker for your integration, please submit a feature request in the [ui-components-ios](https://github.com/auth0/ui-components-ios/issues) repository.

## Limitations

* **No standalone factor components on iOS**. Every factor renders inside the Authentication Methods Management component. There is no public API to enroll, verify, or remove a single factor from a different part of your application.
* **No standalone list/remove components**. The SDK does not ship public components for listing enrolled factors or removing them outside the component. Use the Authentication Methods Management component for the full management experience.

## Learn more

<CardGroup cols={2}>
  <Card title="Build a Self-Service Account Security Interface" icon="key" href="/docs/get-started/universal-components/ios/components/my-account-overview">
    Initialize the SDK and wire the token provider to your Auth0 tenant.
  </Card>

  <Card title="Customize style and themes" icon="palette" href="/docs/get-started/universal-components/ios/ios-theming">
    Override colors, typography, spacing, radius, and size tokens using the Auth0 design-token system.
  </Card>
</CardGroup>
