You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Flutter still prints the deprecated-lifecycle warning for FLTFirebaseAuthPlugin on the latestfirebase_auth (6.5.3), which
includes the UIScene migration from #18054:
Plugin FLTFirebaseAuthPlugin uses deprecated application lifecycle events. Please contact plugin maintainers and request UIScene
lifecycle support. This will be required in a future version of Flutter. See
https://docs.flutter.dev/release/breaking-changes/uiscenedelegate#migration-guide-for-flutter-plugins
This is not the stale-version scenario diagnosed in similar reports ("another package depends on an older firebase_auth"). In my
app:
firebase_auth is a direct dependency resolved at 6.5.3 (single version in the graph — verified in pubspec.lock and flutter pub deps);
the compiled iOS source is .symlinks/plugins/firebase_auth → ~/.pub-cache/hosted/pub.dev/firebase_auth-6.5.3/ and the pod is
locked at 6.5.3;
FLTFirebaseAuthPlugin is defined nowhere else in the build.
Root cause
In FLTFirebaseAuthPlugin.h, the FlutterSceneLifeCycleDelegate conformance added by #18054 is gated behind:
Both arms of this condition are always false, on every Flutter version that exists:
The engine has never shipped a header named FlutterSceneLifeCycleDelegate.h. On Flutter 3.44.2 stable, Flutter.xcframework/ios-arm64/Flutter.framework/Headers/ contains FlutterSceneLifeCycle.h and FlutterSceneDelegate.h; the FlutterSceneLifeCycleDelegateprotocol is declared in FlutterSceneLifeCycle.h (imported by FlutterPlugin.h). The same is
true on current master (engine/src/flutter/shell/platform/darwin/ios/framework/Headers/), so this cannot be fixed by upgrading
Flutter.
defined(FlutterSceneLifeCycleDelegate) tests a preprocessor macro. Nothing defines one with that name — the @protocol FlutterSceneLifeCycleDelegate; forward declaration in the same header is not a macro, and the podspecs' GCC_PREPROCESSOR_DEFINITIONS only set LIBRARY_VERSION / LIBRARY_NAME.
As a result the protocol conformance is compiled out, conformsToProtocol: fails at runtime, and the engine prints the warning —
even though scene:openURLContexts: and the addSceneDelegate: registration are present in FLTFirebaseAuthPlugin.m. The migration
code exists but can never activate.
Supporting evidence
On the same app and engine, flutter_facebook_auth 7.1.7 declares FlutterSceneLifeCycleDelegate conformance unconditionally
(Swift) — and its deprecated-lifecycle warning disappeared after upgrading. This confirms the engine keys the warning on the declared
protocol conformance.
The same dead gate exists in other plugins
FLTFirebaseMessagingPlugin.h carries the identical conditional (lines 57 and 66, in both the ios/ and macos/ copies). Please
audit the whole repo for this pattern — every ObjC plugin migrated with it has non-functional UIScene support.
Plugin FLTFirebaseAuthPlugin uses deprecated application lifecycle events. Please contact plugin maintainers and request UIScene lifecycle support. This will be required in a future version of Flutter.
Flutter dependencies
Expand Flutter dependencies snippet
Replace this line with the contents of your `flutter pub deps -- --style=compact`.
Is there an existing issue for this?
Which plugins are affected?
Auth
Which platforms are affected?
iOS
Description
Flutter still prints the deprecated-lifecycle warning for
FLTFirebaseAuthPluginon the latestfirebase_auth(6.5.3), whichincludes the UIScene migration from #18054:
This is not the stale-version scenario diagnosed in similar reports ("another package depends on an older firebase_auth"). In my
app:
firebase_authis a direct dependency resolved at 6.5.3 (single version in the graph — verified inpubspec.lockandflutter pub deps);.symlinks/plugins/firebase_auth → ~/.pub-cache/hosted/pub.dev/firebase_auth-6.5.3/and the pod islocked at 6.5.3;
FLTFirebaseAuthPluginis defined nowhere else in the build.Root cause
In
FLTFirebaseAuthPlugin.h, theFlutterSceneLifeCycleDelegateconformance added by #18054 is gated behind:Both arms of this condition are always false, on every Flutter version that exists:
FlutterSceneLifeCycleDelegate.h. On Flutter 3.44.2 stable,Flutter.xcframework/ios-arm64/Flutter.framework/Headers/containsFlutterSceneLifeCycle.handFlutterSceneDelegate.h; theFlutterSceneLifeCycleDelegateprotocol is declared inFlutterSceneLifeCycle.h(imported byFlutterPlugin.h). The same istrue on current master (
engine/src/flutter/shell/platform/darwin/ios/framework/Headers/), so this cannot be fixed by upgradingFlutter.
defined(FlutterSceneLifeCycleDelegate)tests a preprocessor macro. Nothing defines one with that name — the@protocol FlutterSceneLifeCycleDelegate;forward declaration in the same header is not a macro, and the podspecs'GCC_PREPROCESSOR_DEFINITIONSonly setLIBRARY_VERSION/LIBRARY_NAME.As a result the protocol conformance is compiled out,
conformsToProtocol:fails at runtime, and the engine prints the warning —even though
scene:openURLContexts:and theaddSceneDelegate:registration are present inFLTFirebaseAuthPlugin.m. The migrationcode exists but can never activate.
Supporting evidence
On the same app and engine,
flutter_facebook_auth7.1.7 declaresFlutterSceneLifeCycleDelegateconformance unconditionally(Swift) — and its deprecated-lifecycle warning disappeared after upgrading. This confirms the engine keys the warning on the declared
protocol conformance.
The same dead gate exists in other plugins
FLTFirebaseMessagingPlugin.hcarries the identical conditional (lines 57 and 66, in both theios/andmacos/copies). Pleaseaudit the whole repo for this pattern — every ObjC plugin migrated with it has non-functional UIScene support.
Suggested fix
#if __has_include(<Flutter/FlutterSceneLifeCycle.h>)(or drop the gate entirely once the minimum supported Flutter ships the scene API).
Environment
Reproducing the issue
Steps to reproduce
flutter createan app on Flutter 3.44.2 stable, addfirebase_auth: ^6.5.3.Plugin FLTFirebaseAuthPlugin uses deprecated application lifecycle events…in the console, despite feat(ios): migrate iOS to UIScene lifecycle #18054 being includedin this release.
Firebase Core version
4.11.0
Flutter Version
3.44.2
Relevant Log Output
Plugin FLTFirebaseAuthPlugin uses deprecated application lifecycle events. Please contact plugin maintainers and request UIScene lifecycle support. This will be required in a future version of Flutter.Flutter dependencies
Expand
Flutter dependenciessnippetReplace this line with the contents of your `flutter pub deps -- --style=compact`.Additional context and comments
No response