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

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