.pageSheet interactive swipe-to-dismiss freezes when UIDesignRequiresCompatibility = YES on specific iPhone models (iOS 26.x)
Area
UIKit → View Controller Presentation
Type of Issue
Serious Bug (App Freeze / UI Hang)
Description
Interactive dismissal of a modal view controller using .pageSheet freezes mid-gesture on specific iPhone models when UIDesignRequiresCompatibility is enabled.
The freeze occurs during the swipe-to-dismiss gesture, before dismissal completes. UIKit lifecycle callbacks never finish (viewDidDisappear is not called), and the app becomes completely unresponsive.
This issue appears to be device-specific and project-specific, and does not reproduce in a fresh project with the same code.
Steps to Reproduce
-
Create an iOS app with deployment target iOS 13.0
-
In
Info.plist, set:UIDesignRequiresCompatibility = YES -
Present a modal view controller using
.pageSheet -
Swipe down to dismiss the modal
-
Observe freeze mid-gesture (~20% progress)
Expected Results
Actual Results
-
App freezes mid-dismissal gesture
-
UI becomes unresponsive
-
No crash or console error
-
viewDidDisappearis never called
Minimal Code Sample
class TestModalViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemBackground
}
}
let modal = TestModalViewController()
modal.modalPresentationStyle = .pageSheet
present(modal, animated: true)
Regression
-
❌ Does NOT occur when
UIDesignRequiresCompatibility = NO -
❌ Does NOT occur with
.fullScreen -
❌ Does NOT occur in a fresh test project
-
✅ Occurs consistently in existing project
Devices Tested
Affected
-
iPhone 14 Pro Max
-
iPhone 17
-
iPhone 17 Pro Max
Not Affected
iOS Versions
Notes
-
Issue occurs during UIKit’s interactive dismissal animation
-
No custom transitions or animations
-
Programmatic dismissal works
-
Appears related to compatibility layout / gesture handling on large-screen devices