@react-native-firebase/app 21.13.0 → 22.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,35 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [22.0.0](https://github.com/invertase/react-native-firebase/compare/v21.14.0...v22.0.0) (2025-04-25)
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ - **app, sdks:** firebase-ios-sdk 11.12.0 requires Xcode 16.2+
11
+
12
+ ### Features
13
+
14
+ - **app, sdks:** firebase-ios-sdk 11.12.0 / firebase-android-sdk 33.13.0 ([c63d843](https://github.com/invertase/react-native-firebase/commit/c63d8435b678742cfdd98f4d1d8895134cb9cf09))
15
+
16
+ ### Bug Fixes
17
+
18
+ - **analytics:** Type defs ([#8363](https://github.com/invertase/react-native-firebase/issues/8363)) ([74efc84](https://github.com/invertase/react-native-firebase/commit/74efc848e3ecda47b5c7cdf79e5e72370cd10b7d))
19
+ - **android:** use `=` assignment vs deprecated space-assignment ([39c2ecb](https://github.com/invertase/react-native-firebase/commit/39c2ecb0069a8a5a65b04fb7f86ccecf83273868))
20
+ - enable provenance signing during publish ([4535f0d](https://github.com/invertase/react-native-firebase/commit/4535f0d5756c89aeb8f8e772348c71d8176348be))
21
+
22
+ ## [21.14.0](https://github.com/invertase/react-native-firebase/compare/v21.13.0...v21.14.0) (2025-04-14)
23
+
24
+ ### Features
25
+
26
+ - **messaging, android:** notification delegation APIs, firebase.json feature toggle ([c0c5054](https://github.com/invertase/react-native-firebase/commit/c0c505432e95c85fa6621b548b24e755e2894c37))
27
+ - **messaging, android:** support BigQuery export setting in firebase.json ([fa0e967](https://github.com/invertase/react-native-firebase/commit/fa0e967f9a06719c159a4980749f80c5ff2e2c39))
28
+
29
+ ### Bug Fixes
30
+
31
+ - **app, expo:** update iOS AppDelegate for SDK 53 support ([a3d82c7](https://github.com/invertase/react-native-firebase/commit/a3d82c73e746fe3d2ac4513b15696ced98ecf2ca))
32
+ - **app:** annotate initializeApp return as a promise ([#8366](https://github.com/invertase/react-native-firebase/issues/8366)) ([5189c32](https://github.com/invertase/react-native-firebase/commit/5189c328e2643cdaf9c96059ce139b34c7651466))
33
+ - **app:** firebase-ios-sdk 11.11.0 / firebase-android-sdk 33.12.0 ([1bfd3eb](https://github.com/invertase/react-native-firebase/commit/1bfd3eb5558296deff7a368a607163019b1d4d11))
34
+
6
35
  ## [21.13.0](https://github.com/invertase/react-native-firebase/compare/v21.12.3...v21.13.0) (2025-03-31)
7
36
 
8
37
  **Note:** Version bump only for package @react-native-firebase/app
@@ -62,11 +62,11 @@ if (rootProject.ext && rootProject.ext.firebaseJson) {
62
62
  android {
63
63
  def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger()
64
64
  if (agpVersion >= 7) {
65
- namespace 'io.invertase.firebase'
65
+ namespace = 'io.invertase.firebase'
66
66
  }
67
67
 
68
68
  defaultConfig {
69
- multiDexEnabled true
69
+ multiDexEnabled = true
70
70
  manifestPlaceholders = [
71
71
  firebaseJsonDataCollectionDefaultEnabled: dataCollectionDefaultEnabled
72
72
  ]
@@ -74,17 +74,17 @@ android {
74
74
 
75
75
  buildFeatures {
76
76
  // AGP 8 no longer builds config by default
77
- buildConfig true
77
+ buildConfig = true
78
78
  }
79
79
 
80
80
  lintOptions {
81
81
  disable 'GradleCompatible'
82
- abortOnError false
82
+ abortOnError = false
83
83
  }
84
84
  if (agpVersion < 8) {
85
85
  compileOptions {
86
- sourceCompatibility JavaVersion.VERSION_11
87
- targetCompatibility JavaVersion.VERSION_11
86
+ sourceCompatibility = JavaVersion.VERSION_11
87
+ targetCompatibility = JavaVersion.VERSION_11
88
88
  }
89
89
  }
90
90
 
@@ -18,5 +18,5 @@ package io.invertase.firebase.app;
18
18
  */
19
19
  // generated file - do not modify or commit
20
20
  public class ReactNativeFirebaseVersion {
21
- public static String VERSION = "21.13.0";
21
+ public static String VERSION = "22.0.0";
22
22
  }
@@ -56,12 +56,7 @@
56
56
  "app_log_level": {
57
57
  "description": "Set the log level across all modules. Only applies to iOS currently. Can be 'error', 'warn', 'info', 'debug'.\n Logs messages at the configured level or lower.\n Note that if an app is running from AppStore, it will never log above info even if level is set to a higher (more verbose) setting",
58
58
  "type": "string",
59
- "enum": [
60
- "error",
61
- "warn",
62
- "info",
63
- "debug"
64
- ]
59
+ "enum": ["error", "warn", "info", "debug"]
65
60
  },
66
61
  "app_check_token_auto_refresh": {
67
62
  "description": "If this flag is disabled then Firebase App Check will not periodically auto-refresh the app check token.\n This is useful for opt-in-first data flows, for example when dealing with GDPR compliance. \nIf unset it will default to the SDK-wide data collection default enabled setting. This may be overridden dynamically in Javascript.",
@@ -100,10 +95,18 @@
100
95
  "type": "number",
101
96
  "minimum": 0
102
97
  },
98
+ "messaging_android_notification_delegation_enabled": {
99
+ "description": "On Android Q+ and current Play Services, your FCM may be delegated which disables firebase message listeners. Disabled by default. You may re-enable if necessary",
100
+ "type": "boolean"
101
+ },
103
102
  "messaging_android_notification_channel_id": {
104
103
  "description": "On Android, any message which displays a Notification use a default Notification Channel (created by FCM called `Miscellaneous`). This channel contains basic notification settings which may not be appropriate for your application. You can change what Channel is used by updating the `messaging_android_notification_channel_id` property.",
105
104
  "type": "string"
106
105
  },
106
+ "messaging_android_notification_delivery_metrics_export_enabled": {
107
+ "description": "Determines whether Firebase Cloud Messaging exports message delivery metrics to BigQuery. Defaults to disabled.",
108
+ "type": "boolean"
109
+ },
107
110
  "messaging_android_notification_color": {
108
111
  "description": "On Android, any messages which display a Notification do not use a color to tint the content (such as the small icon, title etc). To provide a custom tint color, update the messaging_android_notification_color property with a Android color resource name. \n The library provides a set of predefined colors corresponding to the HTML colors for convenience",
109
112
  "type": "string"
@@ -18,4 +18,4 @@
18
18
  #import <React/RCTVersion.h>
19
19
 
20
20
  // generated file - do not modify or commit
21
- NSString* const RNFBVersionString = @"21.13.0";
21
+ NSString* const RNFBVersionString = @"22.0.0";
@@ -218,26 +218,22 @@ export function setLogLevel(logLevel) {
218
218
  }
219
219
 
220
220
  export function setReactNativeAsyncStorage(asyncStorage) {
221
+ warnIfNotModularCall(arguments, 'setReactNativeAsyncStorage()');
222
+
221
223
  if (!isObject(asyncStorage)) {
222
- throw new Error("firebase.setReactNativeAsyncStorage(*) 'asyncStorage' must be an object.");
224
+ throw new Error("setReactNativeAsyncStorage(*) 'asyncStorage' must be an object.");
223
225
  }
224
226
 
225
227
  if (!isFunction(asyncStorage.setItem)) {
226
- throw new Error(
227
- "firebase.setReactNativeAsyncStorage(*) 'asyncStorage.setItem' must be a function.",
228
- );
228
+ throw new Error("setReactNativeAsyncStorage(*) 'asyncStorage.setItem' must be a function.");
229
229
  }
230
230
 
231
231
  if (!isFunction(asyncStorage.getItem)) {
232
- throw new Error(
233
- "firebase.setReactNativeAsyncStorage(*) 'asyncStorage.getItem' must be a function.",
234
- );
232
+ throw new Error("setReactNativeAsyncStorage(*) 'asyncStorage.getItem' must be a function.");
235
233
  }
236
234
 
237
235
  if (!isFunction(asyncStorage.removeItem)) {
238
- throw new Error(
239
- "firebase.setReactNativeAsyncStorage(*) 'asyncStorage.removeItem' must be a function.",
240
- );
236
+ throw new Error("setReactNativeAsyncStorage(*) 'asyncStorage.removeItem' must be a function.");
241
237
  }
242
238
 
243
239
  setReactNativeAsyncStorageInternal(asyncStorage);
@@ -53,9 +53,9 @@ export function getApps(): FirebaseApp[];
53
53
  * Initializes a Firebase app with the provided options and name.
54
54
  * @param options - Options to configure the services used in the app.
55
55
  * @param name - The optional name of the app to initialize ('[DEFAULT]' if omitted).
56
- * @returns FirebaseApp - The initialized Firebase app.
56
+ * @returns Promise<FirebaseApp> - The initialized Firebase app.
57
57
  */
58
- export function initializeApp(options: FirebaseAppOptions, name?: string): FirebaseApp;
58
+ export function initializeApp(options: FirebaseAppOptions, name?: string): Promise<FirebaseApp>;
59
59
 
60
60
  /**
61
61
  * Retrieves an instance of a Firebase app.
@@ -70,3 +70,11 @@ export function getApp(name?: string): FirebaseApp;
70
70
  * @returns void
71
71
  */
72
72
  export function setLogLevel(logLevel: LogLevelString): void;
73
+
74
+ /**
75
+ * The `AsyncStorage` implementation to use for persisting data on 'Other' platforms.
76
+ * If not specified, in memory persistence is used.
77
+ *
78
+ * This is required if you want to persist things like Auth sessions, Analytics device IDs, etc.
79
+ */
80
+ export function setReactNativeAsyncStorage(asyncStorage: ReactNativeAsyncStorage): void;
@@ -6,6 +6,7 @@ import {
6
6
  getApps as getAppsCompat,
7
7
  initializeApp as initializeAppCompat,
8
8
  setLogLevel as setLogLevelCompat,
9
+ setReactNativeAsyncStorage as setReactNativeAsyncStorageCompat,
9
10
  } from '../internal';
10
11
  import { setUserLogHandler } from '../internal/logger';
11
12
  import sdkVersion from '../version';
@@ -84,4 +85,14 @@ export function setLogLevel(logLevel) {
84
85
  return setLogLevelCompat.call(null, logLevel, MODULAR_DEPRECATION_ARG);
85
86
  }
86
87
 
88
+ /**
89
+ * The `AsyncStorage` implementation to use for persisting data on 'Other' platforms.
90
+ * If not specified, in memory persistence is used.
91
+ *
92
+ * This is required if you want to persist things like Auth sessions, Analytics device IDs, etc.
93
+ */
94
+ export function setReactNativeAsyncStorage(asyncStorage) {
95
+ return setReactNativeAsyncStorageCompat.call(null, asyncStorage, MODULAR_DEPRECATION_ARG);
96
+ }
97
+
87
98
  export const SDK_VERSION = sdkVersion;
package/lib/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- module.exports = '21.13.0';
2
+ module.exports = '22.0.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-firebase/app",
3
- "version": "21.13.0",
3
+ "version": "22.0.0",
4
4
  "author": "Invertase <oss@invertase.io> (http://invertase.io)",
5
5
  "description": "A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Storage and more.",
6
6
  "main": "lib/index.js",
@@ -60,8 +60,8 @@
60
60
  "firebase": "11.3.1"
61
61
  },
62
62
  "devDependencies": {
63
- "@react-native-async-storage/async-storage": "^2.1.1",
64
- "expo": "^52.0.35"
63
+ "@react-native-async-storage/async-storage": "^2.1.2",
64
+ "expo": "^52.0.46"
65
65
  },
66
66
  "peerDependenciesMeta": {
67
67
  "expo": {
@@ -69,11 +69,12 @@
69
69
  }
70
70
  },
71
71
  "publishConfig": {
72
- "access": "public"
72
+ "access": "public",
73
+ "provenance": true
73
74
  },
74
75
  "sdkVersions": {
75
76
  "ios": {
76
- "firebase": "11.10.0",
77
+ "firebase": "11.12.0",
77
78
  "iosTarget": "13.0",
78
79
  "macosTarget": "10.15",
79
80
  "tvosTarget": "13.0"
@@ -82,7 +83,7 @@
82
83
  "minSdk": 21,
83
84
  "targetSdk": 34,
84
85
  "compileSdk": 34,
85
- "firebase": "33.11.0",
86
+ "firebase": "33.13.0",
86
87
  "firebaseCrashlyticsGradle": "3.0.3",
87
88
  "firebasePerfGradle": "1.4.2",
88
89
  "gmsGoogleServicesGradle": "4.4.2",
@@ -90,5 +91,5 @@
90
91
  "firebaseAppDistributionGradle": "5.1.1"
91
92
  }
92
93
  },
93
- "gitHead": "d4d02d15431a0be091a7417833e0180479f5e788"
94
+ "gitHead": "e9fee87b413c90e243347d5c60272f07f41d99b8"
94
95
  }
@@ -64,7 +64,7 @@ function modifySwiftAppDelegate(contents) {
64
64
  const methodInvocationLineMatcher = /(?:self\.moduleName\s*=\s*"([^"]*)")/g;
65
65
  // Add import
66
66
  if (!contents.includes('import FirebaseCore')) {
67
- contents = contents.replace(/import ReactAppDependencyProvider/g, `import ReactAppDependencyProvider
67
+ contents = contents.replace(/import Expo/g, `import Expo
68
68
  import FirebaseCore`);
69
69
  }
70
70
  // To avoid potential issues with existing changes from older plugin versions
@@ -75,8 +75,8 @@ export function modifySwiftAppDelegate(contents: string): string {
75
75
  // Add import
76
76
  if (!contents.includes('import FirebaseCore')) {
77
77
  contents = contents.replace(
78
- /import ReactAppDependencyProvider/g,
79
- `import ReactAppDependencyProvider
78
+ /import Expo/g,
79
+ `import Expo
80
80
  import FirebaseCore`,
81
81
  );
82
82
  }
@@ -1 +1 @@
1
- {"root":["./src/index.ts","./src/android/applyPlugin.ts","./src/android/buildscriptDependency.ts","./src/android/constants.ts","./src/android/copyGoogleServices.ts","./src/android/index.ts","./src/ios/appDelegate.ts","./src/ios/googleServicesPlist.ts","./src/ios/index.ts"],"version":"5.7.3"}
1
+ {"root":["./src/index.ts","./src/android/applyPlugin.ts","./src/android/buildscriptDependency.ts","./src/android/constants.ts","./src/android/copyGoogleServices.ts","./src/android/index.ts","./src/ios/appDelegate.ts","./src/ios/googleServicesPlist.ts","./src/ios/index.ts"],"version":"5.8.3"}