Skip to content

iOS: adopt UIScene lifecycle (Xcode deprecation warning) #533

Description

@hessius

Problem

Xcode warns on the iOS/Capacitor build:

UIScene lifecycle will soon be required. Failure to adopt will result in an assert in the future.

(Reported in 2.6.0 beta testing.)

Findings (researched 2026-07-05)

  • Capacitor 8.4.1 has no built-in UIScene/SceneDelegate support. The bridge (CAPBridgeViewController / ApplicationDelegateProxy) is wired to the classic AppDelegate window lifecycle. There is no official SceneDelegate template, migration guide, or UIApplicationSceneManifest.
  • Not currently breaking. It is a log warning only. Apple's assert fires only when building against the iOS 27 SDK (~Sep 2026). Shipping against the iOS 26 SDK today is safe.
  • Official fix is imminent. Ionic is fast-tracking UIScene support for Capacitor 8.5 (out-of-band breaking minor; work started the sprint of 2026-06-22). Tracking issue: CLIENT OF UIKIT REQUIRES UPDATE: This process does not adopt UIScene lifecycle. This will become an assert in a future version. ionic-team/capacitor#7961.

Recommendation

Prefer the official Capacitor 8.5 (or 9) upgrade over the unofficial workaround, because:

  • The community workaround (add SceneDelegate.swift + UIApplicationSceneManifest, trim AppDelegate) is superseded/reconciled by the Capacitor upgrade anyway.
  • Our AppDelegate routes deep links / Universal Links via ApplicationDelegateProxy (open url, continue userActivity). Under a SceneDelegate these AppDelegate callbacks are bypassed, so the proxy calls must be re-implemented in the scene delegate (scene(:openURLContexts:), scene(:continue:)) or deep-link/discovery handling silently breaks. This needs on-device verification.

Action items

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions