> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Universal Links

> Set up universal links (iOS) and App Links (Android) for your React Native app to enable features like device registration.

Some features, like [device registration](/react-native/authentication-methods/device-registration), require universal links (iOS) or App Links (Android) instead of custom URL schemes. Unlike deep links, universal links use your domain to open your app, which provides better security because they require you to prove ownership of the domain.

## iOS — Universal Links

### 1. Configure your domain

Host an `apple-app-site-association` (AASA) file at `https://yourdomain.com/.well-known/apple-app-site-association`:

```json theme={"system"}
{
  "applinks": {
    "details": [
      {
        "appIDs": [
          "<TEAM_ID>.<BUNDLE_ID>"
        ],
        "components": [
          {
            "/": "/",
            "comment": "Opens the app"
          }
        ]
      }
    ]
  }
}
```

Replace `<TEAM_ID>` with your Apple Team ID and `<BUNDLE_ID>` with your app's bundle identifier (e.g., `com.mycompany.myapp`).

The file must be served over HTTPS with `Content-Type: application/json` and without any redirects.

For full details, see [Apple's Universal Links documentation](https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content).

### 2. Configure your app

Add the associated domain to your `app.json` or `app.config.js`:

```json theme={"system"}
{
  "expo": {
    "ios": {
      "bundleIdentifier": "com.mycompany.myapp",
      "associatedDomains": ["applinks:yourdomain.com"]
    }
  }
}
```

## Android — App Links

### 1. Configure your domain

Host a Digital Asset Links file at `https://yourdomain.com/.well-known/assetlinks.json`:

```json theme={"system"}
[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.mycompany.myapp",
      "sha256_cert_fingerprints": ["<SHA256_FINGERPRINT>"]
    }
  }
]
```

Replace `<SHA256_FINGERPRINT>` with your app's signing certificate fingerprint.

For full details, see [Android's App Links documentation](https://developer.android.com/training/app-links/verify-android-applinks).

### 2. Configure your app

Add the intent filter to your `app.json` or `app.config.js`:

```json theme={"system"}
{
  "expo": {
    "android": {
      "package": "com.mycompany.myapp",
      "intentFilters": [
        {
          "action": "VIEW",
          "autoVerify": true,
          "data": [
            {
              "scheme": "https",
              "host": "yourdomain.com"
            }
          ],
          "category": ["BROWSABLE", "DEFAULT"]
        }
      ]
    }
  }
}
```

## Register with Dynamic

After configuring your domain and app, add your universal link URL in the [Dynamic Dashboard](https://app.dynamic.xyz) under **Account Security > Mobile Deeplink URL**.

## Next steps

* [Device Registration](/react-native/authentication-methods/device-registration) — Protect users from account takeovers with device verification
* [Deeplink URLs](/react-native/reference/deeplink-urls) — Set up custom URL scheme deep links
