What are App Clips?
App Clips enable users to experience your app instantly:- 10 MB size limit (compressed, 50 MB uncompressed)
- No installation required - Launch in seconds
- Limited lifespan - Removed after inactivity
- Full app upgrade path - Seamless transition to full app
- Deep linking - Launch with context from URLs
Extension point
| Property | Value |
|---|---|
| Extension Point | None (standalone app) |
| Product Type | com.apple.product-type.application.on-demand-install-capable |
| Frameworks | All iOS frameworks available |
| App Groups | Enabled by default |
| React Native | Supported with exportJs: true |
Creating an App Clip
AASA configuration
Create a.well-known/apple-app-site-association file on your website:
public/.well-known/apple-app-site-association.
The value format is
<Apple Team ID>.<App Clip Bundle ID>. Find your Team ID in Xcode under Signing & Capabilities.Website meta tags
Add these meta tags to your website to enable the Smart App Banner:The
og:image should be 1200×630 pixels. You’ll also need a separate 1800×1200 image for App Store Connect.Deep linking
Handle App Clip invocations with Expo Router:Using React Native
App Clips can use React Native with theexportJs option:
- Use Metro bundler in development
- Embed a production JS bundle in Release builds
- Share the same entry point as your main app
App Clip entitlements
App Clips require specific entitlements:Size optimization
App Clips have a 10 MB size limit (compressed). Strategies:Remove unused dependencies
Remove unused dependencies
Conditionally exclude heavy dependencies:
Use on-demand resources
Use on-demand resources
Download assets after launch instead of bundling them.
Optimize images
Optimize images
Use WebP format and appropriate resolutions for App Clip assets.
Strip React Native (advanced)
Strip React Native (advanced)
Use the blank template for development only:
Testing App Clips
Local Experiences (Development)
- Install your app from Xcode
- Go to Settings > Developer > Local Experiences
- Add a local experience with your URL pattern
- Delete the full app
- Open Safari and navigate to your URL
- The App Clip should launch
TestFlight
App Clips work correctly in TestFlight builds with deep linking. This is the recommended testing method.Production
After App Store approval:- The binary appears in ~5 minutes
- The App Clip card appears on your website in ~25 minutes
- Test by visiting your website in Safari on a real device
App Store Connect
Configure App Clip Experiences:- Go to your app in App Store Connect
- Navigate to App Clips section
- Add Advanced App Clip Experiences
- Enter your URL and upload the 1800×1200 header image
- Configure the title and subtitle
Known issues
Crashes on TestFlight launch
Crashes on TestFlight launch
You may need this React Native patch to fix crashes when launching from TestFlight.
Build number mismatch
Build number mismatch
Ensure
CURRENT_PROJECT_VERSION and CFBundleVersion match exactly across all targets, or the build will fail.expo-updates conflicts
expo-updates conflicts
Remove
expo-updates from App Clips - it causes build failures with cryptic errors about missing React in AppDelegate.Production example
See Pillar Valley’s App Clip implementation - open on iOS to test.Learn more
App Clip guide
Detailed implementation guide
Export JS
Bundle React Native in App Clips
Code signing
Code signing for App Clips
Apple documentation
Official App Clips documentation