What are Apple targets?
Apple targets are separate executables that extend your app’s functionality in specific contexts:- Widgets appear on the home screen and lock screen
- App Clips are lightweight versions of your app that launch instantly
- Extensions integrate with system features like Share Sheet, Safari, Photos, etc.
- Watch Apps run on Apple Watch as companion experiences
- Network Extensions provide VPN, content filtering, and DNS proxy capabilities
Target categories
Widgets
Home screen widgets, Live Activities, and watch complications
App Clips
Instant app experiences without full installation
Extensions
Share, Photos, Safari, and system integrations
Watch Apps
Companion apps and complications for Apple Watch
Notifications
Rich notification content and media attachments
Safari
Web extensions and content blockers
Network
VPN, DNS proxy, and content filtering
Complete List
All 40+ supported target types
How targets work
Each target is defined by:- Extension point identifier - Apple’s unique identifier for the extension type (e.g.,
com.apple.widgetkit-extension) - Product type - The Xcode product type that determines build settings
- Frameworks - System frameworks the target links against
- Entitlements - Special permissions and capabilities
Target architecture
Targets in Expo Apple Targets use Continuous Native Generation (CNG):npx expo prebuild, the plugin:
- Scans the
/targetsdirectory forexpo-target.config.jsfiles - Creates native targets in the Xcode project
- Links your source files to the project via
expo:targetsvirtual folder - Configures build settings, frameworks, and entitlements
- Sets up code signing and provisioning
Your changes to files in the
expo:targets folder in Xcode are saved to the /targets directory, not the generated /ios directory. This enables true Continuous Native Generation.App Groups and data sharing
Many target types support App Groups for sharing data between your main app and extensions:Targets with automatic App Groups
Targets with automatic App Groups
These target types automatically sync the
com.apple.security.application-groups entitlement from your main app:- widget - Home screen widgets
- clip - App Clips
- share - Share extensions
- bg-download - Background download extensions
- watch-widget - Watch complications
- keyboard - Custom keyboards
- file-provider - File provider extensions
ExtensionStorage API to share data via App Groups:
Product types
Most extensions use the standardcom.apple.product-type.app-extension product type, but some have special types:
| Target Type | Product Type |
|---|---|
| clip | com.apple.product-type.application.on-demand-install-capable |
| watch | com.apple.product-type.application |
| app-intent | com.apple.product-type.extensionkit-extension |
| All others | com.apple.product-type.app-extension |
Choosing a target type
Consider these factors when selecting a target type:- User context - Where does the user interact with this feature? (home screen, share sheet, Safari, etc.)
- Data access - Does it need to share data with your main app?
- Size constraints - App Clips have a 50 MB size limit
- Capabilities - What system frameworks and APIs do you need?
- Distribution - Some targets require special provisioning or App Store review
Next steps
Create a target
Use the CLI to scaffold a new target
Target configuration
Configure target settings and behavior
Complete target list
Browse all 40+ supported target types
Example projects
Explore demo apps and examples