Crash on CarPlay in iOS 27 | Community
Skip to main content
Question

Crash on CarPlay in iOS 27

  • June 15, 2026
  • 0 replies
  • 13 views

Bug Report: Unrecognized selector sent to CPTemplateApplicationScene (CarPlay) — iOS 27

 

Summary

 

The Intercom iOS SDK crashes the host app with an **unrecognized selector** exception when a

CarPlay scene is involved in scene lifecycle. Intercom sends a `UIWindowScene`-only selector to

`CPTemplateApplicationScene`, which is a sibling of `UIWindowScene`, not a subclass — so the

message is unhandled and the app terminates.

 

This is the same long-standing defect previously reported as

`-[CPTemplateApplicationScene windows]: unrecognized selector`

(

 

and 

)

On **iOS 27** the selector has changed to a different `UIWindowScene`-only API:

 

-[CPTemplateApplicationScene _enhancedWindowingEnabled]: unrecognized selector sent to instance

 

Environment

 

Intercom SDK | 19.3.2 (intercom-ios-sp, SPM). Also reproduces on latest 19.6.3 — updating does not fix it.

iOS 27 (also historically reproduced on earlier iOS with the `windows` selector variant)

SwiftUI/UIKit app with a separate CarPlay scene (`CPTemplateApplicationSceneDelegate`)

`Intercom.setApiKey(_:forAppId:)` in `application(_:didFinishLaunchingWithOptions:)`

 

Crash signature

 

-[CPTemplateApplicationScene _enhancedWindowingEnabled]: unrecognized selector sent to instance

 

Captured via Bugsnag in production, unhandled.

 

Root cause (our analysis)

 

1. Intercom is initialized at app launch and subscribes to scene lifecycle notifications globally,

   before any scene has connected.

2. When a scene enters the foreground, Intercom's presentation manager

   (`ICMPresentationManager` `sceneWillEnterForeground:`) attempts to create its Messenger window in

   whatever scene is entering foreground via `createIntercomWindowInScene:` →

   `-[UIWindow setWindowScene:]`.

3. Somewhere in that window-attachment path, a `UIWindowScene`-only selector is queried on the

   scene. When the scene is the **CarPlay** `CPTemplateApplicationScene`, that selector is

   unimplemented and the app crashes.

 

The defect is that Intercom assumes every foregrounding scene is a normal app `UIWindowScene` it can

attach a window to. It does not guard against non-`UIWindowScene` scene types such as

`CPTemplateApplicationScene`.

 

Reproduction

 

1. Initialize Intercom at launch in `application(_:didFinishLaunchingWithOptions:)`.

2. Add a CarPlay scene (`CPTemplateApplicationSceneDelegate`) to the app.

3. Connect to CarPlay (head unit or the CarPlay simulator), particularly while a foreground

   notification can fire / while the CarPlay scene transitions to foreground.

4. The app crashes with the unrecognized-selector exception above.

 

Expected behavior

 

Intercom should only ever create/attach its Messenger window to a `UIWindowScene`. It should

ignore scenes whose class is not a `UIWindowScene` (e.g. `CPTemplateApplicationScene`), or expose a

public API to scope its presentation to a specific app `UIWindowScene`.

 

Current workaround (on our side)

 

We shim the missing selectors on `CPTemplateApplicationScene` so the message resolves to a no-op

instead of crashing:

 

extension CPTemplateApplicationScene {

    @objc var windows: UIWindow? { nil }                 // older selector variant

    @objc var _enhancedWindowingEnabled: Bool { false }  // iOS 27 selector variant

}

 

This relies on private selector names and guesses at the contract, so it is a stopgap, NOT a fix.

Each new iOS release that changes the queried selector breaks us again until we add another shim.

 

Requests

 

1. Add a scene-type guard so Intercom never attempts window attachment on a non-`UIWindowScene`.

2. Please add us to the existing internal issue tracking this; it has been acknowledged by Intercom

   support previously but appears unresolved across the 19.x line.