From e2ad29bd445d2fd2f8f165daa13ced8a81011002 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" Date: Wed, 18 Feb 2026 15:39:47 -0800 Subject: [PATCH 1/9] Some reformatting and add info on temporarily disabling UIScene --- .../docs/breaking-changes/disableUIScene.png | Bin 0 -> 21834 bytes .../breaking-changes/uiscenedelegate.md | 183 ++++++++++-------- 2 files changed, 102 insertions(+), 81 deletions(-) create mode 100644 site/web/assets/images/docs/breaking-changes/disableUIScene.png diff --git a/site/web/assets/images/docs/breaking-changes/disableUIScene.png b/site/web/assets/images/docs/breaking-changes/disableUIScene.png new file mode 100644 index 0000000000000000000000000000000000000000..98afd4cd5027c820ec77a55a8aa609d347339965 GIT binary patch literal 21834 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 ni>NZxgJGEXD2pV~wH%)=_j`Q_t7Krt6X= :::important As of the Flutter 3.41 release, `UIScene` support is the -default and auto migration to `UIScene` happens automatically. +default for iOS apps and auto migration to `UIScene` +is automatic. ::: ## Summary Apple now requires iOS developers to adopt the `UIScene` life cycle. -This migration has implications on the [app launch -sequence]({{site.apple-dev}}/documentation/uikit/about-the-app-launch-sequence) -and [app life -cycle]({{site.apple-dev}}/documentation/uikit/managing-your-app-s-life-cycle). +This migration has implications for the [app launch sequence][] +and [app life cycle][]. + +[app launch sequence]: {{site.apple-dev}}/documentation/uikit/about-the-app-launch-sequence +[app life cycle]: {{site.apple-dev}}/documentation/uikit/managing-your-app-s-life-cycle ## Background -During WWDC25, Apple -[announced]({{site.apple-dev}}/videos/play/wwdc2025/243/?time=1317) -the following: +During WWDC25, Apple [announced][] the following: + > In the release following iOS 26, any UIKit app built with the latest SDK will > be required to use the UIScene life cycle, otherwise it will not launch. To use the UIScene lifecycle with Flutter, migrate the following support: -* All Flutter apps that support iOS - See the [migration guide for Flutter - apps](/release/breaking-changes/uiscenedelegate/#migration-guide-for-flutter-apps) -* Flutter embedded in iOS native apps - See the [migration guide for adding - Flutter to an existing - app](/release/breaking-changes/uiscenedelegate/#migration-guide-for-adding-flutter-to-existing-app-add-to-app) -* Flutter plugins that use iOS application lifecycle events - See the [migration - guide for - plugins](/release/breaking-changes/uiscenedelegate/#migration-guide-for-flutter-plugins) +* For all Flutter apps that support iOS, + visit the [migration guide][] for Flutter apps. +* For Flutter app embedded in iOS native apps, visit the + [migration guide for adding Flutter to an existing app][migrate-existing-app]. +* For Flutter plugins that use iOS application lifecycle events, visit the + [migration guide for plugins][] -Migrating to UIScene shifts the AppDelegate's role—the UI lifecycle is +Migrating to UIScene shifts the `AppDelegate`'s role—the UI lifecycle is now handled by the `UISceneDelegate`. The `AppDelegate` -remains responsible for process events and the overall application -lifecycle. All UI-related logic should be moved from the `AppDelegate` to the +remains responsible for process events and the overall application lifecycle. +All UI-related logic should be moved from the `AppDelegate` to the corresponding `UISceneDelegate` methods. After migrating to `UIScene`, UIKit won't call `AppDelegate` methods related to UI state. +[announced]: {{site.apple-dev}}/videos/play/wwdc2025/243/?time=1317 +[migrate-existing-app]: /release/breaking-changes/uiscenedelegate/#migration-guide-for-adding-flutter-to-existing-app-add-to-app +[migration guide]: /release/breaking-changes/uiscenedelegate/#migration-guide-for-flutter-apps +[migration guide for plugins]: /release/breaking-changes/uiscenedelegate/#migration-guide-for-flutter-plugins + ## Migration guide for Flutter apps ### Auto-migrate @@ -64,15 +68,17 @@ or flutter build ios ``` -If the migration succeeds, you will see a log that says "Finished migration to -UIScene lifecycle". Otherwise, it warns you to migrate manually using the -included instructions. If the migration succeeds, no further action is required! +If the migration succeeds, +you will see a log that says "Finished migration to UIScene lifecycle". +Otherwise, it warns you to migrate manually using the included instructions. +If the migration succeeds, no further action is required. ### Migrate AppDelegate Previously, Flutter plugins were registered in -`application:didFinishLaunchingWithOptions:`. To accomodate the new app launch -sequence, plugin registration must now be handled in a new callback called +`application:didFinishLaunchingWithOptions:`. +To accomodate the new app launch sequence, +plugin registration must now be handled in a new callback called `didInitializeImplicitFlutterEngine`. 1. Add `FlutterImplicitEngineDelegate` and move `GeneratedPluginRegistrant`. @@ -120,7 +126,7 @@ sequence, plugin registration must now be handled in a new callback called 2. Create method channels and platform views in -`didInitializeImplicitFlutterEngine`, if applicable. + `didInitializeImplicitFlutterEngine`, if applicable. If you previously created [method channels][method-channels-docs] or [platform views][platform-views-docs] in @@ -185,25 +191,26 @@ usage](/release/breaking-changes/uiscenedelegate/#bespoke-flutterviewcontroller- 3. Migrate any custom logic within application life cycle events. -Apple has deprecated application life cycle events related to UI state. After -migrating to UIScene lifecycle, UIKit will no longer call these events. +Apple has deprecated application life cycle events related to UI state. +After migrating to UIScene lifecycle, UIKit will no longer call these events. + +If you were using one of these depreacted APIs, such as [`applicationDidBecomeActive`], +you will likely need to create a `SceneDelegate` and migrate to scene life cycle events. +Check out [Apple's documentation] on migrating. -If you were using one of these depreacted APIs, such as -[`applicationDidBecomeActive`]({{site.apple-dev}}/documentation/uikit/uiapplicationdelegate/applicationdidbecomeactive(_:)), -you will likely need to create a SceneDelegate and migrate to scene life cycle -events. See [Apple's -documentation]({{site.apple-dev}}/documentation/technotes/tn3187-migrating-to-the-uikit-scene-based-life-cycle) -on migrating. +If you implement your own `SceneDelegate`, +you must subclass it with `FlutterSceneDelegate` or +conform to the `FlutterSceneLifeCycleProvider` protocol. +Visit the [following examples][]. -If you implement your own SceneDelegate, you must subclass it with -`FlutterSceneDelegate` or conform to the `FlutterSceneLifeCycleProvider` -protocol. See the [following -examples](/release/breaking-changes/uiscenedelegate/#createupdate-a-scenedelegate). +[Apple's documentation]: {{site.apple-dev}}/documentation/technotes/tn3187-migrating-to-the-uikit-scene-based-life-cycle +[`applicationDidBecomeActive`]: {{site.apple-dev}}/documentation/uikit/uiapplicationdelegate/applicationdidbecomeactive +[following examples]: /release/breaking-changes/uiscenedelegate/#createupdate-a-scenedelegate ### Migrate Info.plist -To complete the migration to the UIScene lifecycle, add an `Application Scene -Manifest` to your Info.plist. +To complete the migration to the `UIScene` lifecycle, +add an `Application Scene Manifest` to your `Info.plist`. As seen in Xcode's editor: @@ -241,10 +248,19 @@ As XML: ``` +### Temporarily disable UIScene + +To _temporarily_ disable UIScene, add an underbar (`_`) +in front of **Application Scene Manifest** in your `Info.plist`: + +![Temporarily disable UIScene](/assets/images/docs/breaking-changes/disable-UIScene.png) + +When you are ready to re-enable, remove the underbar. + ### Create a SceneDelegate (Optional) -If you need access to the `SceneDelegate`, you can create one by -subclassing `FlutterSceneDelegate`. +If you need access to the `SceneDelegate`, +you can create one by subclassing `FlutterSceneDelegate`. 1. Open your app in Xcode 2. Right click the **Runner** folder and select **New Empty File** @@ -266,8 +282,7 @@ class SceneDelegate: FlutterSceneDelegate { ``` 3. Change the "Delegate Class Name" (`UISceneDelegateClassName`) in the -Info.plist from `FlutterSceneDelegate` to -`$(PRODUCT_MODULE_NAME).SceneDelegate`. +`Info.plist` from `FlutterSceneDelegate` to `$(PRODUCT_MODULE_NAME).SceneDelegate`. @@ -292,8 +307,7 @@ For Objective-C projects, create a `SceneDelegate.h` and `SceneDelegate.m`: ``` 3. Change the "Delegate Class Name" (`UISceneDelegateClassName`) in the -Info.plist from `FlutterSceneDelegate` to `SceneDelegate`. - +`Info.plist` from `FlutterSceneDelegate` to `SceneDelegate`. @@ -327,10 +341,11 @@ but not required. The `FlutterSceneDelgate` forwards scene callbacks, such as -When using Flutter in a SwiftUI app, you can [optionally use a -FlutterAppDelegate](/add-to-app/ios/add-flutter-screen#using-the-flutterappdelegate) -to receive application events. To migrate that to use UIScene events, you can -make the following changes: +When using Flutter in a SwiftUI app, +you can [optionally use a FlutterAppDelegate][] +to receive application events. +To migrate that to use `UIScene` events, +you can make the following changes: 1. Set the Scene Delegate to `FlutterSceneDelegate` in `application:configurationForConnecting:options:`. @@ -354,24 +369,26 @@ make the following changes: } ``` -2. If your app does not support multiple scenes, set `Enable Multiple Scenes` -to `NO` under `Application Scene Manifest` in your target's Info properties. -This is enabled by default for SwiftUI apps. +[optionally use a FlutterAppDelegate]: /add-to-app/ios/add-flutter-screen#using-the-flutterappdelegate + +2. If your app doesn't support multiple scenes, set `Enable Multiple Scenes` + to `NO` under `Application Scene Manifest` in your target's Info properties. + This is enabled by default for SwiftUI apps. ![Xcode plist editor for UIApplicationSceneManifest](/assets/images/docs/breaking-changes/uiscenedelegate-swiftui-info-plist.png) -Otherwise, see [If your app supports multiple -scenes](/release/breaking-changes/uiscenedelegate/#if-your-app-supports-multiple-scenes) -for further instructions. +Otherwise, visit [if your app supports multiple scenes][] for further instructions. +[if your app supports multiple scenes]: /release/breaking-changes/uiscenedelegate/#if-your-app-supports-multiple-scenes + ### If you can't directly make FlutterSceneDelegate a subclass -If you can't directly make `FlutterSceneDelegate` a subclass, you can use the -`FlutterSceneLifeCycleProvider` protocol and +If you can't directly make `FlutterSceneDelegate` a subclass, +you can use the `FlutterSceneLifeCycleProvider` protocol and `FlutterPluginSceneLifeCycleDelegate` object to forward scene life cycle events to Flutter. @@ -514,12 +531,14 @@ to Flutter. ### If your app supports multiple scenes -When multiple scenes is enabled (UIApplicationSupportsMultipleScenes), Flutter cannot automatically associate a -`FlutterEngine` with a scene during the scene connection phase. In order for -plugins to receive launch connection information, the `FlutterEngine` must be -manually registered with either the `FlutterSceneDelegate` or -`FlutterPluginSceneLifeCycleDelegate` during -`scene:willConnectToSession:options:`. Otherwise, once the view, created by the +When multiple scenes is enabled (`UIApplicationSupportsMultipleScenes`), +Flutter can't automatically associate a +`FlutterEngine` with a scene during the scene connection phase. +For plugins to receive launch connection information, +the `FlutterEngine` must be manually registered with either the +`FlutterSceneDelegate` or `FlutterPluginSceneLifeCycleDelegate` during +`scene:willConnectToSession:options:`. +Otherwise, once the view, created by the `FlutterViewController` and `FlutterEngine`, is added to the view heirarchy, the `FlutterEngine` will automatically register for scene events. @@ -642,7 +661,7 @@ sceneLifeCycleDelegate.unregisterSceneLifeCycle(with: flutterEngine) ## Migration guide for Flutter plugins -Not all plugins use lifecycle events. If your plugin does, though, you will +Not all plugins use lifecycle events. However, if your plugin does you will need to migrate to UIKit's scene-based lifecycle. 1. Update the Dart and Flutter SDK versions in your pubspec.yaml @@ -678,9 +697,9 @@ environment: 3. Registers the plugin as a receiver of `UISceneDelegate` calls. -To continue supporting apps that have not migrated to the UIScene lifecycle yet, -you might consider remaining registered to the App Delegate and keeping the App -Delegate events as well. +To continue supporting apps that have not migrated to the `UIScene` lifecycle yet, +you might consider remaining registered to the App Delegate and keeping the +`AppDelegate` events as well. @@ -707,11 +726,10 @@ Delegate events as well. -4. Add one or more of the following scene events that are needed for your -plugin. +4. Add one or more of the following scene events needed for your plugin. -Most App Delegate UI events have a 1-to-1 replacement. To see details for each -event, visit Apple's documentation on +Most `AppDelegate` UI events have a 1-to-1 replacement. +To see details for each event, visit Apple's documentation on [`UISceneDelegate`][] and [`UIWindowSceneDelegate`][]. [`UISceneDelegate`]: {{site.apple-dev}}/documentation/uikit/uiscenedelegate @@ -796,15 +814,15 @@ public func windowScene( 5. Move launch logic from `application:willFinishLaunchingWithOptions:` and -`application:didFinishLaunchingWithOptions:` to -`scene:willConnectToSession:options:`. + `application:didFinishLaunchingWithOptions:` to + `scene:willConnectToSession:options:`. Despite `application:willFinishLaunchingWithOptions:` and -`application:didFinishLaunchingWithOptions:` not being deprecated, after -migrating to the `UIScene` lifecycle, the launch options will be `nil`. Any logic -performed here related to the launch options should be moved to the -`scene:willConnectToSession:options:` event. - +`application:didFinishLaunchingWithOptions:` not being deprecated, +after migrating to the `UIScene` lifecycle, +the launch options will be `nil`. +Any logic performed here related to the launch options should be +moved to the `scene:willConnectToSession:options:` event. 6. [Optional] Migrate other deprecated APIs to support multiple scenes in the future. @@ -815,7 +833,9 @@ performed here related to the launch options should be moved to the | [`UIApplication windows`](https://developer.apple.com/documentation/uikit/uiapplication/windows) | [`UIWindowScene windows`](https://developer.apple.com/documentation/uikit/uiwindowscene/windows?language=objc) | | [`UIApplicationDelegate window`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/window) | [`UIView window`](https://developer.apple.com/documentation/uikit/uiview/window?language=objc) | -Instead of accessing these APIs, you can access the `windowScene` through the `viewController`. See examples below. +Instead of accessing these APIs, +you can access the `windowScene` through the `viewController`. +See the following examples. @@ -932,8 +952,9 @@ Migration options: ``` ## Hide Migration Warning -To hide the Flutter CLI warning about migrating to UIScene, add the following -to your pubspec.yaml: + +To hide the Flutter CLI warning about migrating to UIScene, +add the following to your pubspec.yaml: ```yaml file="pubspec.yaml" diff flutter: From 98a986d07adec2f29b735e0e9f4e12dbeb361c01 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" Date: Wed, 18 Feb 2026 16:32:59 -0800 Subject: [PATCH 2/9] Fix link --- src/content/release/breaking-changes/uiscenedelegate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/release/breaking-changes/uiscenedelegate.md b/src/content/release/breaking-changes/uiscenedelegate.md index f7dadb6f2f3..3d89a85f705 100644 --- a/src/content/release/breaking-changes/uiscenedelegate.md +++ b/src/content/release/breaking-changes/uiscenedelegate.md @@ -253,7 +253,7 @@ As XML: To _temporarily_ disable UIScene, add an underbar (`_`) in front of **Application Scene Manifest** in your `Info.plist`: -![Temporarily disable UIScene](/assets/images/docs/breaking-changes/disable-UIScene.png) +![Temporarily disable UIScene](/assets/images/docs/breaking-changes/disableUIScene.png) When you are ready to re-enable, remove the underbar. From 40bcc1f3feeb50088ed167de453d94c7389b4417 Mon Sep 17 00:00:00 2001 From: Shams Zakhour <44418985+sfshaza2@users.noreply.github.com> Date: Wed, 18 Feb 2026 16:46:04 -0800 Subject: [PATCH 3/9] Update src/content/release/breaking-changes/uiscenedelegate.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- src/content/release/breaking-changes/uiscenedelegate.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/content/release/breaking-changes/uiscenedelegate.md b/src/content/release/breaking-changes/uiscenedelegate.md index 3d89a85f705..e8aeeb8919f 100644 --- a/src/content/release/breaking-changes/uiscenedelegate.md +++ b/src/content/release/breaking-changes/uiscenedelegate.md @@ -250,12 +250,12 @@ As XML: ### Temporarily disable UIScene -To _temporarily_ disable UIScene, add an underbar (`_`) +To _temporarily_ disable UIScene, add an underscore (`_`) in front of **Application Scene Manifest** in your `Info.plist`: -![Temporarily disable UIScene](/assets/images/docs/breaking-changes/disableUIScene.png) +![Temporarily disable UIScene](/assets/images/docs/breaking-changes/disable-UIScene.png) -When you are ready to re-enable, remove the underbar. +When you are ready to re-enable, remove the underscore. ### Create a SceneDelegate (Optional) From c17355b92527a021a5befb4fba03b0d0bb02c417 Mon Sep 17 00:00:00 2001 From: Shams Zakhour <44418985+sfshaza2@users.noreply.github.com> Date: Wed, 18 Feb 2026 16:46:37 -0800 Subject: [PATCH 4/9] Update src/content/release/breaking-changes/uiscenedelegate.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- src/content/release/breaking-changes/uiscenedelegate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/release/breaking-changes/uiscenedelegate.md b/src/content/release/breaking-changes/uiscenedelegate.md index e8aeeb8919f..ded60ec8567 100644 --- a/src/content/release/breaking-changes/uiscenedelegate.md +++ b/src/content/release/breaking-changes/uiscenedelegate.md @@ -32,7 +32,7 @@ To use the UIScene lifecycle with Flutter, migrate the following support: * For all Flutter apps that support iOS, visit the [migration guide][] for Flutter apps. -* For Flutter app embedded in iOS native apps, visit the +* For Flutter apps embedded in iOS native apps, visit the [migration guide for adding Flutter to an existing app][migrate-existing-app]. * For Flutter plugins that use iOS application lifecycle events, visit the [migration guide for plugins][] From c052bb0a6f39271e607876cbd5a348117d7ee267 Mon Sep 17 00:00:00 2001 From: Shams Zakhour <44418985+sfshaza2@users.noreply.github.com> Date: Wed, 18 Feb 2026 16:46:49 -0800 Subject: [PATCH 5/9] Update src/content/release/breaking-changes/uiscenedelegate.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- src/content/release/breaking-changes/uiscenedelegate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/release/breaking-changes/uiscenedelegate.md b/src/content/release/breaking-changes/uiscenedelegate.md index ded60ec8567..42f1b94d453 100644 --- a/src/content/release/breaking-changes/uiscenedelegate.md +++ b/src/content/release/breaking-changes/uiscenedelegate.md @@ -77,7 +77,7 @@ If the migration succeeds, no further action is required. Previously, Flutter plugins were registered in `application:didFinishLaunchingWithOptions:`. -To accomodate the new app launch sequence, +To accommodate the new app launch sequence, plugin registration must now be handled in a new callback called `didInitializeImplicitFlutterEngine`. From eb6c6379c51823735b8e096f450fc266d3b3d1ea Mon Sep 17 00:00:00 2001 From: Shams Zakhour <44418985+sfshaza2@users.noreply.github.com> Date: Wed, 18 Feb 2026 16:46:59 -0800 Subject: [PATCH 6/9] Update src/content/release/breaking-changes/uiscenedelegate.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- src/content/release/breaking-changes/uiscenedelegate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/release/breaking-changes/uiscenedelegate.md b/src/content/release/breaking-changes/uiscenedelegate.md index 42f1b94d453..9b82719d20b 100644 --- a/src/content/release/breaking-changes/uiscenedelegate.md +++ b/src/content/release/breaking-changes/uiscenedelegate.md @@ -194,7 +194,7 @@ usage](/release/breaking-changes/uiscenedelegate/#bespoke-flutterviewcontroller- Apple has deprecated application life cycle events related to UI state. After migrating to UIScene lifecycle, UIKit will no longer call these events. -If you were using one of these depreacted APIs, such as [`applicationDidBecomeActive`], +If you were using one of these deprecated APIs, such as [`applicationDidBecomeActive`], you will likely need to create a `SceneDelegate` and migrate to scene life cycle events. Check out [Apple's documentation] on migrating. From 76636b00f6f6cde3e32344cab209d9c63b7dcc48 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Thu, 19 Feb 2026 16:12:22 +0800 Subject: [PATCH 7/9] Fix screenshot link reference and optimize image --- .../docs/breaking-changes/disable-ui-scene.png | Bin 0 -> 7132 bytes .../docs/breaking-changes/disableUIScene.png | Bin 21834 -> 0 bytes .../release/breaking-changes/uiscenedelegate.md | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 site/web/assets/images/docs/breaking-changes/disable-ui-scene.png delete mode 100644 site/web/assets/images/docs/breaking-changes/disableUIScene.png diff --git a/site/web/assets/images/docs/breaking-changes/disable-ui-scene.png b/site/web/assets/images/docs/breaking-changes/disable-ui-scene.png new file mode 100644 index 0000000000000000000000000000000000000000..3451a701266d041b0581735e5327fc14fdf6d80d GIT binary patch literal 7132 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 ni>NZxgJGEXD2pV~wH%)=_j`Q_t7Krt6X= Date: Wed, 4 Mar 2026 12:47:00 -0800 Subject: [PATCH 8/9] Add newline to fix missing documentation hidden behind a tab --- src/content/release/breaking-changes/uiscenedelegate.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/content/release/breaking-changes/uiscenedelegate.md b/src/content/release/breaking-changes/uiscenedelegate.md index e78719ace69..ec411048c5d 100644 --- a/src/content/release/breaking-changes/uiscenedelegate.md +++ b/src/content/release/breaking-changes/uiscenedelegate.md @@ -308,6 +308,7 @@ For Objective-C projects, create a `SceneDelegate.h` and `SceneDelegate.m`: 3. Change the "Delegate Class Name" (`UISceneDelegateClassName`) in the `Info.plist` from `FlutterSceneDelegate` to `SceneDelegate`. + From 76ef6788f0578bc8e4825b43f63f15ed4524380d Mon Sep 17 00:00:00 2001 From: John Ryan Date: Wed, 4 Mar 2026 12:58:37 -0800 Subject: [PATCH 9/9] Move "Temporarily disable UIScene" section --- .../release/breaking-changes/uiscenedelegate.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/content/release/breaking-changes/uiscenedelegate.md b/src/content/release/breaking-changes/uiscenedelegate.md index ec411048c5d..231a9e45329 100644 --- a/src/content/release/breaking-changes/uiscenedelegate.md +++ b/src/content/release/breaking-changes/uiscenedelegate.md @@ -248,15 +248,6 @@ As XML: ``` -### Temporarily disable UIScene - -To _temporarily_ disable UIScene, add an underscore (`_`) -in front of **Application Scene Manifest** in your `Info.plist`: - -![Temporarily disable UIScene](/assets/images/docs/breaking-changes/disable-ui-scene.png) - -When you are ready to re-enable, remove the underscore. - ### Create a SceneDelegate (Optional) If you need access to the `SceneDelegate`, @@ -963,6 +954,14 @@ add the following to your pubspec.yaml: + enable-uiscene-migration: false ``` +## Temporarily disable UIScene + +To _temporarily_ disable UIScene, add an underscore (`_`) +in front of **Application Scene Manifest** in your `Info.plist`: + +![Temporarily disable UIScene](/assets/images/docs/breaking-changes/disable-ui-scene.png) + +When you are ready to re-enable, remove the underscore. ## Timeline