Apple Targets skill
Evan Bacon's skill teaches an agent to add widgets, App Clips, Safari extensions and other native Apple targets to an Expo app
- 1,408 ★ on the repository
- Last commit
Extended access
Why this level
- At prebuild the plugin generates the Xcode project and entitlements files in your repository
- The create-target command and prebuild with the --clean flag regenerate the ios folder
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/apple-targetsDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- At prebuild the plugin generates the Xcode project and entitlements files in your repository
- The create-target command and prebuild with the --clean flag regenerate the ios folder
This is third-party code. Review the repository files before installing.
What it does
Apple Targets is an Expo config plugin with a skill alongside it. The plugin generates native Apple targets, such as widgets or App Clips, and links them to the Xcode project without storing them in the ios folder. Target files live in the root targets folder, so they survive each prebuild run with the --clean flag. With the project open in Xcode you develop a target in the virtual expo:targets folder. The apple-targets skill is written for the agent. It holds a separate reference document for more than forty target types: widgets, App Clips, share and notification extensions, watchOS apps, Safari extensions, App Intents, password and passkey autofill, and Screen Time controls. Each document links to Apple documentation and WWDC sessions and covers the lifecycle, use cases, ready Swift code, minimum OS versions and common pitfalls. When a user asks for a home screen presence or a share sheet, the agent opens the matching document and configures the target through expo-target.config.js, where settings and entitlements are defined.
Who it is for. Mobile developers on React Native and Expo who need iOS widgets and extensions and find Swift and Xcode harder than JavaScript.
Good fit when
- An Expo app needs a home screen widget, and the native code has to be written in Swift
- An App Clip or a Safari extension is being added and it is unclear which files and entitlements it takes
- The agent must pick the right extension type for a task such as showing data on the lock screen
- A target builds in Xcode but fails on signing or entitlements, and you need a walk through common errors
Not a fit when
- The project is pure SwiftUI without Expo: the plugin and skill depend on Expo continuous native generation
- The app does not use prebuild and maintains the ios folder by hand
- You need an ordinary screen inside React Native, which takes no Apple extension
Example request
Add a home screen widget to our Expo app that shows the daily step goal, and explain what to configure in XcodeLimitations
The plugin needs CocoaPods 1.16.2 or newer on Ruby 3.2.0, Xcode 16 on macOS 15 and Expo SDK 53 or later. A target can only be built and signed on a Mac with Xcode and an Apple developer account. The skill itself carries reference material and examples and does not run a build. The root Info.plist of a target is not managed by the plugin and can be edited freely, while entitlements files are generated at prebuild and are not edited by hand. Each target type in the reference lists a minimum OS version, and it is worth checking it before you start.
How to disable. Delete the skill from .claude/skills or .agents/skills. To remove the plugin, uninstall the @bacons/apple-targets package and its entry in plugins in app.json, delete the targets folder and run npx expo prebuild -p ios --clean.
FAQ
How do I install the apple-targets skill?
Run npx skills add EvanBacon/expo-apple-targets/tree/main/skills/apple-targets. The command finds your installed agents and copies SKILL.md with its documents into .claude/skills or .agents/skills.
How do I create a first widget?
In an Expo project run npx create-target widget. The command creates files in the targets folder, installs @bacons/apple-targets and adds the plugin to the config. Then npx expo prebuild -p ios --clean generates the Xcode project, which you open with xed ios.
How many extension types does the skill cover?
More than forty: the skill folder holds about forty-six documents. They include widgets, App Clips, share, notification and Safari extensions, watchOS apps, App Intents and Screen Time controls.
Where do target files live if the ios folder can be regenerated?
In the root targets folder. Each subfolder holds expo-target.config.js, and the plugin links it to Xcode at prebuild. Resources from an assets subfolder are attached to the target automatically.
Do I need an Apple developer account?
Building and signing a target takes an Apple team ID. Set it in ios.appleTeamId in app.json or later, on the Signing & Capabilities tab in Xcode.
Discussion
No questions or reviews yet.
Related
SkillsExpo's official agent skills: building, deploying, updating and debugging Expo and EAS apps
Skills for Apple development: SwiftUI, UIKit and Liquid Glass references, Swift 6 guides and a router for iOS 26+ tasks
An agent checks Apple app code against every App Store guideline and shows what could trigger a rejection before you submit
A set of skills for iOS 26+, Swift 6.3 and SwiftUI that gives the agent knowledge of modern Apple frameworks
Two skills for building mobile screens at top-app quality: studying real screens through the Appllama MCP and a strict bar for native Expo and React Native UI
A skill that builds in-app screen and element capture for a SwiftUI app and loops it across every locale for the App Store
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Repository stars | Main difference |
|---|---|---|---|
| Apple Targets (this card) | no | 1,408 | |
| Expo Skills | no | 4,069 | the official Expo skills cover building, deploying and debugging an app, while this one covers native Apple targets inside the project |
| SwiftUI Expert Skill | no | 3,830 | teaches writing SwiftUI in a native project, while here Swift targets are attached to an Expo app |
README in short
The README explains the idea: Apple targets sit outside the ios folder and survive regenerating the project. It then walks through the steps from npx create-target to a build in Xcode, how the targets folder works, entitlements and details of individual target types. The agent skill lives in the skills/apple-targets directory.
README badge
Original SKILL.md
--- name: apple-targets description: 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. --- # 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`](https://github.com/vercel-labs/skills): ```sh npx skills add EvanBacon/expo-apple-targets/tree/main/skills/apple-targets ``` The 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:** 1. **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. 2. **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. 3. **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. 4. **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