Description
On Intercom iOS SDK 19.6.3, if a user opens a conversation and quickly swipes down twice (first to close chat → home, then immediately to dismiss messenger), the app freezes. The main screen is visible but unresponsive.
Works fine: slow swipe, or tapping X.
Repro
Intercom.present()- Open a conversation
- Fast swipe down (chat → home)
- Immediately swipe down again (home → dismiss)
Expected: Messenger dismisses, app is interactive.
Actual: App frozen. ICMWindow stays hidden: false, key: true. No IntercomWindowWillHide / DidHide notifications fire.
Logs
Healthy:
WILL hide → DID hide → ICMWindow hidden: true, key: false
Frozen:
(no WILL hide / DID hide)
ICMWindow stuck: hidden: false, key: true, hasRoot: true
Cause
Conversation is pushed on ICMMessengerNavigationController, but dismissed via Intercom’s custom swipe-down pan. A second fast swipe-down starts the system sheet dismiss before the first transition finishes. Two overlapping interactive transitions wedge the window.
We only call Intercom.present() — not an app-side issue. Pure UIKit stacked sheets with system swipe-down do not reproduce this.
Workaround
On IntercomWindowDidShowNotification, set isModalInPresentation = true on the ICMWindow VC chain. Disables sheet swipe-down; X button still works.
Ask
Guard against overlapping dismiss transitions in the SDK, or expose a public API to disable swipe-to-dismiss.