# Guideline 4.7.4 - Design: Missing Universal Link Index for Hosted Software

**Guideline:** 4.7.4 · **Store:** Apple App Store · **Severity:** medium · **Fix difficulty:** medium · **Typical turnaround:** 1-3 days

Canonical URL: https://appstorereject.com/rejections/apple/4/guideline-474-design-missing-universal-link-index-for-hosted-software

## Description

Apple is rejecting your app because it hosts software experiences (mini apps, games, interactive bots) but does not provide a Universal Links index that allows each hosted experience to be individually deep-linked. Guideline 4.7.4 requires that apps hosting software catalog their hosted content through Universal Links so Apple can index and link to specific experiences. This requirement serves two purposes: it enables Apple's Spotlight search and Siri to surface individual mini apps within your platform, and it provides a transparent catalog of hosted content that Apple can monitor for policy compliance. The rejection means your app hosts multiple interactive experiences but they're only accessible by navigating within the app — there's no way to open a specific mini app via a URL. Apple wants every hosted experience to have a corresponding Universal Link. The fastest compliant path is to implement an apple-app-site-association (AASA) file on your domain that maps URLs to each hosted experience, and handle those URLs in your app to navigate directly to the corresponding content.

## Common variations

- App does not provide Universal Links index for hosted content
- Hosted software experiences are not individually deep-linkable
- Missing apple-app-site-association for hosted mini apps
- Hosted content catalog not indexed through Universal Links
- Mini apps within the platform cannot be individually referenced via URL

## Example rejection email

```
Guideline 4.7.4 - Design - HTML5 Games, Bots, etc.

Your app hosts multiple software experiences but does not provide a Universal Links index for the hosted content. Apps that host mini apps, games, or other software experiences must provide Universal Links that allow each hosted experience to be individually referenced and deep-linked.

Next Steps:
Please implement Universal Links for your hosted content by:
- Creating an apple-app-site-association file that maps URLs to each hosted experience
- Handling Universal Link URLs in your app to navigate to the corresponding content
- Ensuring each hosted experience has a unique, stable URL
```

## Resolution steps

## Quick Assessment
- **Risk level:** Medium
- **Resolution path:** Implement Universal Links for all hosted content
- **Typical turnaround:** 1-3 days

## The Fix

01. **Design your URL scheme** — Create a consistent URL pattern for hosted content: `https://yourdomain.com/apps/{app-id}`, `https://yourdomain.com/games/{game-id}`, etc. Each hosted experience must have a unique, stable URL.

02. **Create the AASA file** — Host an `apple-app-site-association` file at `https://yourdomain.com/.well-known/apple-app-site-association` with your app's bundle ID and the URL patterns that should open in your app.

03. **Handle Universal Links in your app** — Implement `application(_:continue:restorationHandler:)` in your app delegate (or the SwiftUI equivalent). Parse the incoming URL and navigate to the corresponding hosted experience.

04. **Create a web fallback** — Each Universal Link URL should also work as a regular web page (showing the content or a prompt to install the app). This is required for Universal Links to work.

05. **Maintain the index** — As you add new hosted experiences, ensure each one gets a Universal Link. Automate this if possible — when a new mini app is published on your platform, generate its URL entry.

06. **Test the links** — Verify Universal Links work from Safari, Messages, Notes, and Spotlight search. Test that they navigate to the correct hosted experience.

## Prevention
- Build Universal Links into your platform architecture from the start
- Automate URL generation for new hosted content
- Include Universal Links testing in your QA process
- Keep the AASA file in sync with your hosted content catalog

## Before / after examples

**Before:** Game platform hosts 50 HTML5 games accessible only through in-app browse and search — no way to link to a specific game from outside the app
**After:** Each game has a Universal Link (https://platform.com/games/puzzle-blast), AASA file maps /games/* to the app, and opening the link launches the app directly to that game (or shows a web preview if the app isn't installed)
**Why it works:** Hosted experiences must be individually addressable through Universal Links, enabling deep linking, Spotlight indexing, and content discoverability.

## Common questions

**How long does this typically take to fix?**

Typical turnaround is 1-3 days (difficulty: medium). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-474-design-missing-universal-link-index-for-hosted-software*