expo-app-clip

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

Updated Sep 6, 2026
One-click install
npx skills add https://github.com/sombek/fitness-guidance-app --skill expo-app-clip-sombek
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: expo-app-clip
Source: https://github.com/sombek/fitness-guidance-app/tree/main/mobile/.agents/skills/expo-app-clip
Command: npx skills add https://github.com/sombek/fitness-guidance-app --skill expo-app-clip-sombek

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 served over HTTPS, Smart App Banner meta tags, App Store Connect metadata, and TestFlight builds. This Skill walks through the entire setup so nothing is missed. ## Core Features & Use Cases - App Clip target scaffolding: Runs bun create target clip to generate targets/clip/ with its config plugin, Info.plist, and Swift entry point via @bacons/apple-targets. - Domain association and hosting: Configures applinks: and appclips: associated domains, generates and hosts the AASA file at /.well-known/apple-app-site-association, and adds the Smart App Banner meta tag to the Expo Router HTML shell. - Store submission: Registers bundle IDs, builds both targets with bunx testflight, and pushes App Clip metadata (invocation URLs, header image) via eas metadata:push. - Use Case: You have an Expo app and want users to launch a lightweight Clip from a URL on your domain. Follow the steps to add the Clip target, deploy the AASA file to EAS Hosting, and submit a TestFlight build containing both targets. ## Quick Start Ask the agent to add an iOS App Clip target to your Expo app and set up the AASA file, associated domains, and TestFlight build.

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?

Set bundleIdentifier and appleTeamId in app.json, then run `bun create target clip` to scaffold the Clip target in targets/clip/ using @bacons/apple-targets. Next configure associated domains, host the AASA file, and build with `bunx testflight`.

How do I host an apple-app-site-association file for App Clips?

Place the extensionless AASA file in public/.well-known/ and deploy with `bunx expo export -p web` and `eas deploy --prod`. The file must include an appclips block listing the Clip's full app ID as <TeamID>.<BundleID>.

Does an Expo App Clip require an Apple Developer account?

Yes. Adding the Clip target is open source, but shipping one requires an Apple Developer Program membership, App Store review, and the AASA file served over HTTPS on your domain. Builds via EAS use your plan's build minutes.

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

The warning appears when the Clip target lacks the associated domains entitlement. Add `appclips:your-domain` to the entitlements in targets/clip/expo-target.config.js and matching applinks/appclips entries in app.json.

How can JavaScript detect it is running inside an App Clip?

Create a local Expo module with `bunx create-expo-module --local` that checks for the NSAppClip key in the main bundle's Info.plist. The module can expose an isAppClip constant and present an SKOverlay install prompt for the full app.