yarn @react-native-firebase/app 27.0.0
v27.0.0

2 hours ago

27.0.0 (2026-10-19)

⚠ BREAKING CHANGES

  • ios: drop CocoaPods Firebase matrix; SPM-only
  • app, sdk: bump Firebase Android 35, Apple 13, and JS 13
  • ml: remove discontinued @react-native-firebase/ml package
  • app, ios: RNFBSharedUtils.h, RCTConvert+FIRApp.h, and
    RCTConvert+FIROptions.h no longer import FirebaseCore; RNFBUtilsModule.h
    no longer imports Photos. Add the import at the call site if you need
    those types. See docs/migrating-to-v27.mdx.
  • app, ios: initializeApp now reads automaticDataCollectionEnabled as a
    boolean. Previously any non-nil value (including JS false) enabled collection
    via pointer cast; false, 0, null, and absent now disable it. See
    docs/migrating-to-v27.mdx.
  • ai: The Imagen API is removed from @react-native-firebase/ai.
    getImagenModel(), getTemplateImagenModel(), ImagenImageFormat, and the Imagen
    request and response types are gone. Generate images with Gemini image models
    through getGenerativeModel() instead, setting responseModalities and
    imageConfig on the generation config. See docs/migrating-to-v27.mdx for the
    full mapping of removed exports and before/after code.

Features

  • ai: remove Imagen API (c503c7f)
  • app, sdk: bump Firebase Android 35, Apple 13, and JS 13 (0ca03d1)
  • app, sdk: bump Firebase Android SDK to 34.19.0 (ca054bc)
  • app, sdk: bump Firebase iOS SDK to 12.19.0 (95dca6a)
  • app, sdk: bump Firebase JS SDK to 12.18.0 (5e2617d)
  • app, sdk: bump Firebase JS SDK to 12.19.0 (34d0318)
  • database: get() uses the native one-shot read on Android and web (65cf63c), closes firebase-ios-sdk#12168
  • messaging: add FID register and onRegistered (ca301b2)
  • messaging: add messaging_installation_id_enabled firebase.json opt-in (e9c9741)
  • ml: remove discontinued @react-native-firebase/ml package (58622b1)
  • test-expo: add Expo Router example with a route per package (#9313) (50a946a)

Bug Fixes

  • ai: avoid shell execution for fixture tags (87ae689)
  • ai: deprecate Gemini 3/4 unsupported GenerationConfig and Live sampling fields (68170d9)
  • analytics, messaging: dedupe GoogleUtilities classes under SPM dynamic frameworks (#9327) (b70ba88), closes #9322 #9322
  • app-check: drop the unused indent fallback (c147145)
  • app-check: install the provider factory before configure (f366a64)
  • app, android: bind nullable recent-task fields before use (bed8c71)
  • app, android: harden RecentTaskInfo null and JSON parse (908400b)
  • app, expo: match scene-based AppDelegate for Expo SDK 58 config plugin (dce165d)
  • app, ios: clarify SPM static linkage error when use_frameworks is absent (cdf99cd)
  • app, ios: import ObjC NullSentinelDecoder in SharedUtils (9a565c8)
  • app, ios: pin SPM Firebase SDK and retain Measurement ObjC categories (7e271af)
  • app, ios: read automaticDataCollectionEnabled as a boolean (cc18140)
  • app, ios: stop re-exporting FirebaseCore and Photos from App headers (0a5116f)
  • app, ios: tighten the dynamic Firebase probe and import guard (cac843c)
  • app, sdk: finish firebase-js-sdk 12.18.0 pin and Other HttpsError assertions (56cb41d)
  • app, storage: link Photos framework on tvOS (56f5c1f)
  • app, tests: ignore iOS host stubs in TurboModule spec parity lookup (e2f515d)
  • app,database: resolve platform native module when bundlers apply package exports (959d91f)
  • app: apply the same firebase.json injection fix to the test-rn-bare fixture (51c5269)
  • app: import e2e native module resolver via internal barrel (93f51ff)
  • app: reject unsafe deepSet path segments (ec3ac24)
  • app: restore vendor EventEmitter for RN macOS 0.78 (6b13c9d)
  • app: seed automaticDataCollectionEnabled from the native initializeApp result (5d187f9)
  • app: stop evaluating firebase.json content as Ruby/Python source in ios_config.sh (d333ab3)
  • app: support Expo 58 scene lifecycle (01f450f)
  • app: swizzle null sentinels after codegen converters load (bcff184)
  • attw: pack from allowlisted stage to avoid XCTest build walks (7c2e3ef)
  • auth, analytics, remote-config: unwrap iOS null sentinels on Object args (53fdb6a)
  • auth, android: accept null keys in auth cache registry get/take (211c6cf)
  • auth: apply the reCAPTCHA openURL fix on the UIScene life cycle (327fbe3)
  • auth: remove sensitive authentication logs (57c5d1c)
  • build: pin json gem to 2.x so CocoaPods still accepts quirks_mode (fa3f29d)
  • ci, ios: fail Expo launch smoke when xcodebuild settings fail (d4363aa)
  • ci, ios: key the iOS Pods cache by build mode (e6bc849)
  • ci, ios: poll Expo launch-smoke key-window instead of a fixed sleep (1372076)
  • ci: unblock Yarn hardened CI and Xcode 27 iOS archive (9c63630)
  • crashlytics, ios: resolve target-folder GoogleService-Info.plist for SPM dSYM upload (a2b7e57), closes #9304
  • database, android: settle keepSynced promise after SDK apply (61100f2)
  • database, android: surface onDisconnect errors; cover deny reject arms (1a4a4d6)
  • database: decode iOS null sentinels before writes (501bec8)
  • database: keep get() from cancelling any keepSynced at the location on Android (befb08c), closes firebase-android-sdk#8433
  • database: only fall back to once() for locations kept synced (6a7eddb)
  • database: skip once retry after observer-shaped get errors (6e18ddf)
  • docs: fail lint:spellcheck when frontmatter cannot be parsed (e15477f)
  • e2e: drop a stale functions build lock when its holder is gone (8f67c93)
  • e2e: skip watchman watch-del when a sibling Metro owns the root (7695132)
  • firestore, ios: cover transaction HostStub update-block paths and unskip waitForPendingWrites (fd9422b)
  • firestore: fail iOS transaction timeout without SDK retry (c91be82)
  • firestore: ignore leftover JS transaction work after id is finished (2a37b73)
  • firestore: reject leftover iOS transaction get as deadline-exceeded (c7e5836)
  • messaging, ios: guard AppDelegate window access for UIScene apps (79c2d72)
  • messaging, ios: hop notification permission APIs onto the main queue (3fde064)
  • messaging, ios: hop remaining UIApplication register APIs onto main queue (07e4562)
  • messaging, ios: normalize sent time (0b48006)
  • messaging, ios: port UIScene window guard after rebase (7cd8f14)
  • messaging, ios: read isRegisteredForRemoteNotifications on main queue in getConstants (87a30dc)
  • messaging, ios: serialize notification badges as strings (c6a8e85)
  • messaging, ios: validate sent-time format (7b39040)
  • messaging: detect the iOS APNs environment from the provisioning profile (56a4141)
  • messaging: nest iOS string sounds correctly (a34ce00)
  • messaging: pass sent message IDs to listeners (05bcd71)
  • messaging: read flattened isInstallationIdEnabled Turbo constant (7f65512)
  • messaging: rethrow onRegistered replay error and drop the subscription (56d071e)
  • perf, ios: avoid id cast shadowed by TurboModule id param (9556118)
  • perf, ios: typedef Swift protocol refs around TurboModule id shadowing (db9cc60)
  • perf, ios: use id casts for Swift protocols in ObjC++ (1d5c7ca)
  • tests, ios: keep the debug Hermes engine on debug builds (60d871e)
  • tests: exclude dist output from Jest coverage collection (97f72c1)

Continuous Integration

  • ios: drop CocoaPods Firebase matrix; SPM-only (89e270f)

Don't miss a new app release

NewReleases is sending notifications on new releases.