⚠ BREAKING CHANGES
- messaging, ios: make APNs registration timeout independent of main queue
- app, android: On Android, makePlayServicesAvailable previously resolved even when the Play Services availability task was canceled or failed. It may now reject, so callers should handle Promise rejections.
- logEvent, initializeAppCheck, and initializeFirestore return
synchronously; remove await and .then() chains on these APIs.
- Analytics: align logEvent return type with firebase-js-sdk sync void.
- App Check: align initializeAppCheck with sync AppCheck return.
- Firestore: align initializeFirestore with sync Firestore return.
- Firestore: export aggregateFieldEqual for aggregate query parity.
- Remote Config: accept RemoteConfigOptions in getRemoteConfig.
- Remote Config: document native FetchStatus literals as intentional drift.
- Docs: add firebase-js-sdk API parity improvements to v26 migration guide.
- phone-number-verification: migrate phone-number-verification to TurboModules
- auth: migrate auth to TurboModules
- database: migrate database to TurboModules
- messaging: messaging requires the React Native New Architecture.
- storage: migrate storage to TurboModules
- crashlytics: migrate crashlytics to TurboModules
- analytics: migrate analytics to TurboModules
- remote-config: migrate remote-config to TurboModules
- app-check: migrate app-check to TurboModules
- ml: migrate ml to TurboModules
- app-distribution: migrate app-distribution to TurboModules
- in-app-messaging: migrate in-app-messaging to TurboModules
- perf: migrate perf to TurboModules
- installations: migrate installations to TurboModules
- firestore: Firestore native bridge requires New Architecture.
Legacy NativeModules bridge removed; four Codegen TurboModule specs
(NativeRNFBTurboFirestore{,Collection,Document,Transaction}) with
committed generated artifacts, Android/iOS turbo shells, and JS wiring. - app: App/Core modules native bridge requires New Architecture.
Migrate RNFBAppModule and RNFBUtilsModule to Codegen TurboModules with
unified resolver, lazy Proxy wrapper, and committed generated artifacts.
Includes functions codegenConfig rename (NewArch-AD-7), test harness
overrides, architecture decisions, and validation workflow hardening.
- refactor!(types): align modular APIs with firebase-js-sdk sync signatures (b42d1f7)
Features
- analytics: migrate analytics to TurboModules (5cc1c9c)
- app-check: migrate app-check to TurboModules (b93a70a)
- app-distribution: migrate app-distribution to TurboModules (1ab98b1)
- app: migrate app modules to TurboModules incl general migration infra (978168d)
- auth: migrate auth to TurboModules (5fe09ac)
- crashlytics: migrate crashlytics to TurboModules (122295e)
- database: migrate database to TurboModules (27ad35c)
- firestore, ios: enable substring, timestampAdd, timestampSubtract, arrayGet pipeline support (4e0b2ee)
- firestore/pipelines: expose search stage and pipeline expressions (e6040a6)
- firestore: export aggregateQuerySnapshotEqual for SDK parity (ea8138e)
- firestore: expose pipeline coalesce expression helper (5781c87)
- firestore: expose pipeline currentDocument expression helper (ec1c949)
- firestore: expose pipeline ifNull expression helper (75342fe)
- firestore: expose pipeline switchOn expression helper (d02732d)
- firestore: expose pipeline timestampDiff and TimeUnit (c29da5a)
- firestore: expose pipeline timestampExtract and TimePart (6293748)
- firestore: migrate firestore to TurboModules (d58b063)
- firestore: support TransactionOptions maxAttempts in runTransaction (f692c70)
- in-app-messaging: migrate in-app-messaging to TurboModules (05d0497)
- installations: migrate installations to TurboModules (4097d25)
- messaging: migrate messaging to TurboModules (e56c7f4)
- ml: migrate ml to TurboModules (c13259a)
- perf: migrate perf to TurboModules (bbccdf2)
- phone-number-verification: migrate phone-number-verification to TurboModules (d7311c4)
- remote-config: migrate remote-config to TurboModules (1758b01)
- storage: migrate storage to TurboModules (691dcc1)
Bug Fixes
- add codegen verify and spec-native parity tests (49d9f1b)
- add ResultT codegen type alias (ff2d68f)
- app-check: guard missing initializeAppCheck options at runtime (a4b3407)
- app-check: validate provider name and error on unrecognized values (#9106) (9be83d9)
- app, android: handle possible null external storage directory (726493d)
- app, android: harden emitter attach/emit across generation overlap (5dfef91)
- app, android: run makeGooglePlayServicesAvailable on main thread (9675467)
- app, android: stop event emitter losing events to a stale ReactContext (01992f7), closes #1127 #8374
- auth, android: handle null id-tokens from google credential manager (d800caf)
- correct links in skill / single isBoolean import (cd77cc9)
- database: align public types with firebase-js-sdk declarations (7bc2d90)
- deps: remove unsupported semver cooldown keys from github-actions dependabot config (a5820ec), closes #9056
- emit messaging_notification_opened only for default notification action on iOS. (#8945) (2aec61f)
- firestore, android: align pipeline constant envelope routing with iOS (42f313d)
- firestore, android: align pipeline integerLiteral constant lowering with iOS (4c79daf)
- firestore, android: align pipeline operand coercion with iOS (55b3200)
- firestore, android: align pipeline stage option expression fields with iOS (ce213a4)
- firestore, android: align pipeline timestampTruncate arity validation with iOS (b7e60e1)
- firestore, android: apply arithmetic operand coercion review fixes (69f1b4a)
- firestore, android: firestore instance cache key mismatch (#9097) (a095bd0)
- firestore, android: remove dormant NodeBuilder lowering duplicates (efa84b9)
- firestore, ios: align pipeline stage coercion and operand tail lowering (a343407)
- firestore, ios: align pipeline stage option coercion with Android (7e189ff)
- firestore, ios: enable conditional pipeline on iOS SDK 12.15 (f148f6e)
- firestore, ios: enable round pipeline on iOS SDK 12.15 (99c2d35)
- firestore, ios: enable stringRepeat pipeline on iOS SDK 12.15 (0420f93)
- firestore, ios: enable switchOn pipeline on iOS SDK 12.15 (c035740)
- firestore, ios: enable trunc pipeline on iOS SDK 12.15 (79397f3)
- firestore: deep testing/refactoring pass (24b3b67)
- firestore: validate TransactionOptions maxAttempts (316e7d0)
- functions: correct httpsCallable timeout units on macOS/web (b231ad8)
- ios: private codegen headers and bridging-safe AppCheck module (266d7e1)
- ios: set IPHONEOS_DEPLOYMENT_TARGET to 15.0, update platform support docs/conditionals (#9108) (99d0899), closes #8882
- messaging, android: ignore non-message broadcasts in messaging receiver (#9105) (da17208), closes firebase-android-sdk#5410 #8040
- messaging, android: make max stored notifications configurable (#9111) (dc5771f), closes #8771
- messaging, ios: make APNs registration timeout independent of main queue (4cbb19c)
- messaging: willPresentNotification custom notification to work alongside default notification (#9094) (1bad118)
- remote-config, ios: ensure fetchActivate() match fetch() + activate() behavior (#9095) (3bbfecc)
- resolve CI lint and spec-native parity failures (6ff817e)
- storage, ios: preserve RN framework HEADER_SEARCH_PATHS in podspec (122ae3d)
- tooling: never Nx-cache-skip patch-package prepare (67f8adb)
- types: align compare-types modular API with firebase-js-sdk (5376e75)
Performance Improvements
- app: reduce TurboModule resolver overhead (d5b5c9a)