From 4820a7bafa0af26b94cd0c6e2e77820d9f723591 Mon Sep 17 00:00:00 2001 From: David Miguel Date: Fri, 19 Dec 2025 13:40:05 +0100 Subject: [PATCH 1/2] fix(firebase_core, web): return empty list from apps getter in WASM mode Fixes #17918 The `apps` getter now checks if the Firebase core module is loaded before accessing `firebase.apps`. This avoids triggering a JavaScript exception when Firebase is not initialized, which is more efficient than relying on exception handling. This change ensures `Firebase.apps` returns an empty list in both JS and WASM web builds when called before `Firebase.initializeApp()`. --- .../firebase_core_web/lib/src/firebase_core_web.dart | 5 +++++ .../test/firebase_core_web_exceptions_test.dart | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/packages/firebase_core/firebase_core_web/lib/src/firebase_core_web.dart b/packages/firebase_core/firebase_core_web/lib/src/firebase_core_web.dart index 66538bf77e95..b70f503d9ff3 100644 --- a/packages/firebase_core/firebase_core_web/lib/src/firebase_core_web.dart +++ b/packages/firebase_core/firebase_core_web/lib/src/firebase_core_web.dart @@ -227,6 +227,11 @@ class FirebaseCoreWeb extends FirebasePlatform { /// Returns all created [FirebaseAppPlatform] instances. @override List get apps { + // Check if Firebase core module is loaded before accessing firebase.apps + if (globalContext.getProperty('firebase_core'.toJS) == null) { + return []; + } + try { return firebase.apps.map(_createFromJsApp).toList(growable: false); } catch (exception, stackTrace) { diff --git a/packages/firebase_core/firebase_core_web/test/firebase_core_web_exceptions_test.dart b/packages/firebase_core/firebase_core_web/test/firebase_core_web_exceptions_test.dart index e72ade85e3c1..c0ce6a175273 100644 --- a/packages/firebase_core/firebase_core_web/test/firebase_core_web_exceptions_test.dart +++ b/packages/firebase_core/firebase_core_web/test/firebase_core_web_exceptions_test.dart @@ -39,4 +39,16 @@ void main() { }); }); }); + + group('apps getter', () { + setUp(() async { + FirebasePlatform.instance = FirebaseCoreWeb(); + }); + + test( + 'should return empty list when Firebase is not initialized', + () { + expect(FirebasePlatform.instance.apps, isEmpty); + }); + }); } From ca979c6e62c8ad552de86c3aa4c8a85113bf9704 Mon Sep 17 00:00:00 2001 From: David Miguel Date: Fri, 19 Dec 2025 14:08:43 +0100 Subject: [PATCH 2/2] Fix test formatting --- .../test/firebase_core_web_exceptions_test.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/firebase_core/firebase_core_web/test/firebase_core_web_exceptions_test.dart b/packages/firebase_core/firebase_core_web/test/firebase_core_web_exceptions_test.dart index c0ce6a175273..4eec2d70b073 100644 --- a/packages/firebase_core/firebase_core_web/test/firebase_core_web_exceptions_test.dart +++ b/packages/firebase_core/firebase_core_web/test/firebase_core_web_exceptions_test.dart @@ -45,9 +45,7 @@ void main() { FirebasePlatform.instance = FirebaseCoreWeb(); }); - test( - 'should return empty list when Firebase is not initialized', - () { + test('should return empty list when Firebase is not initialized', () { expect(FirebasePlatform.instance.apps, isEmpty); }); });