build-ios-binary

Compiles iOS Objective-C/Swift modules into flat device-slice .framework bundles for .ppmplugin packages.

808|167|Updated Jan 21, 2026
One-click install
npx skills add https://github.com/microsoft/power-platform-skills --skill build-ios-binary
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: build-ios-binary
Source: https://github.com/microsoft/power-platform-skills/tree/main/plugins/power-apps-mobile-extension/skills/build-ios-binary
Command: npx skills add https://github.com/microsoft/power-platform-skills --skill build-ios-binary

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Building an iOS binary for a Power Apps Mobile (PAM) control requires precise Xcode configuration, React-Core header handling, and manifest conformance checks; this Skill automates that entire pipeline so the wrap runtime can load the resulting framework.

Core Features & Use Cases

  • Flat framework compilation: Builds a device-only .framework (never an .xcframework) via xcodebuild archive from a throwaway staged copy, leaving the canonical ios/ sources and podspec untouched.
  • React weak-linking setup: Aggregates React-Core headers from the pinned react-native devDependency and configures -undefined dynamic_lookup so React is provided by the wrap host at runtime.
  • Manifest conformance validation: Asserts module class names, RCT_EXPORT_METHOD signatures, and no-arg initialization against manifest.json before building.
  • Use Case: After generating a ppmplugin manifest for an iOS or Both target, run this Skill on macOS to produce ppmplugin/staging/ios/<Pascal>Plugin.framework ready for assembly into the final .ppmplugin bundle.

Quick Start

Run /build-ios-binary to compile my extension's iOS module into the flat framework for the ppmplugin bundle.

Frequently Asked Questions about build-ios-binary

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build an iOS framework for a Power Apps Mobile plugin?

Run /build-ios-binary on macOS after generating the ppmplugin manifest. It stages a throwaway copy of your ios/ sources, generates an umbrella header and Xcode project, archives the device slice with xcodebuild, and copies the flat .framework to ppmplugin/staging/ios/.

Why must I ship a flat .framework instead of an .xcframework?

The wrap CI pipeline expects ios/<Name>.framework and does not descend into an .xcframework bundle. Shipping an .xcframework fails with 'Framework not found in plugin', so this Skill builds the device archive only and copies out the flat framework.

Can I build the iOS binary on Windows or Linux?

No, this Skill is Mac-only because iOS compilation requires Xcode. On Linux or Windows it blocks immediately; Android-only contributors cannot produce the iOS slice and must use a macOS machine.

Why do I get React symbol or header errors when building the framework?

React errors indicate the pinned react-native version diverged from the wrap host's RN version, not an extension code bug. React is weak-linked via -undefined dynamic_lookup and provided by the host at runtime, so the RN pin must match the host.

What are the limitations of the React weak-linking approach?

The -undefined dynamic_lookup flag is deprecated by Apple and may break in a future Xcode release. Additionally, the exact weak-link flags and header-search-path setup are not yet validated against a live wrap host, which is the main known risk area.