Incorrect safeAreaInsets.top on iPhone SE (2nd/3rd gen) – iOS 26 Beta

On iPhone SE (2nd/3rd generation) running iOS 26 beta , the safeAreaInsets.top unexpectedly returns 0 instead of the expected 20 points, causing UI elements that rely on safe area layout to be overlapped by the status bar.

You can see that i works fine with iOS 18, whereas iOS 26 the status bar is overlapped. Is this a known bug or there is new API changes that I might not be aware of.

Show how you actually add the button and set its position.

I just ran a test using constraints against the safeAreaLayoutGuide.topAnchor and the view is positioned as expected below the status bar. This is for an iPhone SE 3rd gen iOS 26 simulator.

If you are relying on manually setting a view's frame based on safeAreaInsets then you must keep in mind that the insets can change. Override viewSafeAreaInsetsDidChange in your view controller and update frames as needed. But using constraints is so much simpler.

I’m experiencing a similar issue, but it’s not related to how I set up the constraints. That part is working correctly—the safe area is respected on iOS 26 as well as earlier iOS versions.

The problem occurs when I set the root view controller on the UIWindow and make it key and visible:

primaryWindow?.rootViewController = initialController
primaryWindow?.makeKeyAndVisible()

On iOS 26, the viewSafeAreaInsetsDidChange method is not called.

On devices running versions earlier than iOS 26, the safe area insets do change, and viewSafeAreaInsetsDidChange is called as expected.

As a result, on an iPhone SE (3rd gen) running iOS 26, the safe area ends up being 375x667, whereas on the same device with iOS < 26, it’s correctly 375x647.

I was able to narrow down the root cause of the issue. Setting Status bar is initially hidden to true in the Info.plist breaks the top safe area on iOS 26. I tested this on an iPhone SE (3rd generation), and the top safe area always returns 0 when the setting is true. If I set it to false, it returns 20.

On iOS versions prior to 26, this issue does not occur — they return 20 for the top safe area regardless of the Status bar is initially hidden setting.

I was able to reproduce this behavior in this project.

You can change the Status bar is initially hidden setting and run it on iOS 26 to see that the top safe area differs depending on this flag.

This seems like an issue on iOS 26 beta.

Incorrect safeAreaInsets.top on iPhone SE (2nd/3rd gen) – iOS 26 Beta
 
 
Q