expo-app-clip

Adds an iOS App Clip target to an Expo app with AASA hosting and TestFlight submission.

Updated Mar 27, 2026
One-click install
npx skills add https://github.com/gmackie/agent-skills --skill expo-app-clip-gmackie
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: expo-app-clip
Source: https://github.com/gmackie/agent-skills/tree/main/skills/expo-app-clip
Command: npx skills add https://github.com/gmackie/agent-skills --skill expo-app-clip-gmackie

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @bacons/apple-targets, and includes references (resource) components.

What problem does it solve? Shipping an iOS App Clip alongside an Expo app requires coordinating many Apple-specific pieces: a second build target, associated domains entitlements, an apple-app-site-association (AASA) file, smart app banner meta tags, App Store Connect metadata, and dual provisioning profiles. This Skill walks through the entire setup so nothing is missed. ## Core Features & Use Cases - App Clip Target Creation: Scaffolds the Clip target in targets/clip/ using bun create target clip and @bacons/apple-targets, with derived bundle IDs like <parent>.clip. - AASA and Associated Domains: Configures applinks: and appclips: entitlements, generates and hosts the apple-app-site-association file, and adds the smart app banner meta tag via Expo Router's +html.tsx. - TestFlight and Store Metadata: Builds and submits both targets with bunx testflight, then configures App Clip invocation URLs and header images via eas metadata:push. - Use Case: A team wants users to launch a lightweight native experience from a URL on their marketing site without installing the full app. This Skill sets up the Clip, hosts the AASA file on EAS Hosting, and submits the combined build to TestFlight. ## Quick Start Use the expo-app-clip skill to add an iOS App Clip target to my Expo app and configure the AASA file, associated domains, and TestFlight submission.

Frequently Asked Questions about expo-app-clip

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add an App Clip to an Expo app?▼

Run `bun create target clip` after setting `bundleIdentifier` and `appleTeamId` in app.json. This installs @bacons/apple-targets and scaffolds the Clip in targets/clip/, deriving its bundle ID as the parent app's ID plus `.clip`.

How to host an apple-app-site-association file for App Clips?▼

Place the AASA file with no extension in `public/.well-known/` and include an `appclips` block listing the Clip's full app ID as `<TeamID>.<BundleID>`. Deploy with `bunx expo export -p web` and `eas deploy --prod` so iOS can fetch it over HTTPS.

Does adding an App Clip require an Apple Developer account?▼

Yes. Adding the target locally is open source, but shipping an App Clip requires Apple Developer Program membership, App Store review, and an AASA file served over HTTPS on your domain. EAS Build or bunx testflight handles credentials for both targets.

Why does expo prebuild warn about associated domains for App Clips?▼

The warning `Apple App Clip may require the associated domains entitlement` appears when no `appclips:` entry is declared. Add it to the Clip's entitlements in targets/clip/expo-target.config.js and to the parent app's `associatedDomains` in app.json.

Can JavaScript detect when the app runs inside an App Clip?▼

Yes, by creating a local Expo module with `bunx create-expo-module --local` that checks for the NSAppClip key in the bundle's Info.plist. The module can expose `navigator.appClip.prompt()` to present an SKOverlay install prompt for the full app.