Pro Tip iPad Windows Special Edition™

If you use SceneDelegate to know when your app is active/inactive or foreground/background, you're going to need to look at that code on iPadOS 26: the delegate messages aren't called like on iPhone.

(Tip: set sound breakpoints in SceneDelegate and run your app to understand where they happen.)

You'll want to use a view's traitCollection to monitor activeAppearance, and do any syncing/backup when .inactive is detected. It acts like a Mac now.

Pro Tip iPad Windows Special Edition™ (Part II)

And, unfortunately, the view's traitCollection is not updated on iOS/iPadOS 18.

So now you're going to have two code paths for tracking your app's overall state.

Fun.

But we got what we wanted: Windows!

Pro Tip iPad Windows Special Edition™ (Part III)

This is going to catch a lot of folks off guard. Things like widgets not updating because you update a shared container when the app goes into the background are going to be super hard to track down.

If you look at the behavior of Stage Manager on iPadOS 18, it was trying to insulate apps from this behavior with the "task collections": you got delegate callbacks when those changed.

That no longer happens. Beware.

Pro Tip iPad Windows Special Edition™ (Part IV)

The "am I active or not?" question is not easy to answer in a way that works well on both iPhone and iPad.

The reason is that the iPad, with windows, reports activeAppearance predictably as windows become frontmost or not.

The iPhone, however, reports .inactive, then .active as you put the app in the background. When you return to the foreground, .active, then .inactive, then .active is reported.

So you save state returning to foreground…

Dupe this:

FB18443571: It's impossible to know when to save view state across platforms.

• SceneDelegate doesn't report activation/deactivation of windows on iPad.
• UITraitCollection activeAppearance changes are erratic on iPhone.

This is a huge problem: every app needs to save view state, sync changes, and perform other background operations when a user switches to another app or the home screen. There isn't a reliable way to know that this has happened in iOS 26.

@chockenberry Thank you for the feedback and apologies for the late reply! I think there’s a conceptual misunderstanding here as well as what seems to be a bug that may be resolved. More on each in the thread below.

@chockenberry 2) Active appearance on the phone

From what we can tell this is no longer reproducing on recent builds for iOS 26 or iPadOS 26. We took phone and pad apps on both systems and observed the change of UIUserInterfaceActiveAppearance when the scene was backgrounded to return to the Home Screen. We did not observe erratic behavior, but instead saw predicable changes from UIUserInterfaceActiveAppearance.active to UIUserInterfaceActiveAppearance.inactive.

@chockenberry If that’s not what you are seeing in recent Betas, please do give us more information so we can dig into that as that’s a bug.

Hope this helps!