capacitor-uiscene-migrator

Migrates Capacitor 8.4 iOS apps and plugins to the 8.5 UIScene lifecycle.

1|Updated Aug 25, 2026
One-click install
npx skills add https://github.com/involvex/ionic-everywhere --skill capacitor-uiscene-migrator-involvex
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: capacitor-uiscene-migrator
Source: https://github.com/involvex/ionic-everywhere/tree/main/.agents/skills/capacitor-uiscene-migrator
Command: npx skills add https://github.com/involvex/ionic-everywhere --skill capacitor-uiscene-migrator-involvex

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Migrating a Capacitor iOS app from 8.4 to the 8.5 UIScene lifecycle breaks down when npx cap migrate skips partially migrated projects, hand-rolled SceneDelegates, or custom AppDelegate URL handlers, leaving silent failures like dead deep-link code and build errors on removed APIs. ## Core Features & Use Cases - Audit-first migration: Scans Swift sources for tmpWindow/TmpViewController build errors, custom application(_:open:) bodies, and AppDelegate lifecycle code that stops running under scenes, reporting every finding with file and line before editing. - Surgical merges and CLI handoff: Classifies the project as eligible, partial, or already migrated; hands eligible projects to npx cap migrate and merges missing manifest keys, SceneDelegate forwarders, and pbxproj registrations into partial projects without overwriting user code. - Plugin repo auditing: Audits Capacitor plugin Swift sources for scene-lifecycle assumptions and enforces the one-plugin-version rule for supporting both 8.4 and 8.5. - Use Case: Your Capacitor app shows the Xcode warning "CLIENT OF UIKIT REQUIRES UPDATE" and npx cap migrate reports a partial state because you have a custom SceneDelegate; the skill inventories your delegate, adds only the missing SceneDelegateProxy forwarders, and verifies the migration. ## Quick Start Ask the assistant to migrate my Capacitor app to the UIScene lifecycle for Capacitor 8.5 and audit my iOS sources first.

Frequently Asked Questions about capacitor-uiscene-migrator

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

FAQPage Schema
How do I migrate a Capacitor app to the UIScene lifecycle in 8.5?

Run npx cap migrate with @capacitor/cli 8.5 or newer if your project still matches the Capacitor templates. For partial or customized projects, audit the iOS sources first, then merge the scene manifest, SceneDelegate forwarders, and AppDelegate hook without overwriting existing code.

Why does npx cap migrate skip my project with a partial state warning?

The CLI migrator only handles projects matching the template shape and skips when one or two of the three migration signals already exist: the UIApplicationSceneManifest key, a SceneDelegate.swift file, or the configurationForConnecting hook. Partial states require surgical merges of only the missing pieces.

What breaks in Capacitor 8.5 when adopting UIScene?

References to tmpWindow and TmpViewController become build errors since both were removed. Once the scene manifest exists, iOS stops calling application(_:open:), application(_:continue:), and the four foreground/background AppDelegate methods, so custom code there silently stops running.

Can one Capacitor plugin version support both 8.4 and 8.5?

Yes, if the plugin consumes the legacy capacitorOpenURL notification names, avoids removed APIs like tmpWindow, avoids 8.5-only APIs like SceneDelegateProxy and the .capacitorScene* constants, and keeps lifecycle handling on UIApplication notifications rather than AppDelegate methods.

Why does my Capacitor app show a black screen after adding a SceneDelegate?

The SceneDelegate neither creates a window nor lets a storyboard provide one. In Capacitor 8.5 the window is created in code inside scene(_:willConnectTo:) with a CAPBridgeViewController as root, so add that window setup from the template.

When should I not use this UIScene migration approach?

Do not use it for Cordova-to-Capacitor plugin migration, generating new Capacitor plugins, Capacitor 9 or later migrations, or Android lifecycle work, since UIScene is iOS-only and this procedure covers only the 8.4 to 8.5 transition.