Apple Targets
Build, configure, and debug native Apple extension and target types (widgets, App Clips, share extensions, watchOS apps, Safari extensions, notification extensions, VPN/network extensions, and 40+ more) in an Expo app using the @bacons/apple-targets config plugin. Use when a user wants to add home screen presence, share sheets, custom keyboards, Siri/App Intents, push notification handling, AutoFill/passkeys, Screen Time controls, or any other Apple app extension to a React Native / Expo project.
- Skill ID
- evanbacon/expo-apple-targets/apple-targets
- Publisher
- evanbacon
- Repository
- expo-apple-targets
- Installs
- 0
- Files
- 46
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
evanbacon/expo-apple-targets/apple-targetsInstalls these files- SKILL.md
- _template.md
- account-auth.md
- action.md
- app-intent.md
- authentication-services.md
- bg-download.md
- broadcast-setup-ui.md
- broadcast-upload.md
- call-directory.md
- classkit-context.md
- clip.md
- content-blocker.md
- credentials-provider.md
- device-activity-monitor.md
- entitlements/README.md
- entitlements/app-groups.md
- file-provider-ui.md
- file-provider.md
- intent-ui.md
- intent.md
- keyboard.md
- location-push.md
- matter.md
- message-filter.md
- network-app-proxy.md
- network-dns-proxy.md
- network-filter-data.md
- network-packet-tunnel.md
- notification-content.md
- notification-service.md
- photo-editing.md
- print-service.md
- quicklook-preview.md
- quicklook-thumbnail.md
- safari.md
- share.md
- shield-action.md
- shield-config.md
- smart-card.md
- spotlight-delegate.md
- spotlight.md
- unwanted-communication.md
- virtual-conference.md
- watch.md
- widget.md
What this skill tells the agent
Apple Extension Target Skills Reference
This directory contains comprehensive skill documents for all supported Apple extension and target types. Each skill document provides everything an AI agent needs to understand, implement, and troubleshoot a specific Apple extension type, including:
- Apple documentation links and WWDC session references
- Runtime behavior and lifecycle explanation
- Real-world use cases and implementation patterns
- Production-ready Swift code examples
- Platform availability and version requirements
- Common gotchas and debugging tips
Installing This Skill
Install this skill into your coding agent (Claude Code, Cursor, Codex, etc.) with `npx skills`:
npx skills add EvanBacon/expo-apple-targets/tree/main/skills/apple-targetsThe CLI auto-detects which agents you have installed and copies SKILL.md (plus the supporting reference docs in this directory) into the agent's skills directory (e.g. .claude/skills/ or .agents/skills/). Once installed, the agent loads this guidance automatically whenever you ask it to build an Apple extension or target.
How to Use These Skills
For AI Agents:
- When a user asks about a specific extension type (e.g., "How do I build a widget?" or "I need to add a share extension"), read the corresponding skill document to get complete implementation guidance.
- When planning a feature that might require an extension (e.g., "Add home screen presence" → read
widget.md), consult the skill document to understand requirements and constraints.
- When debugging extension issues, refer to the "Gotchas" section of the relevant skill document — these capture common pitfalls from Apple Developer Forums and real-world experience.
- When uncertain which extension type fits a use case, scan the "Use Cases" sections across related skills to find the best match.
Structure of Each Skill Document:
Every skill document follows the template defined in _template.md:
- Frontmatter: Title, one-line description, minimum OS version
- Apple Documentation: Official reference links
- WWDC History: Session links showing evolution of the feature
- What It Does: Step-by-step runtime behavior
- Use Cases: Real-world scenarios organized by industry/app type
- Key Classes: Table of essential framework types
- Implementation: Production-ready Swift code with inline comments
- Using with @bacons/apple-targets: Setup instructions for this plugin
- Platform Availability: OS version matrix
- Gotchas: Common mistakes, memory limits, and silent failure modes
Skills by Category
User Interface Extensions
| Skill | Extension Type | When to Read |
|---|---|---|
| widget.md | widget | User wants home screen widgets, Lock Screen widgets, Live Activities, StandBy mode UI, or Control Center controls (iOS 18+). Timeline-based SwiftUI views. |
| clip.md | clip | User wants instant-launch mini-apps triggered by NFC, QR codes, App Clip Codes, Safari banners, or Messages links. Not an extension—a size-constrained application target. |
| share.md | share | User wants their app in the system share sheet to receive URLs, images, text, or files from other apps. |
| action.md | action | User wants context menu actions in Safari, Photos, or Files that transform content and optionally return modified data. |
| keyboard.md | keyboard | User wants a custom system keyboard with specialized input (emoji pickers, GIF search, language-specific layouts, calculators). |
| photo-editing.md | photo-editing | User wants to add filters, adjustments, or effects to photos/videos directly in the Photos app editing UI. |
| quicklook-preview.md | quicklook-preview | User wants rich previews of custom file types in Quick Look with interactive controls and multiple pages. |
| quicklook-thumbnail.md | quicklook-thumbnail | User wants to generate thumbnail images for custom file types shown in Finder, Files app, and Spotlight. |
Notifications
| Skill | Extension Type | When to Read |
|---|---|---|
| notification-service.md | notification-service | User wants to download images, decrypt payloads, or modify push notification content before display. Runs in background with 30-second time limit. |
| notification-content.md | notification-content | User wants custom SwiftUI/UIKit UI for expanded push notifications with interactive controls and rich media. |
Siri & Intents
| Skill | Extension Type | When to Read |
|---|---|---|
| intent.md | intent | User wants Siri voice commands for built-in domains (messaging, payments, workouts, media playback, ride booking). Uses legacy SiriKit framework. |
| intent-ui.md | intent-ui | User wants custom UI in the Siri interface when confirming or handling intents. Companion to the intent extension. |
| app-intent.md | app-intent | User wants modern App Intents (iOS 16+) for Shortcuts, Spotlight, Siri, Focus Filters, and Control Center widgets. Replaces custom .intentdefinition files. |
Networking & VPN
| Skill | Extension Type | When to Read |
|---|---|---|
| network-packet-tunnel.md | network-packet-tunnel | User wants to build a VPN client that tunnels all device traffic through a custom protocol. Classic and modern Personal VPN. |
| network-app-proxy.md | network-app-proxy | User wants app-level network filtering (per-app VPN) where specific apps route traffic through a custom proxy. Requires MDM or supervised devices. |
| network-dns-proxy.md | network-dns-proxy | User wants to intercept and respond to DNS queries system-wide, enabling DNS filtering, logging, or custom resolution. |
| network-filter-data.md | network-filter-data | User wants deep packet inspection for content filtering (parental controls, enterprise security). Requires special Apple entitlement. |
File Management
| Skill | Extension Type | When to Read |
|---|---|---|
| file-provider.md | file-provider | User wants to expose cloud storage or remote file systems in the Files app with on-demand download, search, and sync. |
| file-provider-ui.md | file-provider-ui | User wants custom UI for file actions (sharing, permissions) in the document picker. Companion to File Provider extension. |
Communication & Telephony
| Skill | Extension Type | When to Read |
|---|---|---|
| message-filter.md | message-filter | User wants to filter incoming SMS/MMS messages to classify spam, transactions, or promotions into separate tabs. |
| call-directory.md | call-directory | User wants to block phone numbers or provide caller ID labels for incoming calls. Updates a system-managed SQLite database. |
| unwanted-communication.md | unwanted-communication | User wants a UI for users to report unwanted calls, messages, or FaceTime attempts to a reporting service. Requires special entitlement. |
Content & Media
| Skill | Extension Type | When to Read |
|---|---|---|
| broadcast-upload.md | broadcast-upload | User wants to stream ReplayKit screen recordings to a live streaming service (Twitch, YouTube Live). Receives video/audio buffers in real time. |
More from evanbacon
Use this skill in a project
Open any RiverX project, search the Skills panel for evanbacon/expo-apple-targets/apple-targets, and install it in one click.
