"CLIENT OF UIKIT REQUIRES UPDATE: This process does not adopt UIScene lifecycle. This will become an assert in a future version."

I just noticed this today while building a React Native app.

Anybody else seen this and know what it means/how to track it down/how to fix it

The scene-based app lifecycle divides your app's overall lifecycle into two components:

  • The application lifecycle, such as when your app process launches or suspends.
  • The lifecycle of when an app has UI visible on screen, embodied by a scene.

Prior to iOS 13, both of those concepts were part of the UIApplicationDelegate protocol. The scene-based lifecycle was added in iOS 13, and splits out the second one to the UISceneDelegate protocol. The scene-based lifecycle has been the recommended approach for many iOS releases now, so that message is encouraging you to adopt it. Specifying the scenes your app supports is your guide for how to accomplish that.

— Ed Ford,  DTS Engineer

@Ed Ford

What does this part mean "This will become an assert in a future version."

A run time assertion?

In which case this is a mandatory thing to change?

What does this part mean "This will become an assert in a future version."

A run time assertion?

Yes, that's correct, a run time assertion. Since scenes have been available since iOS 13 and have been best practice since then, I encourage you to adopt them now as part of maintaining your app with today's best practices, and then you won't need to worry about how the assertion will affect you in the future at all.

— Ed Ford,  DTS Engineer

The guide is helpful, thank you.

Hint: use this value for the key 'Delegate Class Name':

$(PRODUCT_MODULE_NAME).AppDelegate

assuming that the name of the delegate class is actually AppDelegate.

I started with the value 'AppDelegate' for this key, and got the following error at runtime:

UIWindowSceneSessionRoleApplication contained UISceneDelegateClassName key, but could not load class with name AppDelegate

We now have a detailed guide on how to handle this message — TN3187: Migrating to the UIKit scene-based life cycle.

— Ed Ford,  DTS Engineer

The code examples in that guide are for Swift. What to do if your app still is pure Objective-C?

The APIs you need to adopt are the same in Objective-C. Of course there are syntactical differences between Swift and Objective-C, but aside from that, the way you adopt the scene lifecycle is identical regardless of the language.

— Ed Ford,  DTS Engineer

"CLIENT OF UIKIT REQUIRES UPDATE: This process does not adopt UIScene lifecycle. This will become an assert in a future version."
 
 
Q