To review release notes for the Firebase console and for other Firebase platforms and related SDKs, refer to the Firebase Release Notes.
Version 11.4.2 - October 23, 2024
- CocoaPods-only release to fix iOS 12 build failure resulting from incomplete implementation in the FirebaseCoreInternal CocoaPod.
Version 11.4.1 - October 22, 2024
- CocoaPods-only release to revert breaking change in
FirebaseCoreExtension
SDK (#13942).
Version 11.4.0 - October 21, 2024
- Fixed an issue building documentation with some Firebase products (#13756).
Analytics
- Added support for Server-side Tag Manager.
- Fixed an issue with
setDefaultEventParameters
API not consistently applying default event parameters to automatic events such as first_open and session_start events. - Internal code cleanup and optimizations.
Authentication
- Restored Firebase 10 behavior by ignoring
nil
display names used during multi factor enrollment (#13856). - Fixed crash when enrolling account with time-based one-time password multifactor auth (#13880).
Crashlytics
- Updated
upload-symbols
to version 3.18 with support for uploading multiple DWARF contents in a dSYM bundle (#13543).
Cloud Firestore
- Prepared Firestore cache to support session token (#13648).
Performance Monitoring
- Fixed a crash related to thread sanitization on FPRNetworkTrace class (#13581).
Vertex AI in Firebase
- Vertex AI in Firebase is now Generally Available (GA) and can be
used in production apps (#13725).
Use the Vertex AI in Firebase library to call the Vertex AI Gemini API directly from your app. This client library is built specifically for use with Swift apps, offering security options against unauthorized clients as well as integrations with other Firebase services.
Note: Vertex AI in Firebase is currently only available in Swift Package Manager and CocoaPods. Stay tuned for the next release for the Zip and Carthage distributions.
- If you're new to this library, visit the getting started guide.
- If you used the preview version of the library, visit the migration guide to learn about some important updates.
- Breaking Change: The
HarmCategory
enum is no longer nested inside theSafetySetting
struct and theunspecified
case has been removed (#13686). - Breaking Change: The
BlockThreshold
enum inSafetySetting
has been renamed toHarmBlockThreshold
(#13696). - Breaking Change: The
unspecified
case has been removed from theFinishReason
,BlockReason
andHarmProbability
enums; this scenario is now handled by the existingunknown
case (#13699). - Breaking Change: The property
citationSources
ofCitationMetadata
has been renamed tocitations
(#13702). - Breaking Change: The initializer for
Schema
is now internal; use the new type methodsSchema.string(...)
,Schema.object(...)
, etc., instead (#13852). - Breaking Change: The initializer for
FunctionDeclaration
now accepts an array of optional parameters instead of a list of required parameters; if a parameter is not listed as optional it is assumed to be required (#13616). - Breaking Change:
CountTokensResponse.totalBillableCharacters
is now optional (Int?
); it may benull
in cases such as when aGenerateContentRequest
contains only images or other non-text content (#13721). - Breaking Change: The
ImageConversionError
enum is no longer public; image conversion errors are still reported asGenerateContentError.promptImageContentError
(#13735). - Breaking Change: The
CountTokensError
enum has been removed; errors occurring inGenerativeModel.countTokens(...)
are now thrown directly instead of being wrapped in aCountTokensError.internalError
(#13736). - Breaking Change: The enum
ModelContent.Part
has been replaced with a protocol namedPart
to avoid future breaking changes with new part types. The new typesTextPart
andFunctionCallPart
may be received when generating content; additionally the typesInlineDataPart
,FileDataPart
andFunctionResponsePart
may be provided as input (#13767). - Breaking Change: All initializers for
ModelContent
now require the labelparts:
(#13832). - Breaking Change:
HarmCategory
,HarmProbability
, andFinishReason
are now structs instead of enums types and theunknown
cases have been removed; in aswitch
statement, use thedefault:
case to cover unknown or unhandled values (#13728, #13854, #13860). - Breaking Change: The
Tool
initializer is now internal; use the new type methodfunctionDeclarations(_:)
to create aTool
for function calling (#13873). - Breaking Change: The
FunctionCallingConfig
initializer andMode
enum are now internal; use one of the new type methodsauto()
,any(allowedFunctionNames:)
, ornone()
to create a config (#13873). - Breaking Change: The
CandidateResponse
type is now namedCandidate
. (#13897) - Breaking Change: The minimum deployment target for the SDK is now macOS 12.0; all other platform minimums remain the same at iOS 15.0, macCatalyst 15.0, tvOS 15.0, and watchOS 8.0 (#13903).
- Breaking Change: All of the public properties of
GenerationConfig
are nowinternal
; they all remain configurable in the initializer (#13904). - The default request timeout is now 180 seconds instead of the
platform-default value of 60 seconds for a
URLRequest
; this timeout may still be customized inRequestOptions
(#13722). - The response from
GenerativeModel.countTokens(...)
now includessystemInstruction
,tools
andgenerationConfig
in thetotalTokens
andtotalBillableCharacters
counts, where applicable (#13813). - Added a new
HarmCategory
.civicIntegrity
for filtering content that may be used to harm civic integrity. (#13728) - Added
probabilityScore
,severity
andseverityScore
inSafetyRating
to provide more fine-grained detail on blocked responses (#13875). - Added a new
HarmBlockThreshold
.off
, which turns off the safety filter (#13863). - Added an optional
HarmBlockMethod
parametermethod
inSafetySetting
that configures whether responses are blocked based on theprobability
and/orseverity
of content being in aHarmCategory
(#13876). - Added new
FinishReason
values.blocklist
,.prohibitedContent
,.spii
and.malformedFunctionCall
that may be reported (#13860). - Added new
BlockReason
values.blocklist
and.prohibitedContent
that may be reported when a prompt is blocked (#13861). - Added the
PromptFeedback
propertyblockReasonMessage
that may be provided alongside theblockReason
(#13891). - Added an optional
publicationDate
property that may be provided inCitation
(#13893). - Added
presencePenalty
andfrequencyPenalty
parameters toGenerationConfig
(#13899).
Version 11.3.0 - September 30, 2024
Analytics
- Fixed an issue with the Crashlytics integration that prevented automatic screen_view events from being sent as breadcrumb logs.
- Internal code cleanup and optimizations.
Authentication
- Restore Firebase 10 behavior by querying with the
kSecAttrSynchronizable
key when auth state is set to be shared across devices (#13584). - Prevent a bad memory access crash by using non-ObjC Swift types in the SDK's networking layer, and moving synchronous work off of the shared Swift concurrency queue (#13650).
- Restore Firebase 10 behavior by forwarding errors from interrupted reCAPTCHA or OIDC login flows (#13645).
Data Connect
- Initial public preview release of the SDK. For more information see the Firebase Data Connect documentation.
Cloud Firestore
- Improve efficiency of memory persistence when processing a large number of writes (#13572).
Version 11.2.0 - September 10, 2024
Authentication
- Fixed crashes that could occur in Swift continuation blocks running in the Xcode 16 betas (#13480).
- Fixed Phone Auth using Sandbox APNS tokens that broke in 11.0.0 (#13479).
- Fixed crash when fetching sign in methods due to unexpected nil.
Previously, fetching sign in methods could return both a
nil
array of sign in methods and anil
error. In such cases, an empty array is instead returned with thenil
error (#13550). - Fixed user session persistence in multi tenant projects. Introduced in 11.0.0 (#13565).
- Fixed encoding crash that occurs when using TOTP multi-factor authentication. Note that this fix isn't in the 11.2.0 zip and Carthage distributions, but will be included from 11.3.0 onwards (#13591).
Realtime Database
- Fix temporary disconnects when the app goes inactive. The issue was introduced in 10.27.0 (#13529).
Cloud Firestore
- Marked all public classes with only readonly properties as
Sendable
to address Swift Concurrency Check warning (#12666).
Vertex AI in Firebase
- Resolved a decoding error for citations without a
uri
and added support for decodingtitle
fields, which were previously ignored (#13518). - Breaking Change: The methods for starting streaming requests
(
generateContentStream
andsendMessageStream
) are now throwing and asynchronous and must be called withtry await
(#13545, #13573). - Breaking Change: Creating a chat instance (
startChat
) is now asynchronous and must be called withawait
(#13545). - Breaking Change: The source image in the
ImageConversionError.couldNotConvertToJPEG
error case is now an enum value instead of theAny
type (#13575). - Added support for specifying a JSON
responseSchema
inGenerationConfig
; see control generated output for more details (#13576).
Version 11.1.0 - August 19, 2024
Analytics
- Fixed an issue related to the enforcement of event parameter value character limits during an app's first open.
- Internal code cleanup and optimizations.
Authentication
- Fixed
Swift.error
conformance forAuthErrorCode
(#13430). - Added custom provider support to
AuthProviderID
. Note that this change will be breaking to any code that implemented an exhaustiveswitch
onAuthProviderID
in 11.0.0 - theswitch
will need expansion (#13429). - Fix crash introduced in 11.0.0 in phone authentication flow from
implicitly unwrapping
nil
error after a token timeout (#13470). - Objective-C only:
[OAuthProvider getCredentialWithUIDelegate]
was not calling its completion handler in the main thread. Regressed in 11.0.0. The fix is only for CocoaPods and Swift Package Manager. The zip and Carthage fix will roll out in 11.2.0 (firebase/FirebaseUI-iOS#1199).
Cloud Firestore
- Add
VectorValue
type support.
Cloud Storage
- Fix a potential data race in Storage initialization (#13369).
Version 11.0.0 - July 30, 2024
- Breaking change: Firebase's minimum supported versions have
updated for the following platforms:
Platform Firebase 11 iOS 13.0 tvOS 13.0 macOS 10.15 watchOS 7.0 - FirebaseAnalytics and FirebaseCrashlytics also continue to support iOS 12.0.
- Breaking change: The deprecated Swift extension SDKs for Analytics, Firestore, Database, Remote Config and In App Messaging have been removed. See our migration guide.
- Update underlying FIRLogger implementation from
asl
toos_log
. - Remove
FIRLoggerForceSTDERR
configuration option. - Move
Timestamp
class intoFirebaseCore
.FirebaseFirestore.Timestamp
was changed toFirebaseCore.Timestamp
(#13221).
Analytics
- Breaking change: The deprecated
FirebaseAnalyticsSwift
module has been removed. See our migration guide. - Internal code cleanup and optimizations.
Authentication
- Fixed auth domain matching code to prioritize matching
firebaseapp.com
overweb.app
even if the server returns theweb.app
domain listed first (#7992). - Introduced the Swift enum
AuthProviderID
for the Auth Provider IDs (#9236). - Swift APIs using
String
-typedproductID
s have been deprecated in favor of newly added API that leverages theAuthProviderID
enum. - Breaking change: The
email
property inActionCodeInfo
is now non-optional.
Realtime Database
- Breaking change: The deprecated
FirebaseDatabaseSwift
module has been removed. See our migration guide. - Socket Rocket has been removed from the implementation. There should be no impact on functionality (#13100).
Cloud Firestore
- Breaking change: The deprecated
FirebaseFirestoreSwift
module has been removed. See our migration guide. - Breaking change: LRU Garbage Collector is now the default GC for memory cache, eager GC is now
opt-in (via
MemoryCacheSettings(garbageCollectorSettings: MemoryEagerGCSettings())
) instead of the default one. - Move
Timestamp
class intoFirebaseCore
.FirebaseFirestore.Timestamp
was changed toFirebaseCore.Timestamp
(#13221). - Update gRPC dependency to 1.65.
Firebase In-App Messaging
- Breaking change: The deprecated
FirebaseInAppMessagingSwift
module has been removed. See our migration guide. - Breaking Change: The following Swift API have been renamed:
FIRInAppMessagingDismissType
→InAppMessagingDismissType
FIRInAppMessagingDisplayMessageType
→InAppMessagingDisplayMessageType
FIRInAppMessagingDisplayTriggerType
→InAppMessagingDisplayTriggerType
FIAMDisplayRenderErrorType
→InAppMessagingDisplayRenderError
Note thatInAppMessagingDisplayRenderError
is now a native Swift error and can be directly caught (instead of catching anNSError
and checking the error code).
FCM
- Completed Messaging's transition to NSSecureCoding (#12343).
Remote Config
-
RemoteConfigValue.stringValue
is nownonnull
. This may break some builds (#10870). - Breaking change: The deprecated
FirebaseRemoteConfigSwift
module has been removed. See our migration guide.
Cloud Storage
- Updated error handling to support both Swift error enum handling and NSError error handling. Some of the Swift enums have additional parameters which may be a breaking change. There are additional NSError's for completeness, but nothing related to NSError handling is breaking. (#13071, #10889, #13114)
Version 10.29.0 - July 8, 2024
FCM
- Renamed "initWithFileName" internal method that was causing submission issues for some users (#13134).
- Fixed the APS Environment key on visionOS (#13173).
Vertex AI in Firebase
- Added community support for watchOS (#13215).
Version 10.28.1 - June 24, 2024
Crashlytics
Version 10.28.0 - June 17, 2024
Analytics
- Added a new default consent state ("eu_consent_policy") for
ad_user_data
andad_personalization
consent types.
Crashlytics
- Created a new queue for rollouts persistence writes and made sure rollouts logging queue is not nil while dispatching (#12913).
Performance Monitoring
- Fix Crash from InstrumentUploadTaskWithStreamedRequest (#12983).
- Replace SystemConfiguration with a more recent network monitoring API by Apple (#13079).
Vertex AI in Firebase
- Removed uses of the
gemini-1.5-flash-preview-0514
model in docs and samples. Developers should now use the auto-updated versions,gemini-1.5-pro
orgemini-1.5-flash
, or a specific stable version; see available model names for more details (#13099). - Added community support for tvOS and visionOS (#13090, #13092).
Version 10.27.0 - May 29, 2024
App Check
- CocoaPods: missing symbol error for
FIRGetLoggerLevel
(#12899).
Analytics
- Fixed an issue that prevented manually-logged ad impression events from activating Firebase A/B Testing experiments.
- Internal code cleanup.
Crashlytics
- Added support for catching the SIGTERM signal (#12881).
- Fixed a thread blocking when persisting Remote Config Rollouts to disk (#12913).
Realtime Database
- Update internal socket implementation to use
NSURLSessionWebSocket
where available (#12883).
Dynamic Links
- Added deprecation warning in advance of August 25, 2025 Dynamic Links service shutdown (#12995).
Firebase In-App Messaging
- Fixed crash at app start that affected CocoaPods users using static frameworks (#12882).
FCM
- Fixed bug preventing Messaging from working with a custom sqlite3 dependency (#12900).
Vertex AI in Firebase
- Removed uses of the
gemini-1.5-pro-preview-0409
model in docs and samples. Developers should now usegemini-1.5-pro-preview-0514
orgemini-1.5-flash-preview-0514
; see available model names for more details (#12979). - Logged additional details when required APIs for Vertex AI are not enabled or response payloads when requests fail (#13007, #13009).
Version 10.26.0 - May 13, 2024
This release is available via Swift Package Manager only.
Firebase In-App Messaging
- Fixed crash at app start that affected SwiftPM users (#12882).
Vertex AI in Firebase
- Initial release of the Vertex AI in Firebase SDK (public preview). Learn how to get started with the SDK in your app.
Version 10.25.0 - April 30, 2024
- Firebase now requires at least Xcode 15.2. See Apple's website for more info.
- [Zip Distribution] Update zip integration instructions with tips for preserving symlinks and protecting code signatures.
Analytics
- Fixed an issue that prevented created or modified events from activating Firebase A/B Testing experiments.
- Internal code cleanup.
App Check
- Removed usages of user defaults API to eliminate required reason impact.
Crashlytics
- Removed usages of user defaults API from internal Firebase Sessions dependency to eliminate required reason impact.
Realtime Database
- Removed usages of user defaults API to eliminate required reason impact.
Cloud Firestore
- Allow blob of data with zero length (#11773, #12620).
- Passing a non-nil value to the
@DocumentID
property wrapper's setter no longer logs a warning since it discouraged valid patterns, e.g., updating the document ID after the document is created in Firestore (#12756).
Firebase In-App Messaging
- Removed usages of user defaults API to eliminate required reason impact.
- When installing In App Messaging via the zip distribution, its UI resource bundle is now embedded within the In App Messaging framework. Choose Embed & Sign when integrating the framework. See the zip distribution's README.md for more instructions.
Performance Monitoring
- Removed usages of user defaults API to eliminate required reason impact.
Remote Config
- Fixed bug preventing Remote Config from working with a custom sqlite3 dependency (#10884).
Version 10.24.0 - April 9, 2024
- Fixed validation issue for macOS and macCatalyst XCFrameworks related to framework directory structure (#12587).
- Extend community watchOS support to zip and Carthage distributions. See our platform documentation for more details for the Firebase products included (#8731).
- Added code signatures to all of Firebase's binary artifacts (#12238).
Analytics
- Internal code cleanup.
Crashlytics
- Fixed
'FirebaseCrashlytics/FirebaseCrashlytics-Swift.h' file not found
errors (#12611). - Removed usages of
mach_absolute_time
to reduce required reason impact.
Cloud Firestore
- Enabled queries with range & inequality filters on multiple fields (#12416).
Cloud Storage
-
putFile
andputFileAsync
now work in app extensions. A background session configuration is not used when uploading from an app extension (#12579).
Version 10.23.1 - March 28, 2024
- [Swift Package Manager / CocoaPods] Fixed the macOS/Catalyst xcframework structure issue in Firebase Analytics blocking submission via Xcode 15.3.
Analytics
- Fixed crash in
NSString(Bit) isBitEnabledAtIndex
(#12614). - Fixed missing symbols in
GoogleAppMeasurementOnDeviceConversion
(regression introduced by 10.22.1).
Version 10.23.0 - March 19, 2024
- Fixed an app validation issue for macOS and macCatalyst XCFrameworks (#12505).
Analytics
- Integrated parsing of Transparency & Consent Framework (TCF) data to retrieve user consent preferences.
- Changes to analytics_storage and ad_storage in consent mode no longer trigger analytics to reset. To clear analytics data and reset the app instance ID, use resetAnalyticsData().
- Internal code cleanup.
Crashlytics
- Updated upload-symbols to 13.7 with Vision Pro build phase support (#12306).
- Added support for Crashlytics to report metadata about Remote Config keys and values.
Cloud Firestore
- Enable snapshot listener option to retrieve data from local cache only (#12370).
- Update gRPC dependency to 1.62.* (#12098, #12021).
- Firestore's binary Swift Package Manager distribution now uses XCFrameworks with code signatures (#12238).
FCM
- CocoaPods only: Fixed "no rule" warning when running
pod install
(#12511).
Remote Config
- Added support for other Firebase products to integrate with Remote Config.
Version 10.22.1 - March 7, 2024
- Swift Package Manager and CocoaPods only: Fixed app validation issues on Xcode 15.3
for those using the
FirebaseAnalyticsOnDeviceConversion
SDK. This issue was caused by embedding an incompleteInfo.plist
from a dependency of the SDK (#12441).
Version 10.22.0 - March 4, 2024
- Added privacy manifests for Firebase SDKs named in https://developer.apple.com/support/third-party-SDK-requirements/. Review https://firebase.google.com/docs/ios/app-store-data-collection for updated guidance on interpreting Firebase's privacy manifests and completing app Privacy Nutrition Labels (#11490).
- Revert Firebase 10.20.0 change that removed
Info.plist
files from static xcframeworks (#12390). - Fixed validation issues in Xcode 15.3 that affected binary distributions including Analytics, Firestore (SwiftPM binary distribution), and the Firebase zip distribution (#12441).
Swift Package Manager
- Firebase now enforces a Swift 5.7.1 minimum version, which is aligned with the Xcode 14.1 minimum (#12350).
Zip Distribution
- The manual integration instructions found in the
Firebase.zip
have been updated for Xcode 15 users. The updated instructions call for embedding SDKs dragged in from theFirebase.zip
. This will enable Xcode's tooling to detect privacy manifests bundled within the xcframework. - Several xcframeworks have been renamed to resolve the Xcode 15.3 validation
issues. Ensure that the following renamed
xcframeworks are removed from your project when upgrading (#12437, #12447):
abseil.xcframework
toabsl.xcframework
BoringSSL-GRPC.xcframework
toopenssl_grpc.xcframework
gRPC-Core.xcframework
togrpc.xcframework
gRPC-C++.xcframework
togrpcpp.xcframework
leveldb-library.xcframework
toleveldb.xcframework
PromisesSwift.xcframework
toPromises.xcframework
Analytics
- Added on-device conversion measurement support for hashed email
address or hashed phone numbers with
initiateOnDeviceConversionMeasurement(hashedEmailAddress:)
andinitiateOnDeviceConversionMeasurement(hashedPhoneNumber:)
API, respectively. - Fixed a memory leak (#11071).
Crashlytics
- Crashlytics now forces validation or rotation of FIDs for FirebaseSessions.
- Removed calls to
statfs
in the Crashlytics SDK to comply with Apple Privacy Manifests. This change removes support for collecting Disk Space Free in Crashlytics reports. - Fixed FirebaseSessions crash on startup that occurs in release mode in Xcode 15.3 and other build configurations (#11403).
Cloud Firestore
- Fixed flaky offline behavior when using
arrayRemove
onMap
objects (#12378).
Firebase In-App Messaging
- Fixed an
objc_retain
crash (#12393).
Version 10.21.0 - February 6, 2024
Firebase now requires at least CocoaPods version 1.12.0 to enable privacy manifest support.
Analytics
- Internal code cleanup.
Authentication
- Fixed multifactor resolver to use the correct Auth instance instead of always using the default (#12265).
Cloud Firestore
- Added an error when trying to build Firestore's binary SPM distribution for visionOS (#12279). See Firestore's 10.12.0 release note for a supported workaround.
Version 10.20.0 - January 16, 2024
The following change only applies to those using a binary distribution of
a Firebase SDK(s): In preparation for supporting Privacy Manifests, each
platform framework directory within a static xcframework no longer contains
an Info.plist
file (#12243).
Analytics
- Increased parameter value character limit for Google Analytics 360 properties.
- Updated module map of
GoogleAppMeasurementOnDeviceConversion
.
FCM
- Fixed a 10.19.0 regression where the FCM registration token was nil at first app start after update from 10.19.0 or earlier (#12245).
Version 10.19.1 - December 13, 2023
This release is available via Swift Package Manager only. Changes in this version of Firebase will be available in future releases across all distribution channels.
App Check
- Fixed a bug in apps using both AppCheck and ARCore where AppCheck unnecessarily tried to create tokens for the ARCore SDK, resulting in noisy logs containing harmless attestation errors.
Version 10.19.0 - December 5, 2023
Authentication
- Deprecate
updateEmail(to email: String)
andfetchSignInMethods(forEmail email: String)
(#12081).
Cloud Firestore
- Made an optimization to the synchronization logic for resumed queries to only re-download locally-cached documents that are known to be out-of-sync. (#12044).
FCM
- Adopt NSSecureCoding for internal classes (#12075).
Version 10.18.0 - November 14, 2023
App Check
- Extracted core
FirebaseAppCheck
functionality into a newAppCheckCore
dependency. (#12067)
Authentication
- Fix a bug where anonymous account can't be linked with email password credential (#11911).
Cloud Firestore
- Fix Firestore build for visionOS on Xcode 15.1 (#12023).
Performance Monitoring
- Fix an Xcode 15.1 build warning (#12027).
Version 10.17.0 - October 30, 2023
Analytics
- Updated the consent management API to include new consent signals.
- Added support for StoreKit 2.
- The
FirebaseAnalytics
module now contains Analytics's Swift-only APIs that were previously only available via theFirebaseAnalyticsSwift
extension SDK. See theFirebaseAnalyticsSwift
release note from this release for more details.
Swift Extensions
- All of the public API from
FirebaseAnalyticsSwift
can now be accessed through theFirebaseAnalytics
module. Therefore,FirebaseAnalyticsSwift
has been deprecated, and will be removed in a future release. See the migration guide for migration instructions.
App Check
- Added invalid key error handling in App Attest key attestation. (#11986)
- Replaced semantic imports (
@import FirebaseAppCheckInterop
) with umbrella header imports (#import <FirebaseAppCheckInterop/FirebaseAppCheckInterop.h>
) for ObjC++ compatibility (#11916).
Realtime Database
- The
FirebaseDatabase
module now contains Firebase Database's Swift-only APIs that were previously only available via theFirebaseDatabaseSwift
extension SDK. See theFirebaseDatabaseSwift
release note from this release for more details.
Swift Extensions
- All of the public API from
FirebaseDatabaseSwift
can now be accessed through theFirebaseDatabase
module. Therefore,FirebaseDatabaseSwift
has been deprecated, and will be removed in a future release. See the migration guide for migration instructions.
Cloud Firestore
- Add support for sum and average aggregate queries.
- The
FirebaseFirestore
module now contains Firebase Firestore's Swift-only APIs that were previously only available via theFirebaseFirestoreSwift
extension SDK. See theFirebaseFirestoreSwift
release note from this release for more details.
Swift Extensions
- All of the public API from
FirebaseFirestoreSwift
can now be accessed through theFirebaseFirestore
module. Therefore,FirebaseFirestoreSwift
has been deprecated, and will be removed in a future release. See the migration guide for migration instructions.
Firebase In-App Messaging
- The
FirebaseInAppMessaging
module now contains Firebase In-App Messaging's Swift-only APIs that were previously only available via theFirebaseInAppMessagingSwift
extension SDK. See theFirebaseInAppMessagingSwift
release note from this release for more details.
Swift Extensions
- All of the public API from
FirebaseInAppMessagingSwift
can now be accessed through theFirebaseInAppMessaging
module. Therefore,FirebaseInAppMessagingSwift
has been deprecated, and will be removed in a future release. See the migration guide for migration instructions.
Performance Monitoring
- Fix a second Xcode 15 runtime warning (#11821).
Remote Config
- The
FirebaseRemoteConfig
module now contains Firebase Remote Config's Swift-only APIs that were previously only available via theFirebaseRemoteConfigSwift
extension SDK. See theFirebaseRemoteConfigSwift
release note from this release for more details.
Swift Extensions
- All of the public API from
FirebaseRemoteConfigSwift
can now be accessed through theFirebaseRemoteConfig
module. Therefore,FirebaseRemoteConfigSwift
has been deprecated, and will be removed in a future release. See the migration guide for migration instructions.
Version 10.16.0 - October 3, 2023
A/B Testing
- Fix crash caused by empty experiment payload (#11873).
Analytics
- Fixed crash in
FIRAnalyticsConnector
(#11761). - Disabled Search Ad reporter on simulator to prevent potential unresponsiveness when calling
AAAttribution.attributionToken()
(#11770).
Authentication
- Added custom auth domain support in recaptcha v2 authentication flows (#7553).
Crashlytics
- Fixed a memory leak regression when generating session events (#11725).
Cloud Firestore
- Fixed an issue where Firestore's binary SwiftPM distribution would not link properly when building a target for testing. This issue affected Xcode 15 Beta 5 and later (#11656).
- Downgrade the CocoaPods grpc dependency back to 1.44.0 (from 1.50.1) to fix a crash on iOS 12 devices that was introduced in the Firebase Apple SDK 10.10.0 when the grpc dependency was upgraded (#11509).
Performance Monitoring
- Fixed a memory leak regression when generating session events (#11725).
- Fix Xcode 15 runtime warning (#11821).
Version 10.15.0 - September 12, 2023
Cloud Firestore
- Add the option to allow the SDK to create cache indexes automatically to improve query execution locally (#11596).
Version 10.14.0 - August 22, 2023
For developers building for visionOS, Xcode 15 beta 6 or later is required.
A/B Testing
- Fix crash caused by mutating array during iteration (#11669).
Authentication
- Added reCAPTCHA verification support in email authentication flows (#11231).
Version 10.13.0 - August 1, 2023
For developers building for visionOS, Xcode 15 beta 5 or later is required.
Analytics
- Added on-device conversion measurement support for phone numbers with
initiateOnDeviceConversionMeasurement(phoneNumber:)
API. - Fixed hang if
initiateOnDeviceConversionMeasurement(emailAddress:)
API was called beforeFirebaseApp.configure()
. - Fixed heap buffer overflow error (#11421).
Authentication
- Fixed a compilation error regression introduced in 10.12.0 building iOS App Extensions (#11537).
Firebase In-App Messaging
- Fixed the Firebase tvOS podspec dependency for In App Messaging not working (#11569).
Version 10.12.0 - July 11, 2023
For developers building for visionOS, using products that use the Keychain (e.g. FirebaseAuth) may fail to access the keychain on the visionOS simulator. To work around this, add the Keychain Sharing capability to the visionOS target and explicitly add a keychain group (e.g. the bundle ID).
Firebase's Swift Package Manager distribution does not support Xcode 15 Beta 1. Please use Xcode 15 Beta 2 or later.
Authentication
- Added support to Firebase Auth to enroll and sign in a user with TOTP second factor (#11261).
Analytics
- Added support for SKAdNetwork Conversion Value setting.
- Added support for SHA-256 hashes to ensure that the on-device receipt validation is compatible with upcoming App Store receipt signing certificate changes (TN3138).
Crashlytics
- Updated
upload-symbols
to version 3.16 with support for new default build settings in Xcode 15 (#11463). - Re-enabled dSYM uploads for Flutter apps building with
--obfuscate
and updated instructions for de-obfuscating Dart stacktraces. -
upload-symbols
/run
now support apps withUser Script Sandboxing
set toYES
when all input files are present in the build phase. Please see the pull request for the full list of input files (#11463). -
upload-symbols
/run
no longer read from the app's Info.plist and support apps withGenerate Info.plist File
set toNO
(#11463). - Added a
CrashlyticsInputFiles.xcfilelist
. Instead of using "Input Files", developers can specify the path to this file in the Build Phase's "Input File Lists" section of your Crashlyticsrun
/upload-symbols
script to keep it up to date (#11428).
Cloud Firestore
- Implemented an optimization in the local cache synchronization logic that reduces the number of billed document reads when documents were deleted on the server while the client was not actively listening to the query (e.g. while the client was offline) (#11457).
- Developers using Firestore on visionOS must use a source
Firestore distribution rather than the default binary distribution. To do
this, quit Xcode and open the desired project from the command line
with the
FIREBASE_SOURCE_FIRESTORE
environment variable.open --env FIREBASE_SOURCE_FIRESTORE /path/to/project.xcodeproj
To go back to using the binary distribution of Firestore, quit Xcode and open Xcode like normal, without the environment variable (#11492).
Swift Extensions
- Added support for animations on the
@FirestoreQuery
property wrapper.
FCM
- Messaging now removes scoped tokens set by old FIAM SDK(s) from keychain if they exist.
Performance Monitoring
- Make Firebase Performance Monitoring compatible with Xcode 15.
- Removed the capability to access carrier information of the device since that API is deprecated by Apple.
Remote Config
- Fixed issue of real-time listeners not being properly removed (#11458).
- Fixed real-time fetches not being able to fetch the latest template due to an in-progress fetch (#11465).
- Internal improvements to support Remote Config real-time updates (#11485).
Version 10.11.0 - June 13, 2023
- Improved error reporting for misnamed configuration plist files (#11317).
A/B Testing
- Fix crash caused by mutating array during iteration (#11378).
Analytics
- Fixed missing screen parameters on session_start events triggered at app launch.
- Fixed limit of audience definitions during first open.
Crashlytics
- Fixed a threading-related hang during initialization in urgent mode (#11216).
Cloud Firestore
- Exposed MultiDb API for public preview (#10465).
- Fixed a compilation warning related to integer casting (#11332).
- Firestore now allows initializing
LocalCacheSettings
with unlimited size (#11405).
Firebase In-App Messaging
- In-App Messaging now correctly removes scoped tokens set by old SDK versions from keychain.
Performance Monitoring
- Fixed a bug to disable data collection if the data collection was disabled before Firebase application was configured.
Cloud Storage
- Add progress tracking capability for
putDataAsync
,putFileAsync
, andwriteAsync
(#10574).
Version 10.10.0 - May 23, 2023
- Firebase now requires at least Xcode 14.1.
Analytics
- Fixed implicit type conversion of integer or numeric string parameters to double when modifying or creating events from the Google Analytics interface.
- Internal code cleanup.
Crashlytics
- Removed references to deprecated CTCarrier API in FirebaseSessions (#11144).
- Fix Xcode 14.3 Analyzer issue (#11228).
Cloud Functions
- Fixed potential memory leak of Functions instances (#11248).
- Callable functions can now opt in to using limited-use App Check tokens (#11270).
Firebase In-App Messaging
- Fixed a crash on in-app message presentation when a CarPlay scene is active (#9376).
Cloud Storage
- Fixed potential memory leak of Storage instances (#11248).
Version 10.9.0 - April 25, 2023
Analytics
- Internal code cleanup.
App Check
- Added
limitedUseToken(completion:)
for obtaining limited-use tokens for protecting non-Firebase backends (#11086).
Crashlytics
- Updated upload-symbols to 3.15. Disabled dSYM uploads for Flutter apps building with --obfuscate and added instructions for uploading through the Crashlytics dashboard (#11136).
- Fixed a memory leak when generating session events (#11027).
Cloud Firestore
- Add new cache config API to customize SDK cache settings.
- Add LRU garbage collector as an option to memory cache.
Swift Extensions
- The async
CollectionReference.addDocument(data:)
API now returns a discardable result (#10640).
Performance Monitoring
- Fixed a memory leak when generating session events (#11027).
Version 10.8.1 - April 13, 2023
This release is available via Swift Package Manager only.
Cloud Firestore
- Fixed an issue where Firestore was incorrectly unavailable on Mac Catalyst via Swift Package Manager (#11119).
Version 10.8.0 - April 11, 2023
- Fixed new build warnings introduced by Xcode 14.3 (#11059).
- The Firebase Swift package now requires the Swift 5.6 toolchain (Xcode 13.3) to build.
Analytics
- Updated a warning message to a debug message (#10940).
- Internal code cleanup.
Authentication
- Added Firebase App Check support to Firebase Auth (#11056).
- Added sign-in with Apple token revocation support (#9906).
Cloud Firestore
Change Firestore's Swift Package Manager distribution from source to binary to reduce the time it takes to add the Firebase package and to build the Firestore SDK (#6564).
Fixed SSL symbol collision issue affecting SwiftPM users (#6869).
Version 10.7.0 - March 21, 2023
Authentication
- Added an API for developers to pass the
fullName
from the Sign in with Apple credential to Firebase (#10068).
Crashlytics
- Updated
upload-symbols
to 3.14 with an improvement to upload all dSYM files for Flutter apps.
Cloud Firestore
- Added support for disjunctions in queries (
OR
queries). - Fixed stack overflow caused by deeply nested server timestamps.
Remote Config
- Added support for real-time config updates. Use the new
addOnConfigUpdateListener
API to get real-time updates. Existingfetch
andactivate
APIs aren't affected by this change. To learn more, see Get started with Firebase Remote Config.
Cloud Storage
- When applicable, Storage now provides underlying server errors via
NSUnderlyingErrorKey
.
Version 10.6.0 - February 28, 2023
Analytics
- Added support for logging item-scoped custom parameters on ecommerce events.
- Added Salesforce user id measurement to improve Google Analytics 4's integration with Salesforce Marketing Cloud.
- Added support for Apple AdServices to measure Apple Search Ads campaign when the framework is integrated (#7860).
- Removed deprecated Apple iAd integration.
App Distribution
- Fixed bug where testers were sent to the wrong URL when signing in (#10772).
Authentication
- Fixed a bug where user is created in a specific tenant although tenantID was not specified (#10748).
- Fixed a bug where the resolver exposed in MFA is not associated to the correct app (#10690).
Crashlytics
- Integrated with Firebase sessions library to enable upcoming features related to session-based crash metrics. If your app uses the Crashlytics SDK, review Firebase's data disclosure page to make sure that your app's privacy details in the App Store are accurate and complete.
Cloud Firestore
- Fix a potential high memory usage issue.
FCM
- The configure flow now validates existence of an APNs token before fetching an FCM token (#10742). This also addresses the scenario mentioned in the issue comment.
Performance Monitoring
- Integrated with Firebase sessions library and replaced the session information associated with performance metrics with session details provided by the Firebase sessions library. If your app uses the Performance Monitoring SDK, review Firebase's data disclosure page to make sure that your app's privacy details in the App Store are accurate and complete.
- Changed definition of sessions, as Performance Monitoring now depends on the new Firebase sessions library.
Version 10.5.0 - February 7, 2023
Authentication
- Use team player ID, game player ID and
fetchItems
for signature verification (#10441). - Prevent keychain pop-up when accessing Firebase Auth keychain in a Mac app. Note that using Auth in a Mac app requires that the app is signed with a provisioning profile that has the Keychain Sharing capability enabled (see Firebase 9.6.0 release notes) (#10582).
Cloud Firestore
- Added
@discardableResult
to theaddDocument
API for easy handling of unused return values (#10640).
FCM
- Fixed a crash for
strongSelf
dereference (#10707).
Cloud Storage
- Added Storage API to limit upload chunk size (#10137).
- Run
pod update
orFile -> Packages -> Update to latest Packages
to update theGTMSessionFetcher
dependency to at least version 3.1.0. This fixes an issue where it infinitely retries when FirebaseStorage returns a 500 response.
Version 10.4.0 - January 17, 2023
- Deprecate
androidClientID
andtrackingID
from FirebaseOptions (#10520).
Analytics
- Fixed crash in scheduleSynchronizeToDisk (#10495).
- Fixed printing of the
items
array parameter in the console logs while in debug mode.
Authentication
- Fix secure coding bugs in MFA (#10632).
- Added handling of error returned from a blocking cloud function (#10628).
Crashlytics
- Updated Crashlytics to include the Firebase Installation ID for consistency with other products. For apps that didn't previously account for the Firebase installations SDK in their data disclosure, review the data disclosure documentation. (#10645).
Cloud Firestore
- Fix an issue that stops some performance optimization from being applied (#10579).
FCM
- On app startup, an APNs Token must be provided to FCM SDK before retrieving an FCM Token, otherwise an error will be returned as part of the completion.
Version 10.3.0 - December 5, 2022
Dynamic Links
- Fixed an issue where
utmParametersDictionary
/minimumAppVersion
were not provided and their values were set to[NSNull null]
instead ofnil
.
Cloud Firestore
- Added multi-database support.
- Fixed a crash when there were nested data structures inside IN filters (#10507).
FCM
- Added notification support for iOS 16 simulators on Xcode 14. See the Xcode release notes for more details (#9968).
Cloud Storage
- Use dedicated serial queue for Storage uploads and downloads instead of a (concurrent) global queue. Fixes regression introduced in 10.0.0 (#10487).
Version 10.2.0 - November 15, 2022
- Updated GTMSessionFetcher dependency specifications to enable support for the compatible GTMSessionFetcher 3.x versions.
App Distribution
- Added a public
application(_:openURL:options:)
method so users with swizzling disabled can still use App Distribution (#10418).
Authentication
- Fixed a bug where certain linking/reauth flow errors were not caught (#10267).
- Phone auth in simulators now force recaptcha verification instead of using a silent push notification (#10426).
Dynamic Links
- Fixes utm parameters not being returned to dynamic links when using universal links (#10341).
Cloud Firestore
- Fix FAILED_PRECONDITION when writing to a deleted document in a transaction (#10431).
- Fixed data race in credentials provider (#10393).
- Fix Firestore failing to raise initial snapshot from empty local cache result (#10437).
Cloud Storage
- Fixed an issue where using Storage with more than one FirebaseApp instance caused non-default Storage instances to deadlock (#10463).
- Fixed a race condition where a download size could exceed the value of the
maxSize
parameter (#10358).
Version 10.1.0 - October 27, 2022
- Bitcode is no longer included in Firebase binary distributions. Xcode 14 does not support bitcode. tvOS apps using a Firebase binary distribution will now need to use Xcode 14 (#10372).
Analytics
- Removed bitcode.
- Added recommended hotel parameters in the purchase event documentation.
App Distribution
- Fixed inconsistent sign in prompts in single scene apps (#8096).
Authentication
- Fix a bug where multi factor phone number returns
NULL
(#10296).
FCM
- The app bundle identifier is no longer incorrectly shortened for watchOS apps created on Xcode 14 (#10147).
Remote Config
Swift Extensions
- Fixed the previous CocoaPods release incorrectly missing the RemoteConfigProperty feature (#10371).
Cloud Storage
- Fixed a 10.0.0 regression where metadata passed to
putFile
was not properly initialized (#10353). - Fixed a 10.0.0 regression handling an empty JSON metadata field from the emulator (#10370).
Version 10.0.0 - October 10, 2022
- Breaking change: Minimum supported versions have
updated for the following platforms:
- If using CocoaPods:
Platform Firebase 9 Firebase 10 iOS 10.0 11.0 tvOS 10.0 12.0 macOS 10.12 10.13 watchOS 6.0 6.0 - If using Swift Package Manager:
Platform Firebase 9 Firebase 10 iOS 11.0 11.0 tvOS 12.0 12.0 macOS 10.12 10.13 watchOS 7.0 7.0 - If using Carthage or the Zip distribution:
Platform Firebase 9 Firebase 10 iOS 11.0 11.0 tvOS 11.0 12.0 macOS 10.13 10.13 watchOS N/A N/A
- If using CocoaPods:
- Breaking change: Updated dependency specification for GTMSessionFetcher to allow all versions that are >= 2.1 and < 3.0 (#10131).
Analytics
- Fixed hang on main thread (#10151).
Realtime Database
- Deprecated
FirebaseDatabase
on watchOS 9 and above. watchOS users should instead use the Database REST API directly (#10272).
Dynamic Links
- Removed bare initializer from
DynamicLink
(#10000). - Added missing app.google (1p domain) support in FDL SDK.
Cloud Firestore
- Added
Query.count()
, which fetches the number of documents in the result set without actually downloading the documents (#10246). - Fixed compiler warning about
@param comparator
(#10226).
Swift Extensions
- Breaking Change: Made the
@DocumentID
property wrapper value setter internal to clarify that the value is ignored during writes (#9368). - Initializing a
@DocumentID
property wrapper with a non-nil value or using the@DocumentID
property wrapper value setter will log a warning. This is because the set value will be ignored (#9368). -
Firestore.Encoder
andFirestore.Decoder
now wraps the sharedFirebaseDataEncoder
andFirebaseDataDecoder
types, which provides new customization options for encoding and decoding data to and from Firestore intoCodable
s - similar to the options present onJSONEncoder
andJSONDecoder
fromFoundation
. - Added a
FirebaseDataEncoder.DateEncodingStrategy
forTimestamp
s.
Cloud Functions
- Removed unnecessary and unused
encoder
anddecoder
parameters frompublic func call(_ data: Request) async throws -> Response
API (#9891).
Firebase In-App Messaging
- Removed
foo
constant from SwiftInAppMessagingPreviewHelpers
API (#10222). - Changed internal
dataChanged
symbol that triggered App Store warnings (#10276).
Remote Config
Swift Extensions
- Added a new dynamic property wrapper API that enables developers to configure UI components to automatically update when new configs are activated. (#10155)
Cloud Storage
- Firebase Storage is now completely implemented in Swift. Swift-specific API improvements are planned for subsequent releases (#9963).
- Added new API
open func reference(for url: URL) throws -> StorageReference
equivalent toopen func reference(forURL url: String) -> StorageReference
, except it throws instead of erroring (#6974). - The
FirebaseStorageInternal
CocoaPod has been discontinued. - Deprecated the
storageReference
property ofStorageMetadata
. It had never been implemented and always returnednil
. - Storage APIs that previously threw an Objective-C exception now generate a Swift
fatalError
. - Storage now requires at least version 2.1 of its GTMSessionFetcher dependency.
- The localized description for
unknown
errors is now more descriptive.
Version 9.6.0 - September 13, 2022
- Mac apps using Firebase products that store SDK data in the keychain will no longer prompt the user for permission to access the keychain. This requires that Mac apps using Firebase be signed with a provisioning profile that has the Keychain Sharing capability enabled (#9392). See the troubleshooting FAQ for more details.
- Fixed
Array.Index
-related compile time errors when building with older Swift versions (#10171). - Update dependency specification for GTMSessionFetcher to allow all 2.x versions (#10131).
Analytics
- Added support for returning the current session ID with
sessionID()
. - Added support for simulating a match for on-device conversion measurement in debug mode.
- Updated documentation in
FIRAnalytics+AppDelegate.h
to account for UIScene and SwiftUI lifecycles. - Fixed Swift Package Manager issue with GoogleAppMeasurementOnDeviceConversion (#10126).
- Fixed keychain issue on macOS (#9392).
Realtime Database
- Fix priority inversion issue exposed by Xcode 14 (#10130).
Cloud Firestore
- Expose client side indexing feature with
FIRFirestore.setIndexConfigurationFromJSON
andFIRFirestore.setIndexConfigurationFromStream
(#10090). - Fixed high CPU usage whenever Firestore was in use (#10168).
Version 9.5.0 - August 23, 2022
- Fixed a zip distribution issue where the Promises module caused linking to fail (#10071).
- Limited dependency on GTMSessionFetcher version to < 2.1.0 to avoid a new deprecation warning (#10123).
App Check
- DeviceCheck and App Attest providers are supported by watchOS 9.0+ (#10094, #10098).
- App Attest provider availability updated to support tvOS 15.0+ (#10093).
Authentication
- Fixed a bug where phone multi-factor ids were not correctly retrieved (#10061).
Cloud Firestore
- Fixed an intermittent crash if
ListenerRegistration::Remove()
was invoked concurrently (#10065). - Fixed a crash if multiple large write batches with overlapping documents were executed where at least one batch performed a delete operation (#9965).
Remote Config
Swift Extensions
- Fixed Codable implementation to handle arrays and dictionaries from plist defaults (#9980).
Version 9.4.1 - August 8, 2022
- Swift Package Manager only release to fix a 9.4.0 tagging issue impacting some users (#10083).
Version 9.4.0 - August 2, 2022
- Fixed rare crash on launch due to out-of-bounds exception in FirebaseCore (#10025).
Cloud Firestore
Version 9.3.0 - July 12, 2022
- Remove GoogleSignInSwiftSupport from Zip and Carthage distributions due to infeasibility. The GoogleSignIn distribution continues (#9937).
Analytics
- Improved session measurement with User ID.
- Internal code cleanup.
Realtime Database
- Fix
reference(withPath:)
race condition crash (#7885).
Cloud Functions
- Fixed error code generation for HTTP 409 - "already exists" (#9942).
Performance Monitoring
- Update the console logging URL to troubleshooting page.
Remote Config
- Arrays and Dictionaries are now supported when initializing defaults from a plist (#8306).
- Activate calls will only update experiment data for
firebase
namespace to ensure correct experiment exposures (#9972).
Version 9.2.0 - June 21, 2022
- Zip and Carthage distributions now include GoogleSignInSwiftSupport (#9900).
Authentication
- Catch keychain errors instead of using the
isProtectedDataAvailable
API for handling prewarming issue (#9869).
Cloud Firestore
- Added
TransactionOptions
to control how many times a transaction will retry commits before failing (#9838).
Cloud Functions
- Fixed regressions in error code processing introduced in 9.0.0 (#9855).
- Importing FirebaseFunctions no longer exposes internal FirebaseCore APIs (#9884).
Firebase In-App Messaging
- Replaced unarchiveObjectWithFile with unarchivedObjectOfClass to conform to secure coding practices, and implemented NSSecureCoding (#9816).
Cloud Storage
- Importing FirebaseStorage no longer exposes internal FirebaseCore APIs (#9884).
Version 9.1.0 - May 24, 2022
Analytics
- Fixed a reachability check to avoid unnecessary DNS resolutions.
- Fixed a data race issue caught by the sanitizer.
- Internal code cleanup.
Version 9.0.0 - May 3, 2022
- Firebase now requires at least Xcode 13.3.1.
- Usage of the Firebase pod, the Firebase module (
import Firebase
), andFirebase.h
is deprecated. Use the specific Firebase product instead, for examplepod 'FirebaseMessaging'
andimport FirebaseMessaging
.
CocoaPods Users
- Breaking change: Podfiles must include
use_frameworks!
oruse_frameworks! :linkage => :static
. - Breaking change: C++/Objective-C++ clients should use
#import <FirebaseFunctions/FirebaseFunctions-Swift.h>
and#import <FirebaseStorage/FirebaseStorage-Swift.h>
to access Functions and Storage APIs, respectively. - Breaking change: Beta Swift pods (except
FirebaseInAppMessagingSwift-Beta
) have exited beta and are now generally available. The-beta
version suffix is no longer required. These should be removed from your Podfile, and anyimport
statements should be changed accordingly. - Breaking change: The
FirebaseStorageSwift
andFirebaseFunctionsSwift
modules have been merged intoFirebaseStorage
andFirebaseFunctions
respectively and should be removed from your Podfile. - Objective-C only apps using
use_frameworks! :linkage => :static
may need to add a dummy Swift file to their project to avoid linker issues.
Swift Package Manager Users
- Breaking change:
import Firebase
will no longer implicitly import Firebase Storage and Firebase Functions APIs. Useimport FirebaseStorage
andimport FirebaseFunctions
, respectively. C++/Objective-C++ clients should find alternative workarounds at https://forums.swift.org/t/importing-swift-libraries-from-objective-c/56730. - Breaking change: The
FirebaseStorageSwift-Beta
andFirebaseFunctionsSwift-Beta
libraries have been merged intoFirebaseStorage
andFirebaseFunctions
respectively and should be removed from your project following the instructions above. - Beta Swift libraries (except
FirebaseInAppMessagingSwift-Beta
) have exited beta and are now generally available. When upgrading a project that includes one or more of these libraries, an error likeMissing package product 'FirebaseSwift-Beta'
will appear. In your project's settings, go to "General" and scroll down toFrameworks, Libraries, and Embedded Content
. Select the missing package, and remove it. Then, click the+
button to add the assocciated library without the-Beta
suffix. Anyimport
statements in your project should be changed accordingly.
Zip and Carthage Users
- Breaking change: Updated the minimum supported versions for the zip and Carthage distributions to iOS 11.0, tvOS 11.0 and macOS 10.13. (#9633)
- The zip and Carthage distributions now include the Swift extension frameworks (#7819).
- Zip file installation instructions have changed. Please see the README embedded in the zip file for updated instructions.
Analytics
- Breaking change: Bumped the minimum iOS version from 9.0 to 10.0.
- Breaking change: Removed deprecated ecommerce constants. See guidance on how to measure ecommerce with Google Analytics 4.
- Added on-device conversion measurement with
initiateOnDeviceConversionMeasurement(emailAddress:)
API.
Swift Extensions
- Breaking change:
FirebaseAnalyticsSwift
has exited beta and is now generally available for use.
App Check
- Breaking change:
FirebaseAppCheck
has exited beta and is now generally available for use.
App Distribution
- Marked
releaseNotes
asnullable
as they don't always exist (#8602). - Breaking change: Fixed an ObjC-to-Swift API conversion error where
checkForUpdate()
returned a non-optional type. This change is breaking for Swift users only (#9604).
Authentication
- Breaking change: Fixed an ObjC-to-Swift API conversion error where
getStoredUser(forAccessGroup:)
returned a non-optional type. This change is breaking for Swift users only (#8599). - Fixed an iOS 15 keychain access issue related to prewarming (#8695).
Realtime Database
- Breaking change: Marked
getData()
snapshot as nullable to fix Swift API (#9655).
Swift Extensions
- Breaking change:
FirebaseDatabaseSwift
has exited beta and is now generally available for use.
Dynamic Links
- Fixed async/await crash when retrieving a dynamic link from a universal link fails (#9612).
Cloud Firestore
- Breaking change: Fixed an issue where returning
nil
from the update closure when running a transaction caused a crash in Swift by removing the auto-generatedasync throw
ing method from theFirebaseFirestore
module. In order to use theasync throw
ing transaction method, add theFirebaseFirestoreSwift
module dependency to your build target (#9426).
Swift Extensions
- Breaking change:
FirebaseFirestoreSwift
has exited beta and is now generally available for use.
Cloud Functions
- The FirebaseFunctionsSwift library has been removed. All of its APIs are now included
in the FirebaseFunctions library. Please remove references to FirebaseFunctionsSwift from Podfiles
and Swift Package Manager configurations.
import FirebaseFunctionsSwift
should be replaced withimport FirebaseFunctions
. - Backported Callable async/await APIs to iOS 13, etc. (#9483).
- The global variables
FunctionsErrorDomain
andFunctionsErrorDetailsKey
are restored for Swift only. - Added a new method
httpsCallable(url:)
to create callables with URLs other thancloudfunctions.net
.
Installations
- Swift-only: Updated symbol name
kFirebaseInstallationsErrorDomain
toInstallationsErrorDomain
(#9275).
Remote Config
- The
remoteConfig()
singleton now throws an exception when called beforeFirebaseApp.configure()
(#8640).
Swift Extensions
- Breaking change:
FirebaseRemoteConfigSwift
has exited beta and is now generally available for use.
Cloud Storage
- The
FirebaseStorageSwift
library has been removed. All of its APIs are now included in theFirebaseStorage
library. Please remove references toFirebaseStorageSwift
from Podfiles and Swift Package Manager configurations.import FirebaseStorageSwift
should be replaced withimport FirebaseStorage
. - Backported
StorageReference
async/await APIs to iOS 13, etc. (#9483). - The global variable
StorageErrorDomain
is restored for Swift only.
Version 8.15.0 - April 12, 2022
Analytics
- Updated Analytics public header documentation to reference Swift names.
Dynamic Links
- Fixed custom domain long URL validation logic (#6978).
Cloud Firestore
- Potentially fixed a crash during application exit caused by an assertion about ordering documents by missing fields (#9258).
- Add more details to the assertion failure in Query::Comparator() to help with future debugging (#9258).
Cloud Functions
- The global variables
FIRFunctionsErrorDomain
andFIRFunctionsErrorDetailsKey
are deprecated and will be removed in v9.0.0 (#9569).
Performance Monitoring
- Removed unused code for pre-warming detection.
Cloud Storage
- The global variable
FIRStorageErrorDomain
is deprecated and will be removed in a future release (#9569).
Version 8.14.0 - March 22, 2022
Analytics
- Added Merchant Center results measurement to improve ecommerce reporting.
- Added support for data collection customization.
- Fixed threading issue where accessing identifiers potentially blocked the main thread (#6392).
Authentication
- Started to collect the Firebase user agent for Firebase Auth (#9066).
Cloud Firestore
- Fixed compiler warnings in
local_serializer.cc
about "implicit conversion loses integer precision" that were introduced in 8.13.0 (#9430).
Performance Monitoring
- Record the request payload size for POST/PUT requests.
Version 8.13.0 - March 8, 2022
Crashlytics
- Updated
upload-symbols
to 3.11 and added logic to process Flutter project information (#9379). - Added native support for ARM/M1 Macs in
upload-symbols
(#8965). - Fixed an issue where passing
nil
as a value for a custom key or user ID did not clear the stored value as expected.
Cloud Firestore
Swift Extensions
- Added support for explicit typing to
DocumentReference.getDocument(as:)
andDocumentSnapshot.data(as:)
to simplify mapping documents (#9101). -
DocumentSnapshot.data(as:)
will decode the document to the type provided. If you expect that a document might not exist, use an optional type (e.g.Book?.self
) to account for this. See the documentation and this blog post for an in-depth discussion.
Performance Monitoring
- Make pre-warming identification more reliable by moving the pre-warm check to the earliest phase of app start.
Version 8.12.1 - February 10, 2022
Analytics
- Added support for parsing new campaign parameters utm_id, utm_source_platform, utm_creative_format, and utm_marketing_tactic for traffic source dimensions.
- Fixed an issue with session_start events being logged during app prewarming on iOS 15+ (#6161).
App Check
- Fixed watchOS build failures with Swift Package Manager (#9191).
Authentication
- Added documentation note and error logging to
getStoredUser(forAccessGroup:)
regarding tvOS keychain sharing issues (#8878). - Partial fix for expired ID token issue (#6521).
Cloud Firestore
- Add more details to the assertion failure in
OrderBy::Compare()
to help with future debugging (#9258).
Swift Extensions
- Added async wrapper for
CollectionReference.addDocument()
andFirestore.loadBundle()
.
Firebase In-App Messaging
- Includes a client-side fix for an issue where test messages incorrectly do not include
appData
. The issue will be fully resolved once the backend is also updated (#9126).
FCM
- Improved reporting for SQLite errors when failing to open a local database (#8699).
Performance Monitoring
- Attempted to fix an issue where app start trace durations are not reliable on iOS 15. App start measurements are now made only for cold app starts (without pre-warming) (#9026).
Remote Config
Swift Extensions
- Initial public beta release with Codable support. See example usage on GitHub here and here (#6883). To use the Swift extension library, add
pod 'FirebaseRemoteConfigSwift'
to your Podfile.
Version 8.11.0 - January 18, 2022
Swift Extensions
- Introduced shared Codable implementation. Initially used by Firebase Functions and Firebase Realtime Database (#9091).
Authentication
- Added a
X-Firebase-GMPID
header to network requests (#9046). - Added multi-tenancy support to generic OAuth providers (#7990).
- Fixed macOS Extension access to Shared Keychain by adding kSecUseDataProtectionKeychain recommended key (#6876).
Realtime Database
Swift Extensions
- Refactored Codable implementation to share common source with Firebase Functions. This should be generally transparent with the exception of custom decoder use cases, which may need to be updated (#8854).
Cloud Firestore
- Fixed an issue that can result in incomplete Query snapshots when an app is backgrounded during query execution.
Cloud Functions
Swift Extensions
- Initial public beta release with Codable support. See example usage in https://github.com/firebase/firebase-ios-sdk/blob/master/FirebaseFunctionsSwift/Tests/IntegrationTests.swift. (#8854)
Firebase In-App Messaging
- Fixed an issue where an in-app message was shown every new session (#8907).
- Fixed an issue where duplicate messages could occur when two campaigns were triggered by different events (#9070).
FCM
- Fixed an issue where the FCM token was not correctly associated with the APNs token during app start (#8738).
Version 8.10.0 - December 1, 2021
- Fixed platform availability checks in Swift Package Manager that may prevent code completion for Analytics APIs on macOS and tvOS (#9032).
- Firebase now includes community supported Combine publishers. More details can be found here (#7295).
Realtime Database
- Fixed an URL handling bug for hosts that also contain the path element (#8874).
Performance Monitoring
- Fixed a crash related to FPRSessionDetails (#8691).
- Fixed heap-buffer overflow when encoding sessions (#8849).
Remote Config
- Fixed cached config not loading if device is locked (#8807).
Version 8.9.1 - November 2, 2021
Analytics
- Fixed an issue in 8.9.0 where
app_instance_id
is reset, default event parameters get cleared, and a new session start event gets logged on every app launch despite the session not actually timing out.
Cloud Firestore
- Fixed a bug in the AppCheck integration that caused the SDK to respond to unrelated notifications (#8895).
Version 8.9.0 - October 28, 2021
- Firebase introduces beta support for tvOS, macOS, and Catalyst. watchOS continues to be available with community support. Individual product details are available here (#583).
- The minimum supported tvOS version is now 12.0.
- Forced GoogleUtilities and GoogleDataTransport CocoaPods dependencies to be updated to latest minor versions (#8733).
Analytics
- Added beta support for tvOS, macOS, and Catalyst.
App Check
- Improved error handling logic by minimizing amount of requests that are unlikely to succeed (#8798).
Authentication
Crashlytics
- Fixed an issue where exceptions with
nil
reasons weren't properly recorded (#8671).
Dynamic Links
- Fixed Shortlink regression involving underscores and dashes introduced in 8.8.0 (#8786).
- Reduce memory stress on
WebKit
API (#8847). - Fixed regression introduced in 8.8.0 that failed to accept link query params after the FDL domain prefix (#8866).
Cloud Firestore
- Added SDK support for Firebase App Check.
- Fix a crash if
Transaction.getDocument(_:)
was called afterFirestore.terminate(_:)
(#8760). - Fixed a performance issue due to repeated schema migrations at app startup (#8791).
Swift Extensions
- Added
@FirestoreQuery
property wrapper for querying data from a Firestore collection. - FirebaseFirestoreSwift now requires a minimum iOS version of 11 for all distributions.
Cloud Functions
- Added watchOS support for Swift Package Manager (#8864).
Version 8.8.1 - October 1, 2021
- Swift Package Manager exclusive release to force GoogleUtilities and GoogleDataTransport to be updated to latest bug-fix versions (#8728).
Version 8.8.0 - September 28, 2021
Analytics
- Increased minimum required CocoaPods version to 1.10.2 to refactor AdSupport-related code out of GoogleAppMeasurement.xcframework to an optional GoogleAppMeasurementIdentitySupport.xcframework dependency.
- GoogleAppMeasurement/WithoutAdIdSupport subspec now ships GoogleAppMeasurement.xcframework. GoogleAppMeasurement/AdIdSupport subspec ships both GoogleAppMeasurement.xcframework and GoogleAppMeasurementIdentitySupport.xcframework.
- Added debug message to signal that
GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED
was set correctly (#7467).
App Check
- Add support for bundle ID-based API key restrictions (#8678).
Authentication
- Auth now falls back to reCAPTCHA for phone auth app verification if the push notification is not received before the timeout (#8653).
Crashlytics
- Internal SDK updates to test potential future MetricKit support.
Dynamic Links
- Firebase dynamic links with custom domains will now only work if the custom domain has a trailing '/' (#7087).
- Fixed device-only build warning for unused
processIsTranslated
function (#8694).
Cloud Firestore
- Internal refactor to improve serialization performance.
-
DocumentSnapshot
objects consider the document's key and data for equality comparison, but ignore the internal state and internal version.
Performance Monitoring
- Create a random delay for remote config fetch during app starts.
- Fixed log spam when Performance is disabled (#8423, #8577).
- Fixed heap-buffer overflow when decoding strings (#8628).
Version 8.7.0 - September 8, 2021
Analytics
- Fixed an issue where screen view events weren’t getting logged while a system prompt was being presented (#7577).
Realtime Database
- Fixed Firebase App Check token periodic refresh (#8544).
Cloud Functions
- Add watchOS support (#8499).
- Functions no longer sets the App Check header in the case of an error (#8558).
Version 8.6.1 - August 27, 2021
Performance Monitoring
- Fix an issue where performance traces and other events were not logged correctly, causing them to be dropped after two days (#8581).
Version 8.6.0 - August 17, 2021
App Check
- Documented unsupported platforms (#8493). App Check is available on all Apple platforms except watchOS.
Authentication
- Annotated platform-level availability using
API_UNAVAILABLE
instead of conditionally compiling certain methods with#if
directives (#8451).
Dynamic Links
- Refactored and added helper class (#8432).
Firebase In-App Messaging
- Replaced conditionally-compiled APIs with
API_UNAVAILABLE
annotations on unsupported platforms (#8480).
FCM
- Removed iOS version check from
FIRMessagingExtensionHelper.h
(#8492). - Added new API
FIRMessagingExtensionHelper exportDeliveryMetricsToBigQuery
that allows developers to enable notification delivery metrics that are exportable to BigQuery (#6181). - Fixed an issue that delete token no longer works (#8491).
Performance Monitoring
- Add Firebase Performance Monitoring support for Swift Package Manager (#6528).
- Fix a crash due to a race condition (#8485).
Version 8.5.0 - August 03, 2021
App Check
- App Check SDK available for all supported platforms/OS versions, but App Attest and DeviceCheck providers availability changed to match underlying platform API availability (#8388).
Authentication
- Fixed an analyze issue introduced in Xcode 12.5 (#8411).
Realtime Database
- FirebaseDatabase
getData()
callbacks are now called on the main thread (#8247).
Dynamic Links
- Fixed build issues introduced in Xcode 13 beta 3 (#8401).
- Fixed build failures for extension targets (#6548).
Cloud Firestore
- Internal refactor to improve serialization performance.
Firebase In-App Messaging
- Added support for unit testing with in-app message data objects (#8351).
- Added support for prototyping custom in-app message views in SwiftUI (#8351).
Cloud Storage
- Fixed an issue where Storage could not connect to local emulators using http (#8389).
Swift Extensions
- Added four APIs to augment automatically generated
async/await
APIs. See details via Xcode completion and at the source. Feedback appreciated about Firebase andasync/await
(#8289).
Version 8.4.0 - July 20, 2021
App Check
Crashlytics
- Bump Promises dependency (#8365).
Dynamic Links
- Fixed build issues introduced in Xcode 13 beta 3 (#8401).
- Fixed build failures for extension targets (#6548).
Cloud Firestore
- Fixed handling of Unicode characters in log and assertion messages (#8372).
Firebase In-App Messaging
- Fixed build issues introduced in Xcode 13 beta 3 (#8401).
Installations
- Bump Promises dependency (#8365).
Version 8.3.1 - July 12, 2021
- Swift Package Manager only release to fix an 8.3.0 tagging issue impacting some users (#8367).
Version 8.3.0 - July 8, 2021
Analytics
- Added support needed for event modification and creation, allowing developers to remotely modify and/or create events and parameters from existing events.
- Internal code cleanup.
App Check
- Added token API for 3P use (#8266).
App Distribution
- App Distribution now signs out the tester when the call to fetch releases fails with an unauthorized error (#8270).
Crashlytics
- Add missing dependency that could cause missing symbol build failures (#8137).
Cloud Storage
- Removed usage of a deprecated GTMSessionFetcher method (#8294).
Version 8.2.0 - June 23, 2021
- Stop flooding Swift Package Manager projects with Firebase test schemes (#8167).
- Removed "Invalid Exclude" warnings for Swift Package Manager using Xcode 13 beta 1.
A/B Testing
- Fixed an analyzer issue introduced in Xcode 12.5 (#8209).
App Check
Authentication
- Fixed analyzer issues exposed by Xcode 12.5 (#8210).
- Fixed a bug in the account linking with email link, Game Center, and phone auth flows (#8196).
Crashlytics
- Incorporated code quality changes around integer overflow, potential race conditions, and reinstalling signal handlers.
- Fixed an issue where iOS-only apps running on iPads would report iOS as their OS Name.
- Fixed depcrecation warning for projects with minimum deployment version iOS 13 and up.
Dynamic Links
- Fixed analyzer issue exposed by Xcode 12.5 (#8208).
Cloud Firestore
- Passing in an empty document ID, collection group ID, or collection path will now result in a more readable error (#8218).
Cloud Functions
- Fixed an issue where factory class methods returned a new instance on every invocation, causing emulator settings to not persist between invocations (#7783).
Firebase In-App Messaging
- Fixed missing constraints warnings in default UI storyboard (#8205).
FCM
- Fixed an issue where local scheduled notifications were not set correctly due to sound type (#8172).
Performance Monitoring
- Updated log messages with proper log levels.
- Fixed empty values in
network_info.request_completed_time_us
field from the data schema. - Fixed a crash on FPRSessionDetails (#8139).
Version 8.1.1 - June 11, 2021
Analytics
- Fixed an issue where apps were getting rejected in App Store review for formerly-public method names removed in iOS 15 (#8222).
Version 8.1.0 - June 1, 2021
Crashlytics
- Added a warning to upload-symbols when it detects a dSYM with hidden symbols.
Realtime Database
Swift Extensions
- Initial public beta release for Codable support in the new FirebaseDatabaseSwift-Beta product for Swift Package Manager.
Firebase In-App Messaging
- Fixed bug where image-only messages had the wrong message type in message callbacks (#8081).
FCM
- Fixed an issue where notification open was not logged to Analytics correctly when the app is in a terminated state. (#7707, #8128).
Performance Monitoring
- Firebase Performance logs now contain URLs to see the performance data on the Firebase console.
Version 8.0.0 - May 17, 2021
The 8.0.0 release is now available via Carthage 0.38.0. See here for usage instructions.
Version 8.0.0 - May 11, 2021
- Breaking change: The deprecated Firebase InstanceID has been removed. Use Firebase Installations to manage app instance and use Firebase Messaging to manage FCM registration token instead (#7970).
- The experimental Carthage distribution is temporarily discontinued pending integration with the Carthage 0.38.0 release with support for binary xcframeworks. In the meantime, a mix of 7.4.0 and 7.11.0 will be the latest Carthage distribution. Use the zip distribution as an alternative way to get the latest 8.x binary distribution.
- Build warnings will no longer be generated to warn about missing capabilities resulting from not including FirebaseAnalytics in the app. See the Firebase docs instead (#7487).
- Breaking change: The
Firebase/AdMob
CocoaPods subspec has been removed. Use theGoogle-Mobile-Ads-SDK
CocoaPod instead (#7833). - Breaking change: The
Firebase/MLModelInterpreter
CocoaPods subspec has been removed. Use theFirebase/MLModelDownloader
andTensorFlowLiteSwift
(orTensorFlowLiteObjC
) specs instead. - Breaking change: The
Firebase/MLVision
CocoaPods subspec has been removed. For alternatives, see the Text Recognition, Image Labeling, and Landmark Recognition docs. - The Swift Package Manager distribution has exited beta and is now generally available for use.
- The Swift Package Manager distribution now requires at least iOS 11.0. The CocoaPods distribution continues to support iOS 10.0.
- The Swift Package Manager distribution now requires at least watchOS 7.0 for products that support watchOS. The CocoaPods distribution continues to support watchOS 6.0 with the exception of FirebaseDatabase.
- Migrated
transform:
callsites and introduced breaking version of GoogleDataTransport (9.0) (#7899). No changes are required to your app to upgrade to GoogleDataTransport 9 unless you were using GoogleDataTransport APIs directly.
Analytics
- Removed deprecated
setScreenName(_:screenClass:)
API.
App Check
- Initial release of the Firebase App Check SDK. See the getting started guide for instructions on how to use this SDK (#7928, #7937, #7948).
Authentication
- Fixed a crash that occurred when assigning auth settings (#7670).
Crashlytics
- Added a warning to upload-symbols when it detects a dSYM with hidden symbols.
Realtime Database
Dynamic Links
- Fixed crashes on simulators targeting iOS versions below iOS 14 on Apple Silicon (#7989).
Cloud Functions
- Added abuse reduction features (#7928).
FCM
- Removed the Instance ID dependency from FCM. This is a breaking change for FCM users who use the deprecated Firebase Instance ID API to manage registration tokens. Users should migrate to FCM's token APIs by following the migration guide (#7836).
Remote Config
- Fixed throttling issue when fetch fails due to no network (#6628).
- Fixed issue where sometimes the local config returned is empty (#7424).
Cloud Storage
- Added
FirebaseStorage.useEmulator()
, which allows the Storage SDK to connect to the Cloud Storage for Firebase emulator. - Added abuse reduction features (#7928).
Version 7.11.0 - April 20, 2021
Analytics
- Added Firebase/AnalyticsWithoutAdIdSupport subspec for developers of apps that aren’t using AdSupport or subject to AppTrackingTransparency.
FCM
- Removed internal Messaging dependencies on InstanceID (though both libraries can still co-exist in one app). The InstanceID dependency will be removed in the next major version of Firebase (#7814).
Firebase In-App Messaging
- Fixed SPM resource inclusion for in-app messages (#7715).
Version 7.10.0 - April 6, 2021
- Updated nanopb to version 0.3.9.8 to fix a security vulnerability (#7787).
Crashlytics
- Added a warning to upload-symbols when it detects a dSYM without any symbols.
Remote Config
- Throw exception if projectID is missing from FirebaseOptions (#7725).
Version 7.9.1 - March 24, 2021
This version is available via Swift Package Manager only.
- Fixed an issue where Swift Package Manager tags were unresolvable in 7.9.0 (#7777).
Version 7.9.0 - March 23, 2021
Analytics
Swift Extensions
- Initial public beta release. Introduces new SwiftUI-friendly APIs for
screen tracking. To use, add
pod 'FirebaseAnalyticsSwift', '~> 7.9-beta'
to the Podfile or add theFirebaseAnalyticsSwift-Beta
framework in Swift Package Manager, then addimport FirebaseAnalyticsSwift
to the source. Please provide feedback about these new APIs and suggestions about other potential Swift extensions to the Firebase iOS SDK issue tracker.
Crashlytics
- Updated Firebase pod to allow iOS 9 installation via
pod 'Firebase/Crashlytics'
.
Realtime Database
- Added community support for watchOS (#4556).
Cloud Firestore
- Added support for Firestore Bundles via
FIRFirestore.loadBundle
,FIRFirestore.loadBundleStream
andFIRFirestore.getQueryNamed
. Bundles contain pre-packaged data produced with the Server SDKs and can be used to populate Firestore's cache without reading documents from the backend.
Firebase In-App Messaging
- Added support for building custom in-app messages with SwiftUI (#7496).
Remote Config
- Enabled community supported watchOS build in Swift Package Manager (#7696).
- Remote Config no longer generates a missing Analytics warning on Catalyst (#7693).
Version 7.8.1 - March 12, 2021
Analytics
- Fixed an issue where references to
retrieveAdTrackingConsentStatus
caused kids' apps to be rejected during App Store review (#7652).
Version 7.8.0 - March 9, 2021
Analytics
- Removed reference to NSUserTrackingUsageDescription (#7652).
- Internal code cleanup.
Authentication
- Fixed auth state sharing during first app launch (#7472).
Crashlytics
- Added a new API checkAndUpdateUnsentReportsWithCompletion for updating the crash report from the previous run of the app if, for example, the developer wants to implement a feedback dialog to ask end-users for more information. Unsent Crashlytics Reports have familiar methods like setting custom keys and logs (#7503).
- Added a limit to the number of unsent reports on disk to prevent disk filling up when automatic data collection is off. Developers can ensure this limit is never reached by calling send/deleteUnsentReports every run (#7619).
Performance Monitoring
- Deprecated Clearcut (internal-only change).
- Enabled dynamic framework support (#7569).
- Removed the warning to include Analytics as Perf does not depend on Analytics (#7487).
- Fixed a crash due to a race condition (#7535).
Remote Config
- Remote Config now stores fetch metadata per namespace to address activation issues (#7179).
- Fixed an issue where experiment exposures were sometimes incorrect by only updating experiment data for
firebase
-namespaced fetch requests (#7604).
Version 7.7.0 - February 23, 2021
- Deprecated FirebaseMLModelInterpreter and FirebaseMLVision.
- Introduced FirebaseMLModelDownloader.
- Fixed missing doc comment in
FirebaseVersion()
(#7506). - Minimum required Xcode version for Zip and Carthage distributions changed to 12.2 (was 12.0).
- The zip distribution now includes Catalyst arm64 simulator slices (#7007).
A/B Testing
- Added community support for watchOS. A/B Testing can now build on watchOS, but some functions might not work yet (#7481).
Crashlytics
- Added a new API to allow for bulk logging of custom keys and values (#7302).
Realtime Database
- Fix variable length array diagnostics warning (#7460).
Dynamic Links
- Added
utmParametersDictionary
property toDynamicLink
(#6730).
Cloud Firestore
- Fixed a crash that could happen when the App object is being deleted and there's an active listener (#6909).
- Fixed a bug where local cache inconsistencies were being unnecessarily resolved (#7455).
Swift Extensions
- Added support for specifying
ServerTimestampBehavior
when decoding aDocumentSnapshot
.
Cloud Functions
Firebase In-App Messaging
- Fixed accessibility experience for in-app messages (#7445).
- Fixed conversion tracking for in-app messages with a conversion event but not a button / action URL (#7306).
FCM
- Fixed an issue in which, when checking storage size before writing to disk, the client was checking document folders that were no longer used (#7480).
Performance Monitoring
- Add community-supported tvOS.
Remote Config
- Added community support for watchOS (#7481).
Version 7.6.0 - February 9, 2021
- Fixed build warnings introduced with Xcode 12.5 (#7431).
Authentication
- Auth emulator now works across the local network (#7350).
- Fixed incorrect import for watchOS (#7425).
Crashlytics
- Improved start-up performance by moving some initialization work to a background thread (#7332).
- Updated upload-symbols to a version that is notarized to avoid macOS security alerts (#7323).
- Deleting unsent reports with
deleteUnsentReports
no longer happens on the main thread (#7298). - Fixed an issue where some developers experienced a race condition involving binary image operations (#7459).
Realtime Database
- Fixed variable length array diagnostics warning (#7460).
Dynamic Links
- Fixed build warnings introduced with Xcode 12.5 (#7434).
Cloud Firestore
- A write to a document that contains FieldValue transforms is no longer split up into two separate operations. This reduces the number of writes the backend performs and allows each WriteBatch to hold 500 writes regardless of how many FieldValue transformations are attached.
- Fixed an issue where using
FieldValue.arrayRemove()
would only delete the first occurrence of an element in an array in a latency compensated snapshots.
Firebase In-App Messaging
- Fixed accessibility experience for in-app messages (#7445).
- Fixed conversion tracking for in-app messages with a conversion event but not a button / action URL (#7306).
FCM
- Fixed build warnings introduced with Xcode 12.5 (#7433).
Performance Monitoring
- Fixed build warnings introduced with Xcode 12.5 (#7435).
Remote Config
- Fixed build warnings introduced with Xcode 12.5. (#7432)
Version 7.5.1 - January 28, 2021
This release is available via Swift Package Manager only.
- Fixed a bug introduced in 7.5.0 where GoogleUtilities' Reachability Swift package name could collide with other Swift packages named 'Reachability' (#7405).
Version 7.5.0 - January 27, 2021
- Fixed potential deadlock with
objc_copyImageNames
call (#7310).
Analytics
- Consolidated pods to distribute binaries as xcframeworks built with Xcode 12.
- CocoaPods ARM Mac users no longer need to use the
M1
tagged pods or add the-ObjC
linker flag. - Updated collection of some click identifiers to be contingent on when the advertising identifier is available.
Crashlytics
- Improve start-up performance by moving some initialization work to a background thread (#7332).
- Updated
upload-symbols
to a version that is notarized to avoid macOS security alerts (#7323). - Deleting unsent reports with deleteUnsentReports no longer happens on the main thread (#7298).
Realtime Database
- Added
DatabaseQuery.queryStartingAfterValue(_:)
andDatabaseQuery.queryEndingBeforeValue(_:)
for query pagination. - Added
DatabaseQuery.getData()
which returns data from the server when the cache is stale (#7110). - Inadvertently introduced an issue in
DatabaseQuery.getData()
that causes data to be returned which doesn't match the query filters. To work around this issue, useobserveSingleEvent(of:with:)
instead. We are working on providing a fix (#7403).
Cloud Firestore
- A write to a document that contains FieldValue transforms is no longer split up into two separate operations. This reduces the number of writes the backend performs and allows each WriteBatch to hold 500 writes regardless of how many FieldValue transformations are attached.
- Fixed an issue where using
FieldValue.arrayRemove()
would only delete the first occurrence of an element in an array in latency-compensated snapshots.
Firebase In-App Messaging
- Fixed failed assertion causing app to crash during test on device flow (#7299).
Remote Config
- Fixed bug that was incorrectly flagging ABT experiment payloads as invalid (#7184).
- Standardize support for Firebase products that integrate with Remote Config (#7094).
Version 7.4.0 - January 12, 2021
- Patch update to nanopb 0.3.9.7 that fixes a memory leak and other issues (#7090).
- Zip distribution now includes community supported macOS and tvOS libraries. Product support detailed here.
Analytics
- Updated nanopb dependency.
Authentication
- Check if the reverse client ID is configured as a custom URL scheme before setting it as the callback scheme (#7211).
- Add ability to sync auth state across devices (#6924).
- Add multi-tenancy support for email link sign-in (#7246).
Crashlytics
- Removed obsolete crash reporting mechanism from the SDK (#7076).
Firebase In-App Messaging
- Fixed default display bug in apps that don't use
UISceneDelegate
(#6803).
InstanceID
- Added a check on whether the default token has been changed by Messaging before writing to the InstanceID keychain storage (#7223).
Performance Monitoring
- Open-sourced Firebase Performance.
- Removed GoogleToolboxForMac and GTMSessionFetcher dependencies.
Cloud Storage
- Prevent second
listAll
callback (#7197).
Version 7.3.1 - December 15, 2020
This release is available via CocoaPods and Swift Package Manager only.
Dynamic Links
- Fixed a regression where a callback could occur off of the main thread.
Version 7.3.0 - December 9, 2020
- Added FirebaseAppDistribution-Beta product to Swift Package Manager (#7045).
Analytics
- Added missing header to
FirebaseAnalytics.h
(#7114).
App Distribution
- App Distribution now signs out the tester when the call to fetch releases fails with an unauthenticated error.
- Crash caused by trying to parse response as JSON when response is nil (#6996).
Authentication
- Fixed a Catalyst browser issue with
verifyPhoneNumber
API (#7049).
Crashlytics
- Added Crashlytics support for x86 apps running on Apple Silicon via Rosetta 2.
- Decreased Crashlytics CocoaPods minimum deployment target from iOS 10 to iOS 9.
- Removed obsolete API calls from upload-symbols.
- Removed obsolete onboarding calls from the SDK.
Dynamic Links
- Manually created dynamic links are now subject to allowed/blocked checks defined in Firebase Console (#5853).
Cloud Firestore
- Fixed a crash that could happen when the SDK encountered invalid data during garbage collection (#6721).
Firebase In-App Messaging
- Fixed default display bug in apps that don't use
UISceneDelegate
(#6803).
Cloud Storage
- Verify block is still alive before calling it in task callbacks (#7051).
Performance Monitoring
- Added an experimental event dispatch mechanism to enable faster performance reporting.
- Added a blocklist for GoogleDataTransport upload URLs to avoid cyclic generation of network performance events.
- Performance Monitoring v7.3.0 is not available via Carthage. Use 7.1.0 as a workaround.
Version 7.2.0 - December 2, 2020
- Reduced
FirebaseApp.configure()
and+[FIRApp registerInternalLibrary:withName:]
impact on app launch time (#6902). - Added arm64 simulator support to support new Apple silicon Macs. See here for more details.
- Due to the new arm64 simulator support, Xcode 12 is now required for any binary products (Analytics, Performance, zip file, and Carthage distributions).
Analytics
- Distributed binaries as xcframeworks in order to support the arm64 simulator slice.
- Moved expensive read operations out of
+initialize
(#6936). - Increased minimum required CocoaPods version to 1.10 for only the Apple silicon distribution in order to add xcframework binary support. See here for more details.
Realtime Database
- Made emulator connection API consistent between Auth, Database, Firestore, and Functions (#5916).
Cloud Firestore
- Made emulator connection API consistent between Auth, Database, Firestore, and Functions (#5916).
Cloud Functions
- Made emulator connection API consistent between Auth, Database, Firestore, and Functions (#5916).
Performance Monitoring
- Add Xcode simulator support for new Apple silicon based Macs (SDK is compatible only with Xcode 12 and above).
- Increased minimum required CocoaPods version to 1.10 in order to add xcframework binary support. See here for more details.
Version 7.1.0 - November 10, 2020
Authentication
- Fixed a crash on iOS 14 when multiple app delegate completion methods were called (#6863).
Crashlytics
- Fixed an issue where symbol uploads would fail when there are spaces in the project path, particularly in Unity builds (#6789).
- Added additional logging when settings requests fail with a 404 status to help customers debug onboarding issues (#6847).
Cloud Firestore
- Added the original query data to error messages for queries that cannot be deserizialized.
- Remove explicit MobileCoreServices library linkage from podspec (#6850).
- Removed excess validation of null and NaN values in query filters. This more closely aligns the SDK with the Firestore backend, which has always accepted null and NaN for all operators, even though this isn't necessarily useful.
Cloud Functions
- Added a constructor to set a custom domain (#6787).
FCM
- Fixed a crash on iOS 14 when multiple app delegate completion methods were called (#6863).
Remote Config
- Add support for other Firebase products to integrate with Remote Config (#6692).
Version 7.0.0 Patch Release - November 4, 2020
This patch release is available via CocoaPods only.
Performance Monitoring
- Fixed a crash that occurred when recording network requests (#6734).
Version 7.0.0 - October 26, 2020
This release contains several breaking changes, and thus constitutes a major version update.
- Breaking change: Updated minimum iOS version to iOS 10 except for Analytics which is now iOS 9 (#4847).
- Breaking change: Updated minimum macOS version to 10.12.
- Breaking change: The pods developed in this repo are no longer hard coded to be built as static
frameworks. Instead, their linkage will be controlled by the Podfile. Use the Podfile
option
use_frameworks! :linkage => :static
to get the Firebase 6.x linkage behavior. See this linking guide for mode details (#2022). - Breaking change: The version must now be specified for the two Swift-only Firebase CocoaPods in the
Podfile like
pod 'FirebaseFirestoreSwift', '~> 7.0-beta'
. - Firebase now requires a minimum CocoaPods version of 1.9.0.
- Added Swift Package Manager support for Firebase Messaging (#5641).
- Added Swift Package Manager support for Auth, Crashlytics, Messaging, and Storage watchOS targets (#6584).
- Firebase no longer uses the CocoaPods
private_headers
feature to expose internal APIs (#6572). - Removed broken
FirebaseOptions()
initializer. Useinit(contentsOfFile:)
orinit(googleAppID:gcmSenderID:)
instead (#6633). - All Firebase pods now have the same version (#6295).
- In CocoaPods, Firebase betas are now indicated in the version tag. In Swift Package Manager, beta is appended to the product name.
- Added global function
FirebaseVersion()
(orFIRFirebaseVersion()
for ObjC users) to access the Firebase installation version.
A/B Testing
- Removed
FIRExperimentController.updateExperiments(serviceOrigin:events:policy:lastStartTime:payloads:)
, which was deprecated (#6543).
App Distribution
- Updated error log for non-200 API service calls.
Analytics
- Added support for consent mode.
- Updated minimum iOS version to 9.0.
- Marked
Analytics.init()
as unavailable. - Marked
Analytics.appInstanceID()
as nullable. - Added the following event names as reserved:
ad_reward
app_background
app_exception
app_store_refund
app_store_subscription_cancel
app_store_subscription_convert
app_store_subscription_renew
app_upgrade
dynamic_link_app_open
dynamic_link_app_update
dynamic_link_first_open
first_visit
session_start_with_rollout
- The following event names are no longer reserved:
app_uninstall
screen_view
Authentication
- Removed deprecated APIs
dataForKey
,fetchProvidersForEmail:completion
,signInAndRetrieveDataWithCredential:completion
,reauthenticateAndRetrieveDataWithCredential:completion
,linkAndRetrieveDataWithCredential:completion
(#6607). - Added emulator support (#6624).
- Removed global variables
FirebaseAuthVersionNum
andFirebaseAuthVersionStr
.FirebaseVersion()
orFIRFirebaseVersion()
should be used instead.
Crashlytics
- Improved upload-symbols conversion speed. Customers with large dSYMs should see a significant improvement in the time it takes to upload Crashlytics symbols.
- Fixed watchOS crash related to
sigaction
(#6434).
Realtime Database
- Disabled a deprecation warning (#6502).
Dynamic Links
- Updated dependencies to maintain compatibility with Firebase 7.
Cloud Firestore
- Breaking change: Removed the
areTimestampsInSnapshotsEnabled
setting. Timestamp fields that read from aFIRDocumentSnapshot
now always returnFIRTimestamp
objects. UseFIRTimestamp.dateValue
to convert toNSDate
if required. - Fixed a memory leak introduced in 1.18.0 that may manifest when serializing queries containing equality or non-equality comparisons.
Swift Extensions
Added conditional conformance to the
Hashable
protocol for the@DocumentID
,@ExplicitNull
, and@ServerTimestamp
property wrappers.Removed support for wrapping
NSDate
in a@ServerTimestamp
property wrapper. This never actually worked becauseNSDate
is notCodable
.Fixed the minimum supported Swift version to be 4.1. This was already effectively the case because the code made use of Swift 4.1 features without documenting this requirement.
Firebase In-App Messaging
- Removed deprecated elements of In-App Messaging API.
Installations
- Removed global variable
FIRInstallationsVersionStr
.FirebaseVersion()
orFIRFirebaseVersion()
should be used instead. - Installations now throws an exception if
FIROptions.projectID
is missing orFIROptions.APIKey
has an incorrect format to catch critical configuration issues earlier (#4692). - Removed the
FIR
prefix fromFIRInstallationIDDidChange
and renamedkFIRInstallationIDDidChangeNotificationAppNameKey
toInstallationIDDidChangeAppNameKey
in Swift. - API docs updated to use term "installation auth token" consistently (#6014).
InstanceID
- Deprecated private
-[FIRInstanceID appInstanceID:]
method was removed (#4486). - Fixed an issue where the APNs token was not sent in the token request when iOS APNs token fetch was delayed (#6553).
FCM
- Removed the deprecated FCM direct channel API and Upstream send API (#6430).
- The
messaging:didReceiveRegistrationToken:
is able to return a null token. Updated the API parameterfcmToken
to be nullable (#5339). - Fixed an issue that downloading an image failed when there's no extension in the file name but MIME type is set (#6590).
Firebase ML
- Updated dependencies to maintain compatibility with Firebase 7.
Performance Monitoring
- Fixed issue related to crashes on specific kind of network requests #6713.
- Fixed issue related to race condition on Firebase Remote Config initialization #6287.
Remote Config
- Updated
lastFetchTime
field to readonly (#6567). - Functionally neutral change to stop using a deprecated method in the A/B Testing API (#6543).
- Updated
numberValue
to be nonnull to align with current behavior (#6623). - Removed deprecated APIs
isDeveloperModeEnabled
,initWithDeveloperModeEnabled:developerModeEnabled
,activateWithCompletionHandler:completionHandler
,activateFetched
,configValueForKey:namespace
,configValueForKey:namespace:source
,allKeysFromSource:namespace
,keysWithPrefix:namespace
,setDefaults:namespace
,setDefaultsFromPlistFileName:namespace
,defaultValueForKey:namespace
(#6637). - Completion handler for
fetchAndActivateWithCompletionHandler
is now run on the main thread (#5897). - Fixed database creation on tvOS (#6612).
- Updated public API documentation to no longer reference removed APIs (#6641).
- Updated
activateWithCompletion:
to use completion handler for experiment updates (#3687).
Cloud Storage
- Removed global variable
FIRStorageVersionString
.FirebaseVersion()
orFIRFirebaseVersion()
should be used instead. - Fixed an issue with the List API that prevented listing of locations that contain the "+" character.
- Renamed
list(withMaxResults:)
tolist(maxResults:)
in the Swift API. - Fixed an issue that caused longer than expected timeouts for users that specified custom timeouts.
Version 6.34.0 Patch Release - October 23, 2020
This release is available via CocoaPods only. Changes in this release will be present in subsequent non-patch releases for all non-CocoaPods distributions.
Performance Monitoring
- Fixed a crash that occurred when recording network requests. This release is identical to v3.3.0. Run
pod update
to install FirebasePerformance 3.3.2. - Reverted the fix for a bug where URLSharedSession-based network requests were not automatically monitored in iOS 14.
Version 6.34.0 Patch Release - October 8, 2020
This release is available via CocoaPods only. Changes in this release will be present in subsequent non-patch releases for all non-CocoaPods distributions.
- Fixed deprecation warnings in GoogleDataTransport when targeting iOS 12 or higher. The fix is available in GoogleDataTransport v7.5.1 (#6682).
Version 6.34.0 - October 6, 2020
- Removed warning related to missing Analytics framework for non-iOS builds since the framework isn't available on those platforms (#6500).
Analytics
- Added support for manually logging ad impressions with
logEvent(_:parameters:)
.
Crashlytics
- Improved upload-symbols conversion speed. Customers with large dSYMs should see a significant improvement in the time it takes to upload Crashlytics symbols.
- Fixed Apple Watch crash related to
sigaction
(#6434).
Cloud Firestore
- Internal improvements for future C++ and Unity support. Includes a breaking change for the Firestore C++ Alpha SDK, but does not affect Objective-C or Swift users.
- Added new internal HTTP headers to the gRPC connection.
Installations
- Added additional
FIRInstallationsItem
validation to catch potential storage issues (#6570).
InstanceID
- Deprecated InstanceID. For app instance identity handling, use FirebaseInstallations. For FCM registration token handling, use FirebaseMessaging (#6585).
FCM
- Added macro to suppress InstanceID deprecation warning (#6585).
Performance Monitoring
- Fixed an issue where URLSharedSession based network requests were not automatically monitored in iOS14.
Remote Config
- Fixed an
attempt to insert nil object
crash infetchWithExpirationDuration:
(#6522).
Cloud Storage
- Fixed typo in doc comments (#6485).
Version 6.33.0 - September 22, 2020
- Swift Package Manager - Define system framework and system library dependencies. This resolves undefined symbol issues for system dependencies (#6408, #6413).
- Swift Package Manager - Fixed build warnings related to minimum iOS version (#6449).
- Enable Firebase pod support for Auth and Crashlytics watchOS platform (#4558).
- Carthage - Some frameworks were missing Info.plist files (#5562).
Analytics
- Fixed unintentional network request when Analytics collection is disabled (#5837).
App Distribution
- Updated error log for non-200 API Service calls.
Authentication
- Fixed internal source documentation (#6371).
Crashlytics
- Fixed Apple Watch crash related to sigaction (#6434).
Dynamic Links
- Changed client ID usage in API calls and respective checks in the code.
- Fixed attempts to connect to invalid IPv6 domain by updating IPv4 and IPv6 to use a single, valid endpoint (#5032).
Cloud Firestore
- Added
whereField(_:notIn:)
andwhereField(_:isNotEqualTo:)
query operators.whereField(_:notIn:)
finds documents where a specified field’s value is not in a specified array.whereField(_:isNotEqualTo:)
finds documents where a specified field's value does not equal the specified value. Neither query operator will match documents where the specified field is not present.
Cloud Functions
- Weak dependency on Instance ID replaced by Firebase Messaging (#6395).
InstanceID
- Added a new notification for listening for token refresh from Messaging and updated the token cache in InstanceID (#6286).
- Fixed an issue where the token refresh notification was not triggered when using
tokenWithAuthorizedEntity:scope:options:handler
to fetch the token (#6286).
FCM
- Added new token APIs to get and delete the default FCM registration token asynchronously. Also added new
Messaging.deleteToken(completion:)
andMessaging.token(completion:)
methods for managing registration tokens and checkin data. Existing FCM users should replace their InstanceID calls with the new methods to prepare for the coming deprecation of InstanceID. (#6313).
Version 6.32.2 - September 14, 2020
Analytics
- Updated access to IDFA based on Apple announcement on effective date of AppTrackingTransparency policy.
Version 6.32.0 - September 8, 2020
- Swift Package Manager - It's no longer necessary to select the Firebase or
FirebaseCore products. Their build targets are implicitly selected when choosing any other
Firebase product. If migrating from
6.31-spm-beta
, you may need to remove those targets from theFrameworks, Libraries, and Embedded Content
Build Setting on the General tab.
Analytics
- Resolved potential issues in usage of CFPreferences API.
- Internal code cleanup.
App Distribution
- The App Distribution fastlane plugin version 0.2.0 no longer relies on the Firebase CLI to authenticate users and requests. For more information, visit Distribute an app with fastlane.
Authentication
- Updated internal source documentation (#6371).
Crashlytics
- Added stackFrameWithAddress API for recording custom errors that are symbolicated on the backend (#5975).
- Fixed comment typos (#6363).
- Remove device information from binary image data crash info entries (#6382).
Realtime Database
- The SDK can now infer a default database URL if none is provided in the config.
Cloud Firestore
- Fix gRPC documentation warning surfaced in Xcode (#6340).
Version 6.31.1 - August 31, 2020
This release is available via CocoaPods only. Changes listed in this section will be present in subsequent binary releases.
- Fixed sporadic missing FirebaseApp symbol build issue introduced in Firebase 6.28.0 (#6341).
Version 6.31.0 Patch Release - August 27, 2020
This release is available via CocoaPods only. Changes listed in this section will be present in subsequent binary releases.
App Distribution
- Updated header comments (#6321).
- Fixed a bug where customers with restricted API keys were unable to fetch releases (#6346).
Version 6.31.0 - August 25, 2020
- Beta release of Swift Package Manager. Details here. (#3136)
- Firebase's dependencies on nanopb are updated from version 0.3.9.5 to version 0.3.9.6 (1.30906.0 in CocoaPods).
Analytics
- Added support for measuring first_open conversions for users who accept Apple's iOS 14 app tracking prompt.
App Distribution
- The App Distribution iOS SDK is now available in beta. You can now add the SDK to enable and customize in-app new build alerts for your testers. For more details, visit Set up in-app alerts.
Authentication
- Added support for multi-tenancy (#6142).
- Added basic watchOS support (#4621).
- Improved Xcode completion of public API completion handlers in Swift (#6283).
Crashlytics
- Fixed a compiler warning and removed unused networking code (#6210).
- Fixed a crash that occurred rarely when trying to restart a URL session task without a valid request (#5984).
- Introduced watchOS support (#6262).
Dynamic Links
- Functionally neutral public header refactor to enable Swift Package Manager support.
Cloud Firestore
- Internal improvements for future C++ and Unity support.
Firebase In-App Messaging
- Functionally neutral import and header refactor to enable Swift Package Manager support.
Installations
- Use ephemeral
NSURLSession
to prevent caching of request/response (#6226). - Backoff added for some error to prevent unnecessary API requests (#6232).
InstanceID
- Added a new notification for listening for FCM token refresh and updating the token cache in InstanceID (#6286).
- Fixed an issue where token refresh notification would not be triggered when using
tokenWithAuthorizedEntity:scope:options:handler
to fetch the token (#6286).
FCM
- Fixed an issue where topic subscription did not work in watchOS (#6160).
- Improved Xcode completion of public API completion handlers in Swift (#6278).
Version 6.30.0 - August 11, 2020
- Functionally neutral public header refactor in preparation for Swift Package Manager support. Applies to FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseCrashlytics, FirebaseDatabase, FirebaseFirestore, FirebaseFunctions, FirebaseInstallations, FirebaseRemoteConfig, FirebaseStorage, and GoogleDataTransport.
Analytics
- Fixed an issue where the log level set by
FirebaseConfiguration
is overwritten (#5704). - Internal code cleanup.
A/B Testing
- Functionally neutral source reorganization for preliminary Swift Package Manager support (#6016).
Authentication
- Fix bug where multiple keychain entries would result in user persistence failure (#5906).
- Added support for using GOOGLE_APP_ID in generic IDP and phone auth reCAPTCHA fallback flows (#6121).
Crashlytics
- Fixed a segmentation fault that could occur when writing crash contexts to disk (#6048).
Realtime Database
- Functionally neutral source reorganization (#5861).
Dynamic Links
- Guard check logic in check for pending dynamic link.
Cloud Firestore
- Rearranged public headers for future Swift Package Manager support. This should have no impact on existing users of CocoaPods, Carthage, or zip file distributions.
Cloud Functions
- Functionally neutral source reorganization (#5858).
Installations
- Functionally neutral source reorganization (#5861).
Firebase ML
- Updated the TensorflowLiteObjC dependency to 2.3.0 in FirebaseMLModelInterpreter. Resolves (#5746).
Remote Config
- Fixed
FirebaseApp.delete()
-related crash in config fetch (#6123).
Performance Monitoring
- Rolled forward previous changes from in-house event log dispatch mechanism to GoogleDataTransport after fixing client timestamp issue.
- Updated the Logging message for 'Trace' and 'Network Requests' (see Public Docs).
- Resolved a long standing issue which stopped network request trace from being dispatched on Simulator.
Cloud Storage
- Functionally neutral source reorganization (#5861).
Version 6.29.0 - July 28, 2020
A/B Testing
- Functionally neutral source reorganization for preliminary Swift Package Manager support (#6016).
Analytics
- Added support for manually logging screen views with
logEvent(_:parameters:)
. ThesetScreenName(_:screenClass:)
API will be deprecated and removed in a future major release. - Added
setDefaultEventParameters
API to support setting parameters that will be logged on all events. -
[SKAdNetwork registerAppForAdNetworkAttribution]
is now automatically called on first open by default. To opt-out of this default behavior, add the keyGOOGLE_ANALYTICS_REGISTRATION_WITH_AD_NETWORK_ENABLED
with Boolean valueNO
to your app’sInfo.plist
file.
Authentication
- Fixed a multithreaded memory access issue (#5979).
Crashlytics
- Fixed a segmentation fault that could occur when writing crash contexts to disk (#6048).
Cloud Firestore
- Internal improvements for future C++ and Unity support.
Firebase In-App Messaging
- Fixed an inaccurate doc comment in
InAppMessagingDisplay
(#5972). - Functionally neutral source reorganization for preliminary Swift Package Manager support (#6013).
InstanceID
- Remove FIRInstanceIDURLQueryItem in favor of NSURLQueryItem (#5835).
FCM
- Remove logic that was executed for iOS 7 and below (#5835).
Remote Config
- Functionally neutral source reorganization for preliminary Swift Package Manager support (#6013).
Version 6.28.2 - July 21, 2020
Zip file released containing FirebasePerformance 3.2.1.
Version 6.28.1-hotfix - July 20, 2020
CocoaPods users can access this release by running pod update
to install the
fix in FirebasePerformance 3.2.1. Zip file users can access the fix with
version 6.28.2.
Performance Monitoring
- Fixed an issue that caused the majority of events to not be processed. This release is identical to v3.1.11.
Version 6.28.1 - July 14, 2020
Cloud Firestore
- Fixed a configuration issue where listeners were no longer being called back on the main thread by default.
Version 6.28.0 - July 14, 2020
- Building with Firebase now requires Xcode 11.3 or higher. Note that Xcode 11.4 should not be used for apps that still support 32-bit devices.
- Added thread safety to
[FIROptions defaultOptions]
method (#5915). - Updated GoogleUtilities and GoogleDataTransport imports. The GoogleDataTransportCCTSupport dependency should no longer be linked along with Firebase (#5824).
A/B Testing
- Removed Protobuf dependency (#5890).
Authentication
- Functionally neutral source reorganization for preliminary Swift Package Manager support (#5856).
Crashlytics
- Add dispatch_once for opening sdk log file (#5904).
- Functionally neutral updated import references for dependencies (#5902).
Realtime Database
- Functionally neutral source reorganization (#5861).
Dynamic Links
- Fixed crashes that occur when a dynamic link is opened for the second time while an app is in the foreground (#5880).
- Added plist property
FirebaseDeepLinkPasteboardRetrievalEnabled
to enable/disable fetching dynamic links from Pasteboard. - Reduce frequency of iOS14 pasteboard notifications by only reading from it when it contains URL(s) (#5905).
- Functionally neutral updated import references for dependencies (#5824).
Cloud Firestore
- Removed a delay that may have prevented Firestore from immediately establishing a network connection if a connectivity change occurred while the app was in the background (#5783).
- Fixed a rare crash that could happen if the garbage collection process for old documents in the cache happened to run during a LevelDB compaction (#5881).
Cloud Functions
- Functionally neutral source reorganization (#5858).
Firebase In-App Messaging
- Fixed an inaccurate doc comment in
InAppMessagingDisplay
(#5972).
Installations
- Functionally neutral source reorganization (#5832).
InstanceID
- Functionally neutral updated import references for dependencies (#5824).
FCM
- Fix documentation warning exposed by Xcode 12 (#5876).
- Functionally neutral updated import references for dependencies (#5824).
ML Kit for Firebase
- Marked all on-device APIs as deprecated. See the migration guide at https://developers.google.com/ml-kit/migration.
- Migrated from FirebaseInstanceID (IID) to FirebaseInstallations (FIS).
Performance Monitoring
- Migrated from in-house event log dispatch mechanism to GoogleDataTransport.
- Updated the Logging message for 'Trace' and 'Network Requests' (see Public Docs).
Remote Config
- Functionally neutral updated import references for dependencies (#5824).
- Updated Remote Config to consume the Protobuf-less A/B Testing SDK (#5890).
Cloud Storage
- Add error for attempt to upload directory (#5750).
- Functionally neutral source reorganization (#5851).
Version 6.27.1 - July 6, 2020
Analytics
- Updated symbols to not conflict with those defined in AdSupport.framework (#5153).
- Internal code cleanup.
Version 6.27.0 - June 16, 2020
- Functionally neutral refactor to simplify FirebaseCore's header usage and replace Interop pods with headers only. This change is the reason most of the Firebase pods have a minor version update and why there may not be another specific release note.
Analytics
- Fixed detection of duplicate subscription renewals.
Authentication
- Standardize FirebaseCore import headers (#5758).
Crashlytics
- Standardize FirebaseCore import headers (#5758).
Realtime Database
- Standardize FirebaseCore import headers (#5758).
Dynamic Links
- Fixed unwanted pending dynamic links checks on subsequent app restarts (#5665).
Cloud Firestore
- Fixed an issue that may have prevented the client from connecting to the backend immediately after a user signed in.
Firebase In-App Messaging
- Standardize FirebaseCore import headers (#5758).
Installations
- Standardize FirebaseCore import headers (#5758).
InstanceID
- Standardize FirebaseCore import headers (#5758).
FCM
- Use UNNotificationRequest to schedule local notification for local timezone notification for iOS 10 and above. This should also fix an issue where '%' was not properly shown in title and body (#5667).
- Fixed Maltese language key for language targeting (#5702).
Remote Config
- Removed typedefs from public API method signatures to improve Swift API usage from Xcode (#5748).
Cloud Storage
- Fixed a crash when listAll() was called at the root location (#5772).
- Added a check to FIRStorageUploadTask's
putFile:
to check if the passed-infileURL
is a directory, and provides a clear error if it is (#5750).
Version 6.26.0 - June 2, 2020
- Fixed
FirebaseApp
'sbundleID
verification, allowing exactbundleID
matches for extensions (#5126).
Analytics
- Added support for the increased product limits that are available in the 360 version of Google Analytics.
- Internal code cleanup.
Crashlytics
- Fixed a crash that could occur if certain plist fields necessary to create Crashlytics records were missing at runtime. Also added some diagnostic logging to make the issue cause more explicit (#5565).
Cloud Firestore
- Internal improvements for future C++ and Unity support. Includes a breaking change for the Firestore C++ Alpha SDK, but does not affect Objective-C or Swift users.
Firebase In-App Messaging
- Fixed log message for in-app messaging test on device flow (#5680).
Installations
- macOS Keychain storage now uses a unique (per app) Keychain Service name to isolate Keychain items for different macOS applications. Note: Installation identifiers created by previous versions will be reset on macOS which can affect, for example, A/B Testing variants or debug device targeting for Firebase Messaging. iOS, tvOS and watchOS Installation Identifiers will not be affected (#5603).
- More readable server error console messages (#5654).
- Auth Token auto fetch disabled (#5656).
ML Kit for Firebase
- Added
getLatestModelFilePath(_:completion:)
API toModelManager
for getting the absolute file path on the device for a downloaded custom remote model.
Remote Config
- Updated
fetchAndActivateWithCompletionHandler:
implementation to activate asynchronously (#5617). - Remove undefined class via removing unused proto generated source files (#4334).
- Add an URLSession partial mock to enable testing without a backend (#5633).
- Added activate API that returns a callback with an additional
bool
parameter indicating if the config has changed or not. The new API does not error if the console is unchanged. The old activate API with only an error parameter is deprecated and will be removed at the next major release (#3586).
Version 6.25.0 - May 19, 2020
- Fixed
FirebaseApp
'sbundleID
verification, allowing exactbundleID
matches for extensions (#5126).
Analytics
- Un-deprecated
AnalyticsEventViewSearchResults
.
Cloud Firestore
- Internal improvements for future C++ and Unity support. Includes a breaking change for the Firestore C++ Alpha SDK, but does not affect Objective-C or Swift users.
Swift Extensions
- Renamed the misspelled
FirestoreDecodingError.fieldNameConfict
tofieldNameConflict
(#5520).
Firebase In-App Messaging
- Fixed an issue where clicks were counted for messages with no action URL (#5564).
FCM
- Updated an error case with a failure reason to give more details on the error (#5511).
Remote Config
- Fixed a bug where settings updates weren't applied before fetches (#4740).
- Updated public API documentation for 4.4.10 change from FirebaseInstanceID to FirebaseInstallations (#5561).
Version 6.24.0 - May 5, 2020
- Updated nanopb to 0.3.9.5 (across all Firebase pods). This includes a fix for CVE-2020-5235. Note that the versioning scheme for the nanopb CocoaPod has changed; see the nanopb podspec on GitHub for more details (#5191).
Analytics
- Un-deprecated
AnalyticsEventSelectContent
.
Authentication
- Remove unused mfa request field
mfa_provider
(#5397). - Suppressed deprecation warnings when targeting iOS versions up to iOS 13 (#5437).
Crashlytics
- Fixed unchecked
malloc
s in Crashlytics (#5428). - Fixed an instance of undefined behavior when loading files from disk (#5454).
Realtime Database
Cloud Firestore
- Firestore now limits the number of concurrent document lookups it will perform when resolving inconsistencies in the local cache (firebase/firebase-js-sdk#2683).
- Upgraded gRPC-C++ to 1.28.0 (#4994).
- Firestore will now send Auth credentials to the Firestore Emulator (#5072).
Firebase In-App Messaging
- Fixed an issue where GoogleUtilities wasn't explicitly listed as a dependency (#5282).
FCM
- Changed the location of source under FirebaseMessaging folder to fit the current repository organization (#5476).
Remote Config
- Dropped dependency on InstanceID. Remote Config now depends directly on Installations (#5096).
- Remote Config now includes both
CFBundleString
andCFBundleShortVersionString
in the outgoing fetch requests.
Version 6.23.0 - April 21, 2020
- Fixed Carthage installation failures involving
Protobuf.framework
.Protobuf.framework
is now separately installable by addingFirebaseProtobufBinary.json
to the Cartfile. Full details in the Carthage usage instructions (#5276).
Analytics
- Fixed backward compatibility issue.
- Internal code cleanup.
Authentication
- Handle calls to
useUserAccessGroup
soon after configure (#4175).
Crashlytics
- The Firebase Crashlytics SDK is now generally available.
Realtime Database
- Added
ServerValue.increment()
to support atomic field value increments without transactions.
Cloud Firestore
- Internal improvements for future C++ and Unity support.
Firebase In-App Messaging
- Fixed an issue where GoogleUtilities wasn't explicitly listed as a dependency (#5282).
Installations
- Keychain key-value storage refactored to
GoogleUtilities
(#5329).
InstanceID
- Internal cleanup and remove repetitive local notification (#5339).
FCM
- Fixed an issue that when a token is deleted, the token refresh notification and delegate is not triggered (#5338).
Cloud Storage
- Fix a rare case where a StorageTask would call its completion callbacks more than once (#5245).
Version 6.22.0 - April 8, 2020
- Fixed unincluded umbrella header warnings in Carthage and zip distributions introduced in Firebase 6.21.0 (#5209).
Analytics
- Fixed
session_start
event timestamp on warm start. - Fixed issue where some automatic events stopped logging after
calling
resetAnalyticsData
.
Crashlytics
- Increased network timeout for symbol uploads to improve reliability on limited internet connections (#5228).
Cloud Firestore
- Internal changes.
Firebase In-App Messaging
- Internal fixes for test apps (#5171).
InstanceID
- Fixed provisioning profile location for catalyst (#5048).
- Fixed crash when passing a nil handler to deleteToken request (#5247).
- Remove obsolete logic to improve performance and reduce keychain operations (#5211, #5237).
Cloud Storage
Swift Extensions
- Initial public beta release. Extends the Storage Reference API
with the
Swift Result type
for all APIs that return an optional value and optional Error. To use, add
pod 'FirebaseStorageSwift'
to the Podfile andimport FirebaseStorageSwift
to the source. Please provide feedback about these new APIs and suggestions about other potential Swift extensions to the Firebase iOS SDK issue tracker.
Version 6.21.0 - March 24, 2020
The zip distribution is now comprised of xcframeworks instead of frameworks. This provides a binary distribution for the community supported Firebase for Catalyst. See the zip's README for additional details.
The FirebaseCoreDiagnostic.framework in the Carthage distribution now includes an Info.plist (#4917).
The arm64e slice is no longer included in the zip distribution's xcframeworks. The slice will be removed from the remaining frameworks in a subsequent release. We will restore it once arm64e is officially supported by Apple.
Analytics
- Improved in-app purchase and subscription tracking.
Added support for Enhanced Ecommerce. Added the following Analytics events:
AnalyticsEventAddShippingInfo
AnalyticsEventPurchase
AnalyticsEventRefund
AnalyticsEventSelectItem
AnalyticsEventSelectPromotion
AnalyticsEventViewCart
AnalyticsEventViewPromotion
Also added the following Analytics parameters:
AnalyticsParameterDiscount
AnalyticsParameterItemCategory2
AnalyticsParameterItemCategory3
AnalyticsParameterItemCategory4
AnalyticsParameterItemCategory5
AnalyticsParameterItemListID
AnalyticsParameterItemListName
AnalyticsParameterItems
AnalyticsParameterLocationID
AnalyticsParameterPaymentType
AnalyticsParameterPromotionID
AnalyticsParameterPromotionName
AnalyticsParameterShippingTier
The following events have been deprecated:
The following parameters have been deprecated:
Authentication
- Internal changes (#5097).
- Multi-factor authentication is now available in the zip file and Carthage distributions.
Crashlytics
- Added a new API to record custom exception models and stacktraces to Crashlytics. This is a replacement for the
recordCustomException
API that existed in the Fabric Crashlytics SDK (#5055) - Fixed an issue with the
sendUnsentReports
API where reports wouldn't be uploaded until the method was called twice in specific instances (#5060) - Changed Crashlytics to use GoogleDataTransport to upload crashes (#4989)
- Changed the origin that Crashlytics uses to register crash events for crash-free users. Ensure you have installed the Firebase SDK for Analytics version 6.3.1 or above (#5030)
Dynamic Links
- Fixed Catalyst build - removed deprecated unused Apple framework dependencies (#5139).
Firebase In-App Messaging
- Fixed display issue with banner messages on iPad Pro 11" (#4714).
- Fixed 400 errors from backend due to a bug in the Instance ID SDK (#3887).
- Internal change in in-app message A/B test flow (#5078).
Installations
- Accessing
GULHeartbeatDateStorage
moved out of main thread (#5098).
Performance Monitoring
- Added direct dependency to Firebase Installations and removed the dependency on Firebase InstanceID.
Version 6.20.0 - March 12, 2020
This release is only available on CocoaPods. New changes in this release will be available across all distribution channels in Firebase versions 6.21.0 and higher.
Authentication
- Added support for Multi-factor Authentication (#4823). Note: Multi-factor authentication is currently only available on Google Cloud Identity Platform. Please follow this tutorial to use it in your Firebase projects.
Cloud Firestore
- Fixed the FirebaseFirestore podspec to properly declare its dependency on the UIKit framework on iOS and tvOS.
Version 6.19.0 - March 10, 2020
- Added an Apple platform flag (ios/macos/watchos/etc.) to
firebaseUserAgent
. The information will be used to support product decisions related to Apple platforms, e.g. prioritizing watchOS support, etc. (#4939)
A/B Testing
- Added completion handler for
FIRExperimentController's
updateExperimentsWithServiceOrigin
method. - Deprecated
FIRExperimentController.updateExperiments(serviceOrigin:events:policy:lastStartTime:payloads:)
. - Added
FIRExperimentController.validateRunningExperiments(serviceOrigin:runningExperimentPayloads:)
, allowing callers to expire experiments that are no longer running. - Added
FIRExperimentController.activateExperiment(experimentPayload:origin:)
, allowing callers to directly activates an experiment.
Analytics
- Added a warning when logging events with parameters containing Swift values not bridgeable to Objective-C Foundation types.
- Fixed an issue where Analytics would crash at configuration on iOS 8 if a plist key was missing (#4957).
Crashlytics
- Changed two endpoints in the Firebase Crashlytics SDK with no expected end-user impact (#4953, #4988).
Cloud Firestore
- Firestore should now recover its connection to the server more quickly after returning from the background (#4905).
Firebase In-App Messaging
- Added SDK support for A/B testing in-app messages.
Remote Config
- Internal code changes (#4934).
Version 6.18.0 - February 25, 2020
- Fix Zip Builder module map generation that could cause linker missing symbol errors in the 6.14.0 through 6.16.0 binary release distributions (#4819).
Analytics
- Firebase InstanceID SDK dependency replaced by Firebase Installations SDK.
- Fixed value type in keychain (#4742).
- Fixed race conditions in accessing app instance ID after reset.
- Retry resetting Analytics data if it does not complete before app termination.
- Fixed a misuse of
dispatch_once
.
Cloud Firestore
- Improved performance of queries with large result sets.
Firebase In-App Messaging
- Added support for data bundles for in-app messages. Data bundles are additional key-value pairs that can be sent along with an in-app message (#4922).
InstanceID
- Removed unused files (#4881).
FCM
- Deprecated FCM direct channel messaging via
shouldEstablishDirectChannel
. Instead, use APNs for downstream message delivery. Addcontent_available
key to your payload if you want to continue use legacy APIs, but we strongly recommend HTTP v1 API as it provides full APNs support. The deprecated API will be removed in Firebase 7 (#4710). - Deprecated upstream messaging API. For realtime updates, use Cloud Firestore, Realtime Database, or other services. The deprecated API will be removed in Firebase 7 (#4710).
- Use secure coding for Messaging's pending topics (#3686).
Remote Config
- Fixed a bug (#4677, #4734) where Remote Config does not work after a restore of a previous backup of the device. (#4896).
Version 6.17.0 - February 11, 2020
Crashlytics
- Fixed symbol collisions with the legacy Fabric Crashlytics SDK and added a warning not to include both (#4753, #4755).
- Added crash prevention checks (#4661).
Cloud Firestore
- Internal improvements.
InstanceID
- Instance ID no longer collects logging IDs (#4444).
FCM
- The
pod Firebase/Messaging
subspec now supports watchOS (#4807). - Fixed FIRMessagingExtensionHelper crashing in unit tests (#4689).
- Fixed FIRMessagingRmqManager crashing on devices with corrupted messaging database files (#4771).
Remote Config
- Fixed a crash that could occur when attempting a remote config fetch before a valid Instance ID was available (#4622).
- Fixed an issue where config fetch would sometimes fail with a duplicate fetch error when no other fetches were in progress (#3802).
- Fetch calls will now fail if a valid instance ID is not obtained by the Remote Config SDK.
Performance Monitoring
Version 6.16.0 - January 28, 2020
- Minimum required Xcode version changed to 10.3 (was 10.1).
Analytics
- Resolved a database issue on iOS 12+ if linked with sqlite library versions older than 3.20.0.
- Improved startup latency.
Crashlytics
- Fixed VeraCode scanner issues for unchecked error conditions (#4669).
Cloud Firestore
- Firestore previously required that every document read in a transaction must also be written. This requirement has been removed, and you can now read a document in a transaction without writing to it.
- Improved the performance of repeatedly executed queries when
persistence is enabled. Recently executed queries should see dramatic
improvements. This benefit is reduced if changes accumulate while the query
is inactive. Queries that use the
limit()
API may not always benefit, depending on the accumulated changes. - Changed the location of Firestore's locally stored data from the Documents folder to Library/Application Support, hiding it from users of apps that share their files with the iOS Files app. Important: After a user's data is migrated, downgrading to an older version of the SDK will cause the user to appear to lose data, since older versions of the SDK can't read data from the new location (#843).
Firebase In-App Messaging
- Consolidated backend and UI SDKs under
FirebaseInAppMessaging
. Developers should removepod Firebase/InAppMessagingDisplay
and only usepod Firebase/InAppMessaging
in their Podfile. -
FIRIAMDefaultDisplayImpl
is no longer public. -
FirebaseInAppMessagingDisplay
is now deprecated and should be removed from developers' Podfiles. - Minimum iOS version is now 9.0.
Version 6.15.1 Patch Release - January 16, 2020
Firebase installations service
- Throw an exception when there are missing required
FirebaseOptions
parameters (APIKey
,googleAppID
, andprojectID
). Please make sure yourGoogleServices-Info.plist
(orFirebaseOptions
if you configure Firebase in code) is up to date. The file and settings can be downloaded from the Firebase Console (#4683).
Version 6.15.0 - January 14, 2020
- Reorganized directory structure.
- The following SDKs introduce a new transitive dependency on the Firebase installations API:
- Analytics
- Cloud Messaging
- Remote Config
- In-App Messaging
- A/B Testing
- Performance Monitoring
- ML Kit
- Instance ID
The Firebase installations SDK introduces the Firebase installations API. Developers that use API key restrictions may experience blocked requests (https://stackoverflow.com/questions/58495985/). A solution is available here. (#4533)
Analytics
- Updated log messages to be less verbose.
- Fixed issues due to reference to self in async blocks.
Authentication
Crashlytics
This Firebase Crashlytics version includes the initial beta release of the Firebase Crashlytics SDK:
- The SDK is now open-sourced. Take a look in our GitHub repository.
- Added support for Catalyst (note that Crashlytics still supports tvOS and macOS).
- Added new APIs that are more consistent with other Firebase SDKs and more intuitive to use. The new APIs also give your users more control over how you collect their data.
- Removed the Fabric API Key. Now, Crashlytics uses the GoogleService-Info.plist file to associate your app with your project. If you linked your app from Fabric and want to upgrade to the new SDK, remove the Fabric API key from your
run
andupload-symbols
scripts. We also recommend removing the Fabric section from your app's Info.plist (when you upgrade, Crashlytics uses the new configuration you set up in Firebase).
Cloud Firestore
- Added a
limit(toLast:)
query operator, which returns the last matching documents up to the given limit.
Firebase In-App Messaging
- Issues with nullability in card message (#4435).
- Unit test failure with OCMock 3.5.0 (#4420).
- Crash in test on device error flow (#4446).
InstanceID
- Added watchOS support for InstanceID (#4016)
- Added a new dependency on the Firebase Installations SDK. The Firebase Installations SDK introduces the Firebase Installations API. Developers that use API-restrictions for their API-Keys may experience blocked requests (https://stackoverflow.com/questions/58495985/). A solution is available here. (#4533)
Firebase installations service
- Firebase installations service is an infrastructure service for Firebase services that creates unique identifiers and authentication tokens for Firebase clients (called "Firebase installations") enabling Firebase Targeting, i.e. interoperation between Firebase services.
- The Firebase installations SDK introduces the Firebase installations API. Developers that use API key restrictions may experience blocked requests (https://stackoverflow.com/questions/58495985/). This problem can be mitigated by following the instructions found here.
FCM
- Added watchOS community support for Firebase Messaging. This enables FCM push notification function on watch only app or independent watch app. (#4016)
- Added a new transitive dependency on the Firebase Installations SDK. The Firebase Installations SDK introduces the Firebase Installations API. Developers that use API-restrictions for their API-Keys may experience blocked requests (https://stackoverflow.com/questions/58495985/). A solution is available here.
Performance Monitoring
- Update to the newer version of FirebaseInstanceId SDK that uses FirebaseInstallationService.
Realtime Database
- Addressed a performance regression introduced in 6.1.3.
Cloud Storage
- Reorganized directory structure (#4573).
Version 6.14.0 - December 17, 2019
- Updated the binary distributions to include arm64e slices. See Apple's documentation for more details. Support for the open source libraries is now included in the zip and Carthage distributions. All libraries now support building for arm64e except the MLKit ones, for which support is TBD (#4110).
- The directory structure of the zip distribution has changed to include
the full name of each Firebase pod in the directory structure. For example, the former
Storage
directory is nowFirebaseStorage
.\ - Speed up initialization by lazily registering for the user agent (#1306).
- Added a Swift usage flag to
firebaseUserAgent
. The information will be used to support product decisions related to Swift, e.g. adding a Swift-specific API, SDKs, etc. (#4448).
Analytics
- Fixed issue with custom app events not being passed to FirebaseInAppMessaging when GoogleTagManager is also present (#4305).
Authentication
Realtime Database
- Internal improvements.
Dynamic Links
Cloud Firestore
- Internal improvements.
Firebase In-App Messaging
- Issues with nullability in card message (#4435).
- Unit test failure with OCMock 3.5.0 (#4420).
- Crash in test on device error flow (#4446).
InstanceID
- Added heartbeat support for InstanceID (#4323).
- Fixed the documentations on a few random generation and hash methods to clarify its use case to avoid confusions. (#4469, #4444, #4326).
FCM
- Fix component startup time (#4137).
Performance Monitoring
- Fixed issue related to app start trace being insanely long. #934
- Fixed issues related to monitoring NSURLSession based network requests where some of the requests were not monitored after iOS 13.
Remote Config
- Fix the return status code when app is offline (#4100).
- Internal code cleanup (#4297, #4403, #4379).
Version 6.13.0 Patch Release - November 19, 2019
This release does not include updates to the zip file or Carthage distributions.
Cloud Firestore
- Firestore no longer loads its TLS certificates from a bundle, which
fixes crashes at startup when the bundle can't be loaded. This fixes a
specific case where the bundle couldn't be loaded due to non-ASCII
characters in the application name. If you're manually tracking dependencies,
you can now remove
gRPCCertificates-Cpp.bundle
from your build (#3951).
Version 6.13.0 - November 14, 2019
- Updated the Firebase Core minor version to prepare for an upcoming Firebase pod open source.
Analytics
- Fixed crash after completed in-app purchase (#4176).
Authentication
- Added support for Sign-in with Apple (#4183).
Cloud Firestore
- Removed Firestore's dependency on the
Protobuf
CocoaPod. If you're manually tracking dependencies, you may be able to remove it from your build (note, however, that other Firebase components may still require it). - Added a dependency on the
abseil
CocoaPod. If you're manually tracking dependencies, you need to add it to your build.
FCM
- Moved message queue delete operation to a serial queue to avoid race conditions in unit tests (#4236).
Performance Monitoring
Remote Config
- Remote Config no longer re-activates the current config on fetch if it receives no changes from the backend. (#4260)
Cloud Storage
- Fixed a
-Wunused-property-ivar
violation (#4281).
Version 6.12.0 - November 5, 2019
- The zip file distributions are now built with Xcode 11.0. The zip file distribution no longer support Xcode 10.3 and below. The Carthage distribution is still built with Xcode 10.1 and is planned to update to Xcode 11.0 in the next release. As a workaround for (#3791), Carthage users can integrate GoogleSignIn.framework from the (zip distribution).
Analytics
- Updated podspec to depend on exact nanopb version.
Realtime Database
- Addressed an issue with
NSDecimalNumber
case that prevented decimals with high precision to be stored correctly in our persistence layer (#4108).
Cloud Firestore
- Added
whereField(_:in:)
andwhereField(_:arrayContainsAny:)
query operators.whereField(_:in:)
finds documents where a specified field’s value is IN a specified array.whereField(_:arrayContainsAny:)
finds documents where a specified field is an array and contains ANY element of a specified array. - Firestore SDK now uses Nanopb rather than the Objective-C Protobuf library for parsing protos. This change does not affect visible behavior of the SDK in any way. While we don't anticipate any issues, please report any issues with network behavior or persistence that you experience.
InstanceID
- Fixed a crash in
checkTokenRefreshPolicyWithIID:
and ensuretokenWithAuthorizedEntity:scope:options:handler
method is refreshing token if token is stale (#4167). - Updated deprecated keychain access level (#4172).
FCM
- Moved reliable message queue database operation off main thread (#4053).
Remote Config
- Minor internal project structure changes.
Performance Monitoring
- Internal SDK enhancements.
Version 6.11.0 - October 22, 2019
- Fix container instantiation timing, IID startup (#4030).
- Open-sourced Firebase pod. This enables
import Firebase
module support for tvOS and macOS (#4021).
Authentication
- Removed usage of a deprecated property on iOS 13 (#4066).
Cloud Firestore
- Fix a race condition that could cause a segmentation fault during client initialization (#4091).
Swift Extensions
- Initial public release.
InstanceID
- Fixed InstanceID initialization timing issue (#4030).
- Added check to see if token and IID are inconsistent (#4025).
- Removed migration logic from document folder to application folder (#4033).
FCM
- Fixed IID and Messaging container instantiation timing issue (#4030).
- Internal cleanup and remove migration logic from document folder to application folder (#4033, #4045).
Remote Config
- Removed existing usage of an internal deprecated API (#3993).
Version 6.10.0 - October 8, 2019
- Transitive GoogleDataTransport dependency incremented to v2.0.0 (#3729).
- Fixed "expiclitlySet" typo (#3853).
A/B Testing
- Fixed an Analyzer issue (#3622).
Analytics
- Fixed potential crash due to debug assertion when Analytics starts.
- Fixed race condition that prevented upload from completing while app was in the background.
Authentication
- Added methods allowing developers to link and reauthenticate with federated providers. (#3971)
Realtime Database
- Fixed an iOS 13 crash that occurred in our WebSocket error handling. (#3950)
Cloud Firestore
- Added an
addSnapshotsInSyncListener()
method toFIRFirestore
that notifies you when all your snapshot listeners are in sync with each other.
Firebase In-App Messaging
- Added support for UIScene-based application lifecycle (#3927).
- Fixed storyboard layout error in Xcode 11 (#3748).
FCM
- Updated Protobuf version to fix warnings in Xcode.
ML Kit for Firebase
- An enhanced version of barcode scanner with better speed and accuracy.
- Breaking change: Updated
ModelManager
with the following API changes:- Added
modelManager(app:)
for a custom Firebase app. Note that download management for custom Firebase apps is currently only supported for the Translate SDK. - Removed the
RemoteModel
andLocalModel
registration APIs. You no longer need to register models before using them. - Added a model download conditions parameter in the
download(_:conditions)
API to make it easier to tie the conditions to specific download requests. You can fully control when to download a model for the first time and when to check for model updates via this API. - Updated
isRemoteModelDownloaded(_:)
toisModelDownloaded(_:)
. - Added
deleteDownloadedModel(_:completion:)
to delete downloaded models to provide you with more flexibility for managing disk space on your user's devices. - Removed
deleteDownloadedTranslateModel(_:completion)
- Updated the
availableTranslateModelsWithApp(app:)
method to adownloadedTranslateModels
property.
- Added
- Breaking change:
RemoteModel
andLocalModel
initializers have been disabled. New subclasses have been added for AutoML, Custom, and Translate SDKs. Use the initializers for those subclasses to create instances of remote and local models.initialConditions
andupdateConditions
are no longer needed for initializing a remote model. You can specify the download condition when callingdownload(_:conditions:)
of theModelManager
. - Added
CustomRemoteModel
andCustomLocalModel
as instantiable subclasses ofRemoteModel
andLocalModel
classes, respectively. - Breaking change: Updated the initializers for
ModelInterpreter
and removed theModelOptions
class. TheModelInterpreter
can be initialized with either aCustomRemoteModel
orCustomLocalModel
, but not both. - Breaking change: Implicit model downloading is no longer
available through the
ModelInterpreter
. You must invoke theModelManager
'sdownload(_:conditions:)
API to downloadCustomRemoteModel
s. Please see the Model Interpreter QuickStart app for an example of how to downloadCustomRemoteModel
s. - Added
AutoMLRemoteModel
andAutoMLLocalModel
as instantiable subclasses ofRemoteModel
andLocalModel
classes, respectively. - Breaking change: Updated the initializers for
VisionOnDeviceAutoMLImageLabelerOptions
. TheVisionOnDeviceAutoMLImageLabelerOptions
can be initialized with either anAutoMLRemoteModel
orAutoMLLocalModel
, but not both. - Breaking change: Implicit model downloading is no longer
available through the
VisionOnDeviceAutoMLImageLabeler
. You must invoke theModelManager
'sdownload(_:conditions:)
API to downloadAutoMLRemoteModel
s. Please see the Vision QuickStart app for an example of how to downloadAutoMLRemoteModel
s. - Breaking change: Updated the initializers for
TranslateRemoteModel
. ATranslateRemoteModel
can only be initialized with aTranslateLanguage
. Download conditions are now passed toModelManager
'sdownload(_:conditions:)
API, and custom Firebase apps are supported throughModelManager
'smodelManager(app:)
API. - Breaking change: On-device text recognition API for iOS no longer supports i386 architecture, but continues to support x86_64, arm64, and armv7 architectures.
Performance Monitoring
- Fixed issue related to crash when app starts on iOS 13 devices. (#3929)
- Internal SDK enhancements.
Remote Config
- Fixed issue for outdated values for deleted config keys. (#3745).
Version 6.9.0 - September 23, 2019
- Transitive GoogleDataTransport dependency incremented to v2.0.0 (#3729).
- Fixed "expiclitlySet" typo (#3853).
Analytics
- Fixed crash when updating identifiers from multiple threads (#2575).
Cloud Firestore
- Fixed a memory access error discovered using the sanitizers in Xcode 11.
FCM
- Mute FCM deprecated warnings with Xcode 11 and min iOS >= 10 (#3857).
ML Kit for Firebase
- Fixed an incompatibility issue between Translate and FirebaseMLCommon.
Remote Config
- Fixed docs issue (#3846).
Version 6.8.1 - September 10, 2019
Dynamic Links
- Removed references to UIWebViewDelegate to comply with App Store Submission warning (#3722).
InstanceID
- Fix private header imports (#3621).
Performance Monitoring
- Enable app start time measurements for ios 12.4.
Cloud Storage
- Fix crash in FIRStorageUploadTask (#3750).
Version 6.8.0 - September 5, 2019
A/B Testing
- Fixed an Analyzer issue (#3622).
Dynamic Links
- Removed references to UIWebView to comply with App Store Submission warning (#3722).
Cloud Firestore
- Transactions now perform exponential backoff before retrying. This means transactions on highly contended documents are more likely to succeed.
- Added a
waitForPendingWrites()
method toFIRFirestore
class which allows users to wait on a promise that resolves when all pending writes are acknowledged by the Firestore backend. - Added a
terminate()
method toFIRFirestore
which terminates the instance, releasing any held resources. Once it completes, you can optionally callclearPersistence()
to wipe persisted Firestore data from disk.
Firebase In-App Messaging
- Undeprecated initializer for FIRInAppMessagingAction so it can be used going forward in custom UI display (#3545).
InstanceID
- Moved two headers from internal to private for Remote Config open sourcing (#3621).
FCM
- Fixed notification open event is not logged when scheduling a local timezone message (#3670, #3638).
- Fixed FirebaseApp.delete() results in unusable Messaging singleton (#3411).
ML Kit for Firebase
- Updated the TensorFlow Lite dependency from
TensorFlowLite
1.13.1 toTensorFlowLiteObjC
1.14.0 for Custom and AutoML SDKs.
Performance Monitoring
- Updated the dependency on Firebase Remote Config.
Remote Config
- Initial Open Source (#3645).
- Community macOS and tvOS support.
- Catalyst build support.
Version 6.7.1 - August 23, 2019
Cloud Firestore
- Fixed a crash that would happen when changing networks or going from online to offline (#3661).
Version 6.7.0 - August 21, 2019
- Added AppKit dependency on macOS and UIKit dependency on iOS and tvOS (#3459).
- Moved core diagnostics log to app launch when core data collection is enabled (#3437).
- Open-sourced the Firebase Core Diagnostics SDK (#3129).
A/B Testing
- Initial Open Source (#3507).
Analytics
- Added support for monitoring launches of new features via Firebase Remote Config.
- Fixed a crash regression when event parameter dictionary is mutated while being enumerated (#3255).
Authentication
- Make sure the first valid auth domain is retrieved (#3493).
- Add assertion for Facebook generic IDP flow (#3208).
- Build for Catalyst (#3549).
Realtime Database
- Fix Catalyst Build issue (#3512).
- The SDK adds support for the Firebase Database Emulator. To connect
to the emulator, specify "http://
/" as your Database URL (via Database.database(url:)
). If you refer to your emulator host by IP rather than by domain name, you may also need to specify a namespace ("http://<emulator_host>/?ns=<namespace>"
) (#3491).
Dynamic Links
- Minor internal refactoring.
Cloud Firestore
- Internal improvements.
FCM
- Cleaned up documents, unused macros, and folders (#3490, #3537, #3556, #3498).
- Updated the header path to pod repo relative (#3527).
- Fix singleton functionality after a FirebaseApp is deleted and recreated (#3411).
Remote Config
- Fixed a crash seen by some users. (#3508).
- Internal changes and stability improvements.
Version 6.6.0 - August 6, 2019
- Added AppKit dependency on macOS and UIKit dependency on iOS and tvOS (#3459).
- Added support for Firebase Segmentation (#3430).
- Moved core diagnostics log to app launch when core data collection is enabled (#3437).
- Open-sourced the Firebase Core Diagnostics SDK (#3129).
Analytics
- Added automatic logging of app being sent to the background.
- Added support for session-scoped audiences.
- Cleaned up the event parameter names displayed in the debug logs.
Authentication
- Fixed an issue where unlinking an email auth provider raised an incorrect error stating the account was not linked to an email auth provider (#3405).
- Renamed internal Keychain classes (#3473).
Dynamic Links
- Updated to maintain compatibility with Firebase Core in 6.6.0.
Cloud Firestore
- Transactions are now more flexible. Some sequences of operations that were previously incorrectly disallowed are now allowed. For example, after reading a document that doesn't exist, you can now set it multiple times successfully in a transaction.
InstanceID
- Fixed a crash that could occur if InstanceID was shut down when fetching a new instance ID (#3439).
FCM
- Fix hang when token is not available before topic subscription and unsubscription (#3438).
Performance Monitoring
- Fixed an issue where
NSURLConnection
-based network requests made from KVO-dNSOperation
s do not complete. - Fixed issues where some UIKit methods could be called on the main thread.
Version 6.5.0 - July 18, 2019
-
FirebaseOptions.appGroupID
property added to configure the App Group identifier required to share data between the application and the application extensions (#3293).
Analytics
- Changed ordering of events during startup. Analytics usage is not affected by this change.
Authentication
- Added a new client error
MISSING_CLIENT_IDENTIFIER
(#3341).
Dynamic Links
- Removed a call to a deprecated logging method (#3333).
Cloud Firestore
- Fixed an issue where query results were temporarily missing documents that previously had not matched but had been updated to now match the query (firebase/firebase-android-sdk#155).
- Fixed an internal assertion that was triggered when an update
with a
FieldValue.serverTimestamp()
and an update with aFieldValue.increment()
were pending for the same document. - Fixed the
oldIndex
andnewIndex
values inDocumentChange
to actually beNSNotFound
when documents are added or removed, respectively (#3298). - Failed transactions now return the failure from the last attempt,
instead of
ABORTED
.
Firebase In-App Messaging
- Fixed issue with messages triggered on app launch not displaying (#3237).
- Fixed bug with body text color for card messages (#3286).
InstanceID
- Removed a call to a deprecated logging method (#3333).
Remote Config
- Fixed a crash seen by some users when initializing Remote Config with Firebase Performance also installed (#3344).
Cloud Storage
- Ensure that users don't accidentally invoke
Storage()
instead ofStorage.storage()
. If your code calls the constructor of Storage directly, we will throw an assertion failure instead of crashing the process later as the instance is used (#3282).
Version 6.4.0 - July 9, 2019
Analytics
- Fixed potential crash if the event parameters dictionary is mutated after logging an event (#3255).
Authentication
- Expose
secret
of OAuth credential in public header (#3089). - Fix a keychain issue where API key is incorrectly set (#3239).
Cloud Firestore
- Fixed certificate loading for non-CocoaPods builds that may not include bundle identifiers in their frameworks or apps (#3184).
InstanceID
- Fixed an issue where fetching an instance ID wouldn't invoke the callback handler if the instance ID had not changed. (#3229).
FCM
- Fix Xcode 11 tvOS build issue (#3216).
ML Kit for Firebase
- Fixed the known issue of
VisionObjectDetector
where in streaming mode, if the category of an object changes, the detector assigns it a new tracking ID. - Improved detecting small objects with
VisionObjectDetector
. - Breaking change: Removed
entityID
andlabel
APIs fromVisionObject
. - Natural Language features now use external Protobuf and Google Toolbox for Mac libraries, resulting in reduced binary size.
- Improved error telemetry for Translate model downloading.
- Improved handling of invalid inputs in SmartReply.
Performance Monitoring
- Fixes an iOS 13 beta crash caused by a race condition with Remote Config.
Remote Config
- Improved shared instance initialization sequence during
FirebaseApp.configure()
.
Cloud Storage
- Added
StorageReference.list()
andStorageReference.listAll()
, which allows developers to list the files and folders under the given StorageReference.
Version 6.3.0 - June 19, 2019
Analytics
- Fixed issue with sessions not starting occasionally.
- Fixed issue with update_with_analytics event parameter having an incorrect value.
- Fixed issue with first_open_after_install user property having an incorrect value.
- Updated SQLite usage to pass additional flag to sqlite3_open_v2 and call sqlite3_prepare_v3 for iOS 12+.
Authentication
- Fixed line limits and linter warnings in public documentation (#3139).
Cloud Firestore
- Added
clearPersistence()
, which clears the persistent storage including pending writes and cached documents. This is intended to help write reliable tests (#449).
Firebase In-App Messaging
- Simplified startup by only scheduling server contact if logs are present (#3101).
InstanceID
FCM
- Added macOS support for Messaging. You can now send push notifications to your mac app with Firebase Messaging. (#2880).
Performance Monitoring
- Make Firebase Performance work with the recent version of Remote Config.
- Fix the bug where dataCollectionEnabled flag was not honored for out of the box metrics.
Remote Config
- Async initialization with new API for ensuring initialization completed with completion handler.
- Support for multiple active instances of Remote Config in the same app (Analytics only supported with default Firebase app instance).
- New fetchAndActivate API to perform both fetch and activation upon a successful fetch in a single API call with async completion.
- New 'jsonValue' property in the FIRRemoteConfigValue class for reading value of a param as a JSON value.
- New properties for setting minimumFetchInterval and fetch timeout in FIRRemoteConfigSettings class.
- [FIRRemoteConfigSettings initWithDeveloperModeEnabled] is now deprecated. Use minimumFetchInterval or call [FIRRemoteConfig fetchWithExpirationDuration:] to force a fetch to the Remote Config backend.
- Async activate API with completion handler.
- All Remote Config API which take an explicit namespace parameter are deprecated.
Version 6.2.0 - June 4, 2019
Authentication
- Fixed an issue where users could not link email providers via email links. (#3030).
Firebase In-App Messaging
- Added support for card in-app messages (#2947).
- Added direct triggering (via FIAM SDK) of in-app messages (#3081).
Cloud Firestore
- Firestore should now recover its connection to the server more quickly after being on a network suffering from total packet loss (#2987).
- Changed gRPC-C++ dependency to 0.0.9 which adds support for using it concurrently with the Objective-C gRPC CocoaPod. This fixes certificate errors you might encounter when trying to use Firestore and other Google Cloud Objective-C APIs in the same project.
InstanceID
- Fixed a crash in token fetching. Removed debug assertion that is only for develop build. (#3018).
ML Kit for Firebase
- Internal improvements and refactored code.
FCM
- Disable data protection when opening the Rmq2PersistentStore. (#2963).
Version 6.1.0 - May 21, 2019
- Allowed
FirebaseApp
name to accept any alpha-numeric character instead of only ASCII (#2609).
Analytics
- Fixed issue with custom app events not being passed to other Firebase SDKs.
Authentication
- Added support of web.app as an auth domain. (#2959).
- Fixed an issue where the return type of
getStoredUserForAccessGroup:error:
is nonnull. (#2879).
Cloud Firestore
- Disabling garbage collection now avoids even scheduling the collection process. This can be used to prevent crashes in the background when using NSFileProtectionComplete. Note that Firestore does not support operating in this mode--nearly all API calls will cause crashes while file protection is enabled. This change just prevents a crash when Firestore is idle. (#2846).
Firebase In-App Messaging
- We fixed an issue with messages not showing from custom analytics event trigger (#2981).
- We fixed a crash from sending analytics events with no instance ID (#2988).
InstanceID
- Fixed a keychain migration crash. (#2731).
- Fixed a race condition where checkin was deleted before writing during app start, causing notifications to not be delivered correctly. (#2438).
- Remove reflection call to get checkin info from Firebase Messaging. (#2825).
ML Kit for Firebase
- Fixed possible out-of-memory error: Updated
Translator
to release memory for the instance once all references have been removed. - Renamed Swift values of
TranslateLanguage
from uppercase to lowercase, e.g. fromTranslateLanguage.EN
toTranslateLanguage.en
.
FCM
- Remove reflection call to get checkin info from Firebase Messaging and calling the private API directly. (#2825).
- Fix race condition checkin is deleted before writing during app start. This cleans up the corrupted checkin which causes notifications failed to deliver. (#2438).
Version 6.0.0 - May 7, 2019
- Removed
FIRAnalyticsConfiguration
APIs. Use the same APIs directly on theFirebaseAnalytics
class. (#2728). - Added support for CocoaPods 1.7.x
:generate_multiple_pod_projects
feature. (#2751). - Removed runtime warning for missing Analytics in favor of one at build time. (#2734).
Analytics
- Added support for programmatically indicating that a user’s future Analytics data should not be used for personalized advertising.
A/B Testing
- Removed
FIR
prefixes from Swift APIs to match the rest of the Firebase SDKs. (#1779).
Authentication
- Added support for single sign on. (#2684).
- Deprecated
reauthenticateAndRetrieveDataWithCredential:completion:
,signInAndRetrieveDataWithCredential:completion:
,linkAndRetrieveDataWithCredential:completion:
,fetchProvidersForEmail:completion:
. (#2723). - Removed pendingToken from public API. (#2676).
-
GULAppDelegateSwizzler
is used for the app delegate swizzling. (#2591).
Realtime Database
- Removed the deprecated
childByAppendingPath
API. (#2763).
Crash Reporting
- FirebaseCrash was removed from the Firebase pod. It's recommended to upgrade to Firebase Crashlytics.
Dynamic Links
- FirebaseAnalytics is no longer a hard dependency in the
DynamicLinks pod. If you were installing Dynamic Links via
pod 'Firebase/DynamicLinks'
, addpod 'Firebase/Analytics'
to the Podfile to maintain full Dynamic Links functionality. If you havepod 'Firebase/Core'
in the Podfile, no change is necessary. (#2738). - Removed deprecated APIs in FDLURLComponents. (#2768).
Cloud Firestore
- You can now query across all collections in your database with a
given collection ID using the
Firestore.collectionGroup()
method. - Added community support for tvOS.
Cloud Functions
- Updated to depend on the latest FirebaseCore SDK.
Firebase In-App Messaging
- Updated to depend on the latest FirebaseCore SDK.
InstanceID
- Remove deprecated
token
method. UseinstanceIDWithHandler:
instead. (#2741). - Send
firebaseUserAgent
with a register request. (#2679).
Invites
- FirebaseInvites was removed from the Firebase pod. Please see this document for more information on how to replace FirebaseInvites using Firebase DynamicLinks in your project.
ML Kit for Firebase
- Added Translate support for Natural Language.
- Added support for on-device AutoML Image Labeling using image classification models trained by AutoML on custom images.
- Added support for on-device Object Detection and Tracking.
- Added support for initiating the download of a remote model, monitoring download progress, and receiving notifications. To learn more, read ML Kit for Firebase.
- Upgraded TensorFlowLite dependency from 1.12.0 to 1.13.1.
FCM
- Removed
useMessagingDelegateForDirectChannel
property. All direct channels (non-APNS) messages will be handled inFIRMessagingDelegate messaging:didReceiveMessage:
. (#2711). - Removed deprecated API to connect direct channel. Use
shouldEstablishDirectChannel
property instead. (#2717). -
GULAppDelegateSwizzler
is used for the app delegate swizzling. (#2683).
Performance Monitoring
- Removed the deprecated counter API. Use metrics API going forward.
Remote Config
- FirebaseAnalytics is no longer a hard dependency in the
RemoteConfig pod. If you were installing Remote Config via
pod 'Firebase/RemoteConfig'
, addpod 'Firebase/Analytics'
to the Podfile to maintain full RemoteConfig functionality. If you havepod 'Firebase/Core'
in the Podfile, no change is necessary. No major changes to functionality.
Version 5.20.2 - April 10, 2019
Analytics
- Fixed an issue with
setAnalyticsCollectionEnabled(_:)
not persisting properly between app launches.
Version 5.20.1 - March 30, 2019
Cloud Firestore
- Fixed a use-after-free bug that could be observed when using snapshot listeners on temporary document references (#2682).
Version 5.20.0 - March 29, 2019
- Avoid using NSRegularExpression in FIRApp.
- Improve error meessage for invalid app names. (#2614).
- FIRApp thread safety fixes. (#2639).
Authentication
- Added support for new error code
ERROR_INVALID_PROVIDER_ID
. (#2629).
Cloud Firestore
- Added community support for macOS (#434).
- Fixed the way gRPC certificates are loaded on macOS (#2604).
Dynamic Links
- Fixed an issue where 'matchesShortLinkFormat' was returning true for certain FDL long links. (#2563).
InstanceID
- We fixed a bug where handlers of
instanceIDWithHandler:
weren't responding. (#2445). - We fixed a race condition where the token kept being refreshed at app start. (#2438).
Version 5.19.0 - March 19, 2019
- Allow Bundle IDs that have a valid prefix to enable richer extension support. (#2515).
- Deprecated
FIRAnalyticsConfiguration
API in favor of new methods on the Analytics SDK. Please call the new APIs directly: Enable/disable Analytics withAnalytics.setAnalyticsCollectionEnabled(_)
and modify the session timeout interval withAnalytics.setSessionTimeoutInterval(_)
.
Analytics
- Added new
setAnalyticsCollectionEnabled(_)
andsetSessionTimeoutInterval(_)
APIs. These should be used in place of theAnalyticsConfiguration
APIs that were deprecated in FirebaseCore (#2516).
Authentication
- Deprecated Microsoft and Yahoo OAuth Provider IDs. (#2517).
- Fixed an issue where an exception was thrown when linking OAuth credentials. (#2521).
- Fixed an issue where a wrong error was thrown when handling error
with
FEDERATED_USER_ID_ALREADY_LINKED
. (#2522).
Cloud Firestore
- Added
FieldValue.increment()
, which can be used inupdateData(_:)
andsetData(_:merge:)
to increment or decrement numeric field values safely without transactions. - Improved performance when querying over documents that contain subcollections (#2466).
- Prepared the persistence layer to support collection group queries. While this feature is not yet available, all schema changes are included in this release.
Dynamic Links
- Fixed an issue with certain Analytics attribution parameters not being recorded on an app install. (#2462).
Firebase In-App Messaging
- Fixed a crash that occurred when integrating Firebase In-App Messaging into NativeScript apps.
FCM
- Added community support for tvOS. (#2428).
InstanceID
- Community support for tvOS. (#2428).
- Adding Firebase info to checkin. (#2509).
- Fixed a crash in FIRInstanceIDCheckinService (#2548).
ML Kit for Firebase
- Added Smart Reply support for Natural Language. To learn more, read ML Kit for Firebase.
- Breaking change: Renamed model downloading APIs in
FirebaseMLCommon (no change to functionality):
- Renamed
CloudModelSource
toRemoteModel
andLocalModelSource
toLocalModel
. - Updated
ModelManager
methods to reflect the renaming of the model classes. - Renamed the following properties in
ModelDownloadConditions
:isWiFiRequired
is nowallowsCellularAccess
andcanDownloadInBackground
is nowallowsBackgroundDownloading
.
- Renamed
Performance Monitoring
Realtime Database
- Fixed crash in FSRWebSocket (#2485).
Cloud Storage
- StorageReference.putFile() now correctly propagates error if file to upload does not exist (#2458, #2350).
Version 5.18.2 - March 7, 2019
- Fixed an incomplete modulemap in some frameworks which could lead to linker errors.
Version 5.18.1 - March 7, 2019
InstanceID
- Properly pushed the open-source version of Firebase InstanceID.
(#186).
To get this fix, remove the
Pods
directory or runpod deintegrate
beforepod update
. Also see #2486.
Version 5.18.0 - March 5, 2019
- Deprecated
setMinimumSessionInterval
onAnalyticsConfiguration
. (#2305).
Analytics
- Fixed an issue with background tasks not terminating when the configuration isn't expired even when there isn't any data to upload.
Authentication
- Add support for Generic IDP. (#2405).
Cloud Firestore
- Internal improvements to the SDK. These changes do not have any impact on developers using Cloud Firestore.
Cloud Functions
- Changed the default timeout for callable functions to 70 seconds (#2329).
- Added a method to change the timeout for a callable (#2329).
Dynamic Links
- Added return call validation for
sysctlbyname
. (#2394).
Firebase In-App Messaging
- Allow developers to programmatically register a delegate for updates on in-app engagement (impression, click, display errors). (#2354).
InstanceID
- Open Source Firebase InstanceID. (#186).
FCM
- Replaced
NSUserDefaults
withGULUserDefaults
to avoid potential crashes. (#2443).
Version 5.17.0 - February 21, 2019
Analytics
- Sessions start immediately when an engagement occurs.
- Added support for extending sessions while app is running in the background.
Cloud Firestore
- Internal improvements to the SDK. These changes do not have any impact on developers using Cloud Firestore.
InstanceID
- InstanceID now updates keychain access control whenever a new keychain is added, to make sure keychain access won't be blocked when device is locked. (#1399).
- Fixed an issue where push notification is not working on release builds. (#2365).
FCM
- Internal code cleanup to improve better unit testing. (#2250).
Version 5.16.0 - January 22, 2019
- The minimum supported Xcode version is now 9.4.1.
- Internal change to add a
registerInternalLibrary
API. Other Firebase libraries can register withFirebaseCore
instead ofFirebaseCore
needing all of its clients' versions built in. Firebase 5.16.0 makes this transition forFirebaseAnalytics
,FirebaseAuth
,FirebaseDatabase
,FirebaseDynamicLinks
,FirebaseFirestore
,FirebaseFunctions
,FirebaseInstanceID
,FirebaseMessaging
, andFirebaseStorage
. This change has no impact on Firebase developers.
InstanceID
- Moved all keychain write operations off the main thread (#1399).
- Made keychain operations asynchronous where possible (given the current APIs).
- Updated the SDK to avoid redundant keychain operations when previously queried and cached.
Cloud Firestore
- Breaking change: The
areTimestampsInSnapshotsEnabled
setting is now enabled by default. Timestamp fields that read from aFIRDocumentSnapshot
are now returned asFIRTimestamp
objects instead ofNSDate
objects. Update any code that expects to receive aNSDate
object. See the reference documentation for more details. - Breaking change:
FIRTransaction.getDocument()
has been changed to return a non-nil FIRDocumentSnapshot with exists equal to false if the document does not exist (instead of returning a nilFIRDocumentSnapshot
). Code that includesif (snapshot) { ... }
must be changed toif (snapshot.exists) { ... }
. - Fixed a crash that could happen when the app is shut down after a write has been sent to the server but before it has been received on a listener (#2237).
- Firestore no longer bundles a copy of the gRPC certificates, now
that the gRPC-C++ CocoaPod includes them. CocoaPods users should be updated
automatically. Carthage users should follow the updated
instructions
to get
gRPCCertificates.bundle
from the correct location.
ML Kit for Firebase
- Added support for Natural Language and Language Identification. To learn more, read ML Kit for Firebase.
- Breaking change: Unified and enhanced on-device and cloud image-labeling API.
- Added the
ModelManager
class for downloading and managing custom models from the cloud. - Added the
CloudModelSource
andLocalModelSource
classes for defining and registering custom cloud and local models. These classes were previously defined inFirebaseMLModelInterpreter
. - Defined and registered
CloudModelSource
and moved theLocalModelSource
custom models toFirebaseMLCommon
. To use the new API, import theFirebaseMLCommon
module. - Upgraded the TensorFlowLite dependency from 1.10.1 to 1.12.0.
Version 5.15.0 - December 17, 2018
Authentication
- Add support for Game Center sign-in (#2127).
Cloud Firestore
- Offline persistence now properly records schema downgrades. This is a forward-looking change that allows all subsequent versions to safely downgrade to this version. Some other versions might be safe to downgrade to, if you can determine there haven't been any schema migrations between them. For example, downgrading from v0.16.1 to v0.15.0 is safe because there have been no schema changes between these releases.
- Fixed an issue where gRPC would crash if shut down multiple times (#2146).
Performance Monitoring
- Resolved an issue that caused crashes in
FPRScreenTraceTracker
(#1986). - Fixed duplicate symbols issue with
NearbyMessages
CocoaPod (#2094).
Version 5.14.0 - December 4, 2018
Analytics
- Updated names for certain internal events and parameters.
- The FirebaseAnalytics CocoaPod corrects its dependency on the
GoogleAppMeasurement
CocoaPod (#2151).
Authentication
- Add support for custom FDL domain links (#2121).
Dynamic Links
- Introduced a new
componentsWithLink:domainURIPrefix:
and deprecated the existingcomponentsWithLink:domain:
(#1962, #2017, #2078, #2097, #2112).
Cloud Firestore
- Added a garbage collection process to on-disk persistence that
removes older documents. This is enabled by default, and the SDK will attempt
to periodically clean up older, unused documents once the on-disk cache passes
a threshold size (default: 100 MB). This threshold can be configured by
setting
FIRFirestoreSettings.cacheSizeBytes
. It must be set to a minimum of 1 MB. The garbage collection process can be disabled entirely by settingFIRFirestoreSettings.cacheSizeBytes
tokFIRFirestoreCacheSizeUnlimited
.
Version 5.13.0 - November 20, 2018
Cloud Firestore
- Changed how the SDK handles locally updated documents while
syncing those updates with Cloud Firestore servers. This can lead to slight
behavior changes and may affect the
SnapshotMetadata.hasPendingWrites
metadata flag. - Eliminated superfluous update events for locally cached documents that are known to lag behind the server version. Instead, the SDK buffers these events until the client has caught up with the server.
- Moved from Objective-C gRPC framework to gRPC C++. If you're manually tracking dependencies, the gRPC, gRPC-ProtoRPC, and gRPC-RxLibrary frameworks have been replaced with gRPC-C++. (#1968)
Dynamic Links
- Delete deprecated source files. (#2038)
ML Kit for Firebase
- Face contour detection will only return contours for the most prominent face.
- The face-tracking feature is disabled for contour-only detection
in
.fast
mode. - Resolved open issues with the FirebaseMLModelInterpreter SDK.
Version 5.12.0 - November 6, 2018
- Fixed static analysis warning for improper nil comparison. (#2034)
- Assign the default app before posting notifications. (#2024)
- Remove unnecessary notification flag. (#1993)
- Wrap diagnostics notification in collection flag check. (#1979)
Authentication
- Restore
SafariServices
framework dependency. (#2002)
Performance Monitoring
- Resolved open issues in the Performance Monitoring SDK.
Cloud Storage
- Storage operations can now be scheduled and controlled from any thread (#1302, #1388).
- Fixed an issue that prevented uploading of files with semicolons in the filename.
Cloud Firestore
- Fixed compilation in C99 and C++11 modes without GNU extensions.
Version 5.11.0 - October 24, 2018
Analytics
- Added support for dynamic audience evaluation.
Cloud Firestore
- Improvements to the SDK.
Dynamic Links
- Updated the SDK to use c99-compatible
typeof()
operator. (#1982)
InstanceID
FCM
- Fixed an issue where messages failed to be delivered to the recipient's time zone. (#1946)
Performance Monitoring
- You can now deep dive into samples of traces and network requests, or Sessions, in the Firebase console.
- The Performance Monitoring SDK now adds Remote Config as a dependency.
Remote Config
- Internal updates to support Performance Monitoring.
Version 5.10.0 - October 9, 2018
Cloud Firestore
- Some SDK errors that represent common mistakes (such as permission denied or a missing index) will automatically be logged as a warning in addition to being surfaced via the API.
FCM
- Now you can access the message ID of
FIRMessagingRemoteMessage
object. (#1861) - Add a new boolean value
useFIRMessagingDelegateForDirectMessageDelivery
if you want all your direct channel data messages to be delivered inFIRMessagingDelegate
. If you don't use the new flag, for iOS 10 and above, direct channel data messages are delivered inFIRMessagingDelegate messaging:didReceiveMessage:;
for iOS 9 and below, direct channel data messages are delivered in Apple'sAppDelegate application:didReceiveRemoteNotification:fetchCompletionHandler:
. So, if you set theuseFIRMessagingDelegateForDirectMessageDelivery
to true, direct channel data messages are delivered inFIRMessagingDelegate
across all iOS versions. (#1875) - Fixed an issue where callback was not triggered with invalid topic names. (#1880)
ML Kit for Firebase
- Added support for face contour detection.
- Added synchronous face detection API
resultsInImage:error:
. - Breaking change: Renamed the asynchronous face detection API
from
detectInImage:completion:
toprocessImage:completion:
. - Breaking change: Renamed some properties and enums in
VisionFaceDetectorOptions
. - Breaking change: Removed the constant
VisionFaceDetectionMinSize
inVisionFaceDetectorOptions
. - Upgraded TensorFlowLite dependency from 0.1.7 to 1.10.1.
Remote Config
- Fixed open bugs in the Remote Config SDK.
Version 5.9.0 - September 25, 2018
Analytics
- Fixed duplicate nanopb symbols. (#1832)
Dynamic Links
- Dynamic Links is now open source and delivered as a source pod. (#1842)
Firebase In-App Messaging
- Released a new open source SDK called
FirebaseInAppMessagingDisplay
that separates UI functionality out ofFirebaseInAppMessaging
, enabling custom UI implementations. - Respect fetch between wait time returned from API responses.
InstanceID
- Fixed a crash caused by
NSUserDefaults
being called on background thread.
Cloud Firestore
- Fixed an issue where the first
get()
call made after being offline could incorrectly return cached data without attempting to reach the backend. - Changed
get()
to only make 1 attempt to reach the backend before returning cached data, potentially reducing delays while offline. Previously, it would make 2 attempts, to work around a backend bug. - Fixed an issue that caused us to drop empty objects from calls to
setData(..., merge:true)
.
Version 5.8.1 - September 19, 2018
Version 5.8.0 - September 12, 2018
- Resolved most of the Xcode Analyzer issues in Firebase sources.
Analytics
- Resolved open issues with the Analytics SDK.
Cloud Firestore
- Fixed an issue where the first
get()
call made after being offline could incorrectly return cached data without attempting to reach the backend. - Changed
get()
to only make 1 attempt to reach the backend before returning cached data, potentially reducing delays while offline. Previously, it would make 2 attempts, to work around a backend bug.
Version 5.7.0 - August 28, 2018
- Clarified wording in
FirebaseAnalytics not available
log message. (#1653)
FCM
- Ensure
NSUserDefaults
is persisted properly before app close. (#1646) - Internal code cleanup. (#1666)
Cloud Storage
- Fixed potential
EXC_BAD_ACCESS
violation in the internal logic for processing finished downloads. (#1565, #1747)
Cloud Firestore
- Fixed an issue where changes to custom authentication claims did not take effect until you did a full sign-out and sign-in. (#1499)
- Improved how Firestore handles idle queries to reduce the cost of re-listening within 30 minutes.
AdMob
- Native ads:
GADNativeAppInstallAd
,GADNativeContentAd
, and associated APIs are deprecated in favor ofGADUnifiedNativeAd
. See the Native Ads Advanced Unified guide for further instructions on using the new APIs. - Native Ads: Added the "Mute This Ad" feature.
- Native Ads: Fixed a bug where AdChoices view was removed when reusing ad views in collection views.
- Added the
requestConfiguration
property toGADMobileAds
, which can be used to specifymaxAdContentRating
andtagForUserOfConsent
parameters for all ad requests. Mediation: Added
maxAdContentRating
andunderAgeOfConsent
properties toGADMediationAdRequest
.
Version 5.6.0 - August 15, 2018
- The minimum supported Xcode version is now 9.2.
Analytics
- Fixed memory leaks. (#1636)
Crash Reporting
- Updates to the SDK documentation to reflect deprecation status.
Cloud Firestore
- Fixed an issue where
get(source:.Cache
) could throw an "unrecognized selector" error if the SDK has previously cached the non-existence of the document. (#1632)
Firebase In-App Messaging
- Firebase In-App Messaging is now available in the Firebase SDK for iOS. For more information, see the documentation.
InstanceID
- Fixed an issue with checkin not caching properly on app start. (#1561)
Performance Monitoring
- Reduced bandwidth consumption used by the SDK.
Version 5.5.0 - August 2, 2018
- Added a global data collection flag to use when individual product flags are not set. (#1583)
- Renamed the
FirebaseNanoPB
framework toMeasurementNanoPB
. If you use the framework SDK zip, make sure to remove theFirebaseNanoPB
framework folder to prevent duplicate symbols.
Analytics
- Added currency code validation for CURRENCY parameter and numeric value of pre-defined currency-related events.
- Resolved
NSUserDefaults
crashes caused by notifications to the system whenever the values were changed and UI updates initiated by the system in the background. (#1317 and #431)
Authentication
- Adds
FIRAuthErrorCodeMalformedJWT
, which is raised on JWT token parsing failures during auth operations (#1436).
Crash Reporting
- Added conformance to Firebase global data collection switch.
Dynamic Links
- Resolved open issues with Dynamic Links.
InstanceID
- Added support for global Firebase data collection flag. (#1219)
- Improved message tracking sent by server API.
- Fixed an issue with InstanceID not properly compiling in app extensions.
FCM
- Added support for global Firebase data collection flag. (#1219)
- Fixed an issue where FCM wouldn't properly unswizzle swizzled delegate methods. (#1481)
- Resolved an issue with FCM not compiling inside app extensions. (#1503)
Performance Monitoring
- Resolved SDK crashes.
- Added dependency on open-source version of the
GoogleUtilities/Swizzler
library. - Added conformance to Firebase global data collection switch.
Remote Config
- Fixed a memory leak bug. (#488)
Cloud Firestore
- Added
FieldValue.arrayUnion()
andFieldValue.arrayRemove()
to atomically add and remove elements from an array field in a document. - Added
whereField(arrayContains:)
query filter to find documents where an array field contains a specific element. - Fixed compilation with older Xcode versions (#1517).
- Fixed a performance issue where large write batches with hundreds of changes would take a long time to read and write and consume excessive memory. Large write batches should now see no penalty.
- Fixed a performance issue where adding a listener for a large collection (thousands of documents) would take a long time in offline mode (#1477).
- Fixed an issue that could cause deleted documents to momentarily re-appear in the results of a listener, causing a flicker. (#1591)
ML Kit for Firebase
- This is a breaking change. Unified and enhanced on-device and cloud text recognition API.
- This is a breaking change. Enhanced cloud document scanning API.
Version 5.4.1 - July 20, 2018
Cloud Firestore
- Fixed an issue where queries returned fewer results than they should, caused by documents that were cached as deleted when they should not have been. (#1548).
Version 5.4.0 - June 29, 2018
Authentication
- Resolved an issue with parsing JWT date timestamps correctly.
- Fixed an issue where anonymous accounts weren't correctly promoted to non-anonymous when linked with passwordless email auth accounts.
- Fixed a data race issue caught by the sanitizer.
Cloud Firestore
- Internal improvements.
Cloud Functions for Firebase Client SDK
- Add a constructor to set the region.
- Add a method to set a Cloud Functions emulator origin to use, for testing.
FCM
- Client now properly suspends topic requests when a token is not available and resumes the topic operation when the token is generated.
- Corrected the deprecation warning when subscribing to or unsubscribing from an invalid topic.
- Removed unused heartbeat timestamp tracking.
Realtime Database
- Fixed undefined behavior sanitizer issues.
Version 5.3.0 - Jun 20, 2018
- Fixed a thread sanitizer error (#1390).
- Updated FirebaseCore.podspec so that it works with cocoapods-packager. (#1378).
InstanceID
- Ensure the checkin and tokens are refreshed if the Firebase project changed.
- Resolved an issue that required checkin to be turned off when the
FCM
autoInitEnabled
flag is off.
Cloud Firestore
-
setData
methods takingmergeFields:
arguments can now delete fields usingFieldValue.delete()
. - Firestore will now recover from auth token expiration when the system clock is wrong.
- Fixed compilation with older Xcode versions (#1366).
ML Kit for Firebase
-
isIdleRequired
inModelDownloadConditions
has been renamed tocanDownloadInBackground
. Its initializer has also been renamed accordingly. - Direct initialization of certain detectors and model interpreter is no longer allowed. Related class methods should be used instead.
- Fixed memory leaks in continuous detection of face, text, barcode, or label.
- Fixed a crash that returned the following error: "Terminating app
due to uncaught exception
NSGenericException
, reason: 'Completion handler blocks are not supported in background sessions. Use a delegate instead.'" - Fixed
VisonBarcodeDetector
signalSIGABRT
while scanning certain QR codes. - Keeping a strong reference of
VisionTextDetector
during detection is no longer necessary.
Performance Monitoring
- Resolved issue with crashing related to screen traces.
- Improved SDK startup time.
- Resolved
AVAssetDownloadTask
crashes.
Version 5.2.0 - Jun 6, 2018
Authentication
- Restore 4.x level of support for extensions.
Instance ID
- Added a new API to fetch InstanceID and Token with a completion handler. The completion handler returns a FIRInstanceIDResult with an instanceID and token properties.
- Deprecated the token method.
- Added support to log a new customized label provided by developer.
Cloud Firestore
- Internal improvements.
FCM
- Added a warning message when subscribing to topics with incorrect name formats.
- Silenced a deprecation warning in FIRMessaging.
Version 5.1.0 - May 29, 2018
Analytics
- Added subscription parameter for autorenewable and non-renewing subscription In-app Purchases.
- Minor bug fixes.
Realtime Database
- Minor bug fixes.
Dynamic Links
- Fixed issue where opens were double counted when using unique match.
Cloud Firestore
- Fixed an issue where FirestoreSettings would accept a concurrent dispatch queue, but this configuration would trigger an assertion failure. Passing a concurrent dispatch queue should now work correctly (#988).
FCM
- Cleaned up some deprecation warnings.
Version 5.0.1 - May 15, 2018
Firebase v5.0.1 contains bugfixes for the Firebase pod and ZIP file.
- Duplicate symbol issue when building with
-all_load
. - Empty
modulemap
for SDKs in the ZIP file.
Version 5.0.0 - May 8, 2018
Firebase v5.0.0 removes support for iOS 7 and building with Xcode 7. Please use
Xcode 8.0 or later and upgrade your app's minimum target to iOS 8 or above, for
example by adding "platform :ios, '8.0'
to your Podfile
. To see the
breakdown of worldwide iOS versions, go to
Apple's App Store support page.
Changes related to CocoaPods:
- Ensure
Firebase/Core
is included in your Podfile. - The minimum CocoaPods version required is now 1.4.0.
- The Authentication, Realtime Database, Core, Cloud Firestore, Cloud Functions for Firebase Client SDK, FCM, and Cloud Storage SDKs are now Source Pods. This means you can directly see the source code in your project and see the full call stack while debugging.
Firebase Core
- Removed deprecated methods.
- Removed UIKit import from FIRApp.h.
A/B Testing
- Firebase A/B Testing is now available for managing your experiments. For more information, see the documentation.
Analytics
- Minor bug fixes.
Authentication
- Added support for testing phone number authentication. For more information, see Test with whitelisted phone numbers.
- Added
FIRAuthDataResultCallback
, which returns anAuthDataResult
object instead of aUser
object after sign-in. This replacesFIRAuthResultCallback
for the following methods:signInWithEmail:
,signInwithCredential:
,signInAnonymouslyWithCompletion:
, andcreateUserWithEmail:
. - The following methods have been deprecated:
signAndRetrieveDataWithEmail:
,signInAndRetrieveDataWithCredential:
, andsignInAndRetrieveDataAnonymouslyWithCompletion:
Crash Reporting
- The Crash Reporting APIs are now deprecated. New projects should use the Crashlytics APIs.
Realtime Database
- Minor bug fixes.
Dynamic Links
- The shared instance of
FIRDynamicLinks
is no longer nullable. - Removed deprecated
FIRDynamicLinkMatchConfidence
property. This is replaced byFIRDLMatchType
.
Instance ID
- Removed deprecated method
setAPNSToken:type
defined in FIRInstanceID, please usesetAPNSToken:type
defined in FIRMessaging instead. - Removed deprecated enum
FIRInstanceIDAPNSTokenType
defined in FIRInstanceID, please useFIRMessagingAPNSTokenType
defined in FIRMessaging instead. - Resolved an issue that FCM scheduled messages were not tracked successfully.
FCM
- Removed deprecated delegate property
remoteMessageDelegate
, usedelegate
instead. - Removed deprecated method
messaging:didRefreshRegistrationToken:
defined inFIRMessagingDelegate
protocol, usemessaging:didReceiveRegistrationToken:
instead. - Removed deprecated method
applicationReceivedRemoteMessage:
defined inFIRMessagingDelegate
protocol, usemessaging:didReceiveMessage:
instead. - Resolved an issue that data messages were not tracked successfully.
Performance Monitoring
- Performance Monitoring has exited beta and is now generally available.
- Added automatic screen traces to report on screen rendering performance.
- Added APIs for setting, incrementing, and getting metrics.
- Deprecated the API to increment and decrement counters, use the new metrics API instead.
Remote Config
- Changed the designated initializer for
FIRRemoteConfigSettings
to return a nonnullFIRRemoteConfigSettings
object.
Cloud Storage
- Removed
downloadURLs
property on StorageMetadata. UseStorageReference.downloadURL(completion:)
to obtain a current download URL. - The maxOperationRetryTime timeout now applies to calls to StorageReference.getMetadata(completion:) and StorageReference.updateMetadata(completion:). These calls previously used the maxDownloadRetryTime and maxUploadRetryTime timeouts.
Cloud Firestore
- Replaced the
DocumentListenOptions
object with a simple boolean. Instead of callingaddSnapshotListener(options: DocumentListenOptions.includeMetadataChanges(true))
, calladdSnapshotListener(includeMetadataChanges:true)
. - Replaced the
QueryListenOptions
object with simple booleans. Instead of callingaddSnapshotListener(options: QueryListenOptions.includeQueryMetadataChanges(true) .includeDocumentMetadataChanges(true))
, calladdSnapshotListener(includeMetadataChanges:true)
. -
QuerySnapshot.documentChanges()
is now a method which optionally takesincludeMetadataChanges:true
. By default, even when listening to a query withincludeMetadataChanges:true
, metadata-only document changes are suppressed indocumentChanges()
. - Replaced the
SetOptions
object with a simple boolean. Instead of callingsetData(["a": "b"], options: SetOptions.merge())
, callsetData(["a": "b"], merge: true)
. - Replaced the
SnapshotOptions
object with direct use of theFIRServerTimestampBehavior
onDocumentSnapshot
. Instead of callingdata(SnapshotOptions.serverTimestampBehavior(.estimate))
, calldata(serverTimestampBehavior: .estimate)
. - Added ability to control whether
DocumentReference.getDocument()
andQuery.getDocuments()
should fetch from server only, cache only, or attempt server and fall back to the cache (which was the only option previously, and is now the default.) - Added new
mergeFields:(NSArray<id>*)
override forset()
which allows merging of a reduced subset of fields.
Cloud Functions for Firebase Client SDK
- Removed FIR prefix on
FIRFunctionsErrorCode
in Swift.
ML Kit for Firebase
- ML Kit for Firebase is now available as a public beta. To learn more, read ML Kit for Firebase.
Known Issues
- The -all_load option linker option does not work with Firebase 5.0.0.
- There is an issue preventing the use of bitcode in some of the new ML Kit for Firebase subspecs.
Version 4.13.0 - April 13, 2018
Authentication
- Resolved a crash which occurred when certain Firebase IDTokens were being parsed.
Analytics
- Added a new public method
resetAnalyticsData
to clear all Analytics data as well as reset App Instance ID. - Improved In-App Purchase report: Analytics can report accurate discounted price for introductory offer purchases.
- Other bug fixes.
Version 4.12.0 - April 10, 2018
Authentication
- Adds
getIDTokenResultWithCompletion:
andgetIDTokenResultForcingRefresh:completion:
APIs which call back with an AuthTokenResult object. The Auth token result object contains the ID token JWT string and other properties associated with the token including the decoded available payload claims. - Adds the
updateCurrentUser:completion:
API which sets the currentUser on the calling Auth instance to the provided user object. - Adds client-side validation to prevent setting
handleCodeInApp
to false when performing email-link authentication. IfhandleCodeInApp
is set to false an invalid argument exception is thrown. - Adds support for passing the deep link (which is embedded in the
sign-in link sent via email) to the
signInWithEmail:link:completion:
andisSignInWithEmailLink:
methods during an email/link sign-in flow.
FCM
- Added new methods that provide completion handlers for topic subscription and unsubscription.
Performance Monitoring
- Resolved a crash caused by a multithreading issue.
Remote Config
- Improved documentation on InstanceIDs for GDPR.
Cloud Storage
- Deprecated
downloadURLs
property onStorageMetadata
. UseStorageReference.downloadURLWithCompletion()
to obtain a current download URL.
Cloud Firestore
- Resolved a regression in the Firebase iOS SDK release 4.11.0 that
could cause
getDocument()
requests made while offline to be delayed by up to 10 seconds rather than returning from cache immediately. - Added a new Timestamp class to represent timestamp fields,
currently supporting up to microsecond precision. It can be passed to API
methods anywhere a system Date is currently accepted. To make
DocumentSnapshots read timestamp fields back as Timestamps instead of Dates,
you can set the newly added property
areTimestampsInSnapshotsEnabled
in FirestoreSettings totrue
. Note that the current behavior (DocumentSnapshots returning system Dates) will be removed in a future release. Using Timestamps avoids rounding errors from the system Date being stored as a floating-point value.
Version 4.11.0 - March 20, 2018
Authentication
- Adds new API to determine the sign-in methods associated with an email address.
- Adds new API to allow authentication using only an email link (Passwordless Authentication with email link).
Instance ID
- Improved documentation on InstanceID usage for GDPR.
- Improved the keypair handling during GCM to FCM migration. If you are migrating from GCM to FCM, we encourage you to update to this version and above.
Cloud Firestore
- If the SDK's attempt to connect to the Cloud Firestore backend neither succeeds nor fails within 10 seconds, the SDK will consider itself "offline", causing getDocument() calls to resolve with cached results, rather than continuing to wait.
- Fixed a race condition after calling
enableNetwork()
that could result in a "Mutation batchIDs must be acknowledged in order" assertion crash. - Fixed undefined symbols in the absl namespace.
Cloud Functions for Firebase Client SDK
- This release contains the new Firebase Functions Client SDK, with support for HTTPS Callable Functions. See Call Functions from Your App.
Version 4.10.1 - March 9, 2018
Cloud Firestore
- Fixed a regression in the 4.10.0 Firebase iOS SDK release that prevented the SDK from communicating with the backend until successfully authenticating via Firebase Authentication or after unauthenticating and re-authenticating. All reads and writes were silently executed only locally rather than being sent as unauthenticated requests.
Version 4.10.0 - March 6, 2018
FirebaseCore
- This release includes updates to several services that address
issues with
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF
warnings that surface in newer versions of Xcode and CocoaPods.
Analytics
- Increased user ID max length to 256 characters.
- Added event names
level_start
andlevel_end
. - Added parameter names
level_name
andsuccess
. - Added Audience support for nested event parameters.
- Added lifetime user engagement user property.
- Resolved deadlock in Screen View Reporter.
Authentication
- Addressed
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF
warnings that surface in newer versions of Xcode and CocoaPods. - Improved
FIRUser
documentation with clear message explaining when Authentication attempts to validate users and what happens when an invalidated user is detected.
Realtime Database
- Resolved issue with loss of precision for 64 bit numbers on older 32 bit iOS devices with persistence enabled.
- Addressed
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF
warnings that surface in newer versions of Xcode and CocoaPods.
FCM
- Improved documentation on the usage of the
autoInitEnabled
property.
Performance Monitoring
- Fixed a crash related to redirection requests with
AFNetworking
.
Cloud Storage
- Addressed
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF
warnings that surface in newer versions of Xcode and CocoaPods.
Cloud Firestore
- When you delete a
FirebaseApp
, the associated Firestore instances are now also deleted. - Fixed race conditions in streams that could be exposed by rapidly toggling the network from enabled to disabled and back or encountering a failure from the server.
- Addressed
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF
warnings that surface in newer versions of Xcode and CocoaPods.
Version 4.9.0 - February 14, 2018
Authentication
- Added an explicit dependency on
CoreGraphics
from Firebase Auth.
Instance ID
- Improved support for language targeting for FCM service. Server updates happen more efficiently when language changes.
- Improved support for FCM token auto generation enable/disable functions.
FCM
- Added a new property
autoInitEnabled
to enable and disable FCM token auto generation. - Resolved an issue where notification delivery would fail after changing language settings.
Remote Config
- Improved support for language targeting. Simplied Chinese (zh_hans) and Traditional Chinese (Taiwan) (zh_TW) language targeting should be more accurate.
Cloud Firestore
- Fixed a regression in Firebase iOS release 4.8.1 that could in certain cases result in an "OnlineState should not affect limbo documents." assertion crash when the client loses its network connection.
- It's now possible to pass a nil completion block to
WriteBatch.commit
.
Version 4.8.2 - January 27, 2018
Analytics
- Fixed an issue with data collection. We have also removed version 4.8.1 to prevent usage of the SDK with the issue.
Version 4.8.1 - January 18, 2018
Analytics
- Improved the In-App Purchase report. Analytics can now detect subscription restoration or repurchase and non-consumables and can report auto-renewable and non-renewing subscriptions.
Authentication
- Resolved a bug where the
FIRAuthResult
object returned following a phone number authentication always contained a nilFIRAdditionalUserInfo
object. Now, theFIRAdditionalUserInfo
object is never nil and itsnewUser
field is populated correctly.
Realtime Database
- Now community-supported on tvOS.
Dynamic Links
- Resolved an error where fingerprint match fails for some locales.
Performance Monitoring
- Fixed several minor bugs.
Remote Config
- Resolved an issue where throttle rate drops during developer mode.
- Replaced
FIR_SWIFT_NAME
withNS_SWIFT_NAME
.
Cloud Storage
- Now community-supported on tvOS.
Cloud Firestore
- Removed the
includeMetadataChanges
property inFIRDocumentListenOptions
to avoid confusion with the factory method of the same name. - Added a commit method that takes no completion handler
to
FIRWriteBatch
. - Queries can now be created from an
NSPredicate
. - Added
SnapshotOptions
API to control howDocumentSnapshots
return unresolved server timestamps. - Added
disableNetwork()
andenableNetwork()
methods toFirestore
class, allowing for explicit network management. - For non-existing documents,
DocumentSnapshot.data()
now returns nil instead of throwing an exception. A non-nullableQueryDocumentSnapshot
is introduced forQueries
to reduce the number of nil-checks in your code. - Snapshot listeners (with the
includeMetadataChanges
option enabled) now receive an event withsnapshot.metadata.isFromCache
set totrue
if the SDK loses its connection to the backend. A new event withsnapshot.metadata.isFromCache
set tofalse
will be raised once the connection is restored and the query is in sync with the backend again. - Multiple offline mutations now properly reflected in retrieved documents. Previously, only the last mutation would be visible.
- Fixed a crash in
closeWithFinaleState:
that could be triggered by signing out when the app didn't have a network connection.
Version 4.8.0 - December 18, 2017
Realtime Database
- Internal cleanup in the firebase-ios-sdk repository. Functionality of the Realtime Database SDK is not affected.
Dynamic Links
- Resolved race condition that could occur while processing server response(s).
Instance ID
- Resolved a crash caused by a reflection call during logging.
- Updated server with the latest parameters and deprecated old ones.
Performance Monitoring
- Added API for tagging traces with custom attributes. For more information, see Monitor Custom Attributes.
- Added API for manually recording network traces. For more information, see the section Add monitoring for specific network requests in the iOS getting started guide.
- Resolved some open issues with Performance Monitoring.
Cloud Firestore
- Firestore no longer has a direct dependency on FirebaseAuth.
- Fixed a crash when using path names with international characters with persistence enabled.
- Addressed race condition during the teardown of idle streams.
Cloud Storage
- Internal cleanup in the firebase-ios-sdk repository. Functionality of the Cloud Storage SDK is not affected.
Version 4.7.0 - November 30, 2017
- Replaced the
FIR_SWIFT_NAME
macro withNS_SWIFT_NAME
.
Authentication
- Added new APIs that return an
AuthDataResult
object after successfully creating a user with an email and password, signing in anonymously, signing in with email/password credentials, and signing in with custom tokens. TheAuthDataResult
object contains the new user and additional information pertaining to the new user.
Realtime Database
- Addressed a race condition that occurred during initialization of empty snapshots.
Dynamic Links
- Added new confidence type property. See
FIRDLMatchType
(values: Unique, Default, Weak). - Updated the self-diagnostic output.
Instance ID
- Improved identity reset process, ensuring all information is reset during Identity deletion.
Cloud Firestore
- Improved performance when loading documents that match a query.
- Updated SDK to cleanly shut down idle write streams.
Performance Monitoring
- Network requests made using
NSURLConnection
are now instrumented. - Resolved some open issues with Performance Monitoring.
- Added
FirebaseSwizzlingUtilities
for optional method swizzling.
Cloud Storage
- Added
md5Hash
toFIRStorageMetadata
.
Version 4.6.0 - November 14, 2017
- Added
-FIRLoggerForceSTDERR
launch argument flag to force STDERR output for all Firebase logging.
Analytics
- Resolved open issues with Google Analytics for Firebase, including a
screen-tracking issue that loaded views of unloaded controllers and an issue
with calling
[UIApplication sharedApplication]
from a background queue.
Authentication
- Improved error handling in both the phone-number linking and reCAPTCHA flows for phone-number sign-in.
- Resolved issue with users remaining anonymous even after being linked to a phone number.
Dynamic Links
- The FDL Builder API now includes a fallback link for users on other platforms.
- Resolved open issues and improved stability in the Dynamic Links SDK.
Instance ID
- Made token refresh weekly.
- Resolved crash that occurred during token operation.
Invites
- Updated API to properly handle links to an app that is already installed.
- Resolved crashes that occurred when a selected Invite recipient had an empty name.
Cloud Firestore
- Firestore now retries requests more often before considering a client offline.
- You can now use
FieldValue.delete()
withSetOptions.merge()
.
Version 4.5.0 - October 30, 2017
- iOS 7 support in the Firebase iOS, C++, and Unity SDKs is now deprecated and will be dropped in a future release. Upgrade your apps to target iOS 8 or above. To see the breakdown of worldwide iOS versions, go to Apple’s App Store support page.
A/B Testing
- A/B Testing offers the ability to run experiments from the Firebase console using Remote Config. Learn more about creating experiments with A/B Testing for Remote Config and FCM.
Authentication
- Resolved open issues with Authentication.
Cloud Firestore
- Improved validation of nested arrays to allow indirect nesting.
Version 4.4.0 - October 17, 2017
- Fixed new warnings that appeared in Xcode 9.
Authentication
- Account creation and last sign-in dates are now provided as user metadata.
- Invalid users are now automatically signed out earlier.
- Resolved an issue with ID token listeners not firing in some cases.
- More descriptive errors for some phone number sign-in error cases.
Realtime Database
- Resolved warnings for callback types with missing argument specifications in XCode 9.
Cloud Firestore
- Changed the names for
FIRSnapshotMetadata
andFIRListenerRegistration
to better reflect Swift naming guidelines for the Swift SDK. - Fixed retain cycle in
FIRDocumentReference getDocumentWithCompletion:
.
FCM
- Improved logging of notification opens, by swizzling additional
UNUserNotificationCenterDelegate
method. - Improved the handling of unimplemented
UNUserNotificationCenterDelegate methods
, when swizzling is enabled.
Instance ID
- Improved support for working in shared Keychain environments.
Version 4.3.0 - October 3, 2017
- The initial public beta release of the Cloud Firestore SDK for iOS is now available. To learn more, see the Cloud Firestore documentation.
Analytics
- Resolved open issues with Analytics.
Authentication
- Resolved a threading issue in phone number auth.
Cloud Firestore
- The initial public beta release of the Cloud Firestore SDK for iOS is now available. To learn more, see the Cloud Firestore documentation or go directly to the Quickstart.
FCM
- Resolved issues with FCM token associations to APNs device tokens.
- The FCM direct channel is now properly established on the first start 24 hours after being opened.
Performance Monitoring
- Added infrastructure to more easily diagnose issues.
Realtime Database
- Added multi-resource support.
Version 4.2.0 - September 20, 2017
- Resolved duplicate logging issue in the Xcode console.
AdMob
- Resolved issue with banner ads loading beyond the viewable area on iOS 11.
Authentication
- Provided reCAPTCHA as an alternative verification method for phone number auth.
Crash Reporting
- Optimized power consumption.
Realtime Database
- Fixed a regression in v4.0.2 that affected the storage location of the offline cache. This caused v4.0.2 to not see data written with previous versions.
- Fixed a crash in
FIRApp deleteApp
for apps that did not have active database instances.
Instance ID
- Resolved a race condition where a token was not being generated on first start when FCM was included and the app didn’t register for remote notifications.
FCM
- Additional error code logging for errors thrown when creating or opening an internal database file.
Performance Monitoring
- Resolved symbol collisions with GoogleMobileVision.
- Resolved crash when also using Crittercism.
- Now enforcing safety limits on the number of events dispatched over a period of time.
Remote Config
- Resolved an issue with config values not updating correctly when targeted by a user property condition.
Cloud Storage
- Clear custom
FIRStorageMetadata
by setting individual properties to 'nil'.
Version 4.1.1 - August 30, 2017
AdMob
- Mediation adapters now get notified via
mediatedNativeAd:didUntrackView:
when a native ad is deallocated.
Authentication
- Improved comments on some methods in the header files.
Realtime Database
- If you try to retrieve a Realtime Database instance for a specific
FirebaseApp
on an app that was deleted, Realtime Database no longer returns a stale instance. - For unindexed queries, the error message now references bandwidth usage.
Instance ID
- Removed a call that blocked the main thread during app startup.
Cloud Messaging
- Removed logic that saved the SDK version to
NSUserDefaults
.
Performance Monitoring
- Resolved open issues with Performance Monitoring.
- Increased character name limits for traces and counters from 32 to 100. Traces and counters that exceed the name limit are not created.
Version 4.1.0 - August 14, 2017
- Incorrectly configured bundle IDs now result in error messages instead of info messages.
Analytics
- Improved startup time.
- Resolved an issue with campaign reporting that occurred when apps were opened through deep links on cold starts.
Authentication
- Apps can now handle deep links natively and set language codes, for example, for password reset emails.
- Users’ phone numbers now persist properly on clients.
- Recovery emails are now reported as the correct action code type.
- Improved app startup time by moving initialization off of the main thread.
- Improved error for missing emails during new user creation.
- Improved logging levels for Firebase Authentication to provide consistency across Firebase iOS products.
Crash Reporting
- Resolved open issues with Firebase Crash Reporting.
Realtime Database
- Realtime Database now purges the local cache if it can’t be loaded.
- Removed implicit number-type conversion for some integers that were represented as doubles after round-tripping through the server.
- Realtime Database no longer crashes when messages are sent to closed WebSocket connections.
Dynamic Links
- Added basic self-diagnostic method to identify issues in Firebase
Dynamic Links configurations:
FIRDynamicLinks performDiagnosticsWithCompletion
. - Improved
FIRDynamicLinkShortenerCompletion
warnings in the iOS Builder API.
Instance ID
- Token and app identifier are now accessible when the device is locked.
- InstanceID no longer crashes if the bundle identifier is nil.
- Fixed a small memory leak that occurred when fetching a new token.
- Improved and simplified both the token storage system and the queuing system for token fetches and deletes.
Cloud Messaging
- Fixed an issue where setting
shouldEstablishDirectChannel
in a background thread was triggering a Main Thread Sanitizer warning in Xcode 9. - Included additional error logging for method swizzling.
Remote Config
- Resolved crashes caused when an app’s main bundle ID is missing and added an error notification to alert developers of the issue.
Cloud Storage
- Fixed crash in
FIRStorageDownloadTask
that occurred whenever callbacks that are no longer active are invoked. - Added
size
to the NSDictionary representation ofFIRStorageMetadata
.
Version 4.0.4 - July 12, 2017
- Optimized nanoPB dependency.
Version 4.0.3 - June 29, 2017
- Resolved warnings in Xcode 9.
AdMob
- For interstitial ad units served on platforms that opt-out of
video ads, the interstitial ads now have an immediate close option, even if
an MRAID creative calls the
useCustomClose()
method. - Added text on the debug menu to indicate whether the creative preview or troubleshooting modes are active.
Analytics
- Fixed issues with automatic screen reporting.
Remote Config
- A warning now appears if the
plist
file you set default values from can’t be found.
Version 4.0.2 - June 08, 2017
- Fixed issues with Analytics and Performance Monitoring.
Version 4.0.1 - June 06, 2017
- Improved diagnostic messages for the Swift SDK.
Performance Monitoring
- Removed dependency on farmhash to prevent symbol collisions.
- If an exception is thrown when you create a Trace, the Trace’s name will now be printed.
Version 4.0.0 - May 17, 2017
-
FIROptions
now has a simpler constructor and mutable properties.
AdMob
- Removed the in-app purchase ad format.
- Removed support for the ARMv7s architecture.
Analytics
- Fixed an issue where
user_engagement
andsession_start
events were logged when apps were launched in the background. This addresses the related issues with inflated user engagement and session metrics.
Authentication
- Added Phone Number Authentication. To learn more, see Authenticate with Firebase on iOS using a Phone Number.
- Added methods that return additional user data from identity providers if available when authenticating users.
- Improved session management by automatically refreshing tokens when possible and signing out users if the session is invalid, for example, after the user changes their password or deletes their account from another device.
- Fixed an issue where reauthentication created new user accounts if the user credential is valid but does not match the currently signed-in user.
- Switched the
ERROR_EMAIL_ALREADY_IN_USE
notification toERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL
when the email account used in thesignInWithCredential()
method call is already in use by another account. - The
FIREmailPasswordAuthProvider()
method is now deprecated in favor of theFIREmailAuthProvider()
method. - The
getTokenWithCompletion()
method is now deprecated in favor of thegetIDTokenWithCompletion()
method.
Crash Reporting
- Added the ability to disable the Crash Reporting SDK by setting
the
crashCollectionEnabled
setting toNO
in your app'sInfo.plist
file.
Realtime Database
- Now using the external CocoaPod LevelDB library as a dependency.
Dynamic Links
- Improved pending link retrieval process, especially when custom URL schemes are not set up correctly.
Cloud Messaging
- Introduced an improved interface for Swift 3 developers.
- Added new properties and methods to simplify FCM token management.
- Added the
APNSToken
property to simplify APNs token management. - Added new delegate method to be notified of FCM token refreshes.
- Added new
shouldEstablishDirectChannel
property to simplify connecting directly to FCM.
Performance Monitoring
- The initial public beta release of the Firebase Performance Monitoring SDK for iOS is now available. To get started with this SDK, see Get Started with Firebase Performance Monitoring for iOS.
Remote Config
- The error message that was generated when getting the InstanceID has been replaced by a debug message.
Version 3.17.0 - April 25, 2017
Analytics
- Traffic sourced from Apple Search Ads is now properly attributed.
App Indexing
-
FIRAppIndexing
has been removed. To index public content in your iOS app for Google Search, follow the steps in the Firebase App Indexing documentation for iOS.
Invites
- Removed
setDescription
method fromFIRInviteBuilder
.
Dynamic Links
- Developers can now create long and short Dynamic Links programmatically with the iOS Builder API.
Version 3.16.0 - April 12, 2017
- Warnings in Xcode 8.3 no longer appearing (see Analytics).
AdMob
- Correct ad size is now forwarded to mediation networks for smart banner mediation.
Analytics
- Compiler warnings about NanoPb in Xcode 8.3 are no longer appearing.
Instance ID
- Improved token-fetching logic.
- Improved warnings, error messages, and console logging, including initialization error message.
Invites
- Improved console logging.
Dynamic Links
- Improved Xcode warnings.
- Added description for
FIRDynamicLink
object.
Cloud Messaging
- Custom
UNNotificationCenterDelegates
are swizzled properly when swizzling is enabled. - Resolved issue in iOS 8.0 and 8.1 with scheduled notifications.
- Improved console logging.
Version 3.15.0 - March 16, 2017
- Removed dependency on C++ libraries for app builds.
AdMob
- New
openInlineBrowser
method ingoogle_mobile_app_ads.js
opens URLs inSFSafariViewController
. - New
GADAudioVideoManagerDelegate
provides notifications on start and pause/stop in audio and video ad playback.
Invites
- Fixed a bundling issue that caused validation errors during submission to the App Store.
Dynamic Links
- Resolved issue causing crashes on app launch after installation for subset of users.
Version 3.14.0 - February 23, 2017
AdMob
- Added
play
,pause
andsetMute
methods toGADVideoController
to control video playback. - Added new delegate methods to
GADVideoControllerDelegate
to start, pause, end, mute and unmute video content. - Added support for rewarded video mediation adapters to opt into early initialization before an ad request is made.
Remote Config
- Remote Config gets config results from the default
FIRApp
configuration when multiple projects are configured. - Existing users no longer receive empty config results.
February 15, 2017
- Added the
mutable_content
field to FCM API. When set totrue
, a notification message can be updated on an iOS 10+ client before it is presented to the user using the Notification Service app extension. Themutable_content
field in the FCM API corresponds to themutable-content
APNs field.
Version 3.13.0 - February 14, 2017
- Added the
setLoggerLevel
method to theFIRConfiguration
class so you can specify the verbosity of Firebase messages logged to the Xcode console.
Analytics
- Added the ability to log events used to supply referral details
of a re-engagement campaign to the
FIREventNames
header and related parameters to theFIRParameterNames
header. - Added the ability to get app instance IDs using the
+appInstanceID
method in theFIRAnalytics
class.
Authentication
- Replaced
InternalError
with more descriptive error codes inFIRAuth
class:InvalidMessagePayload
,InvalidSender
, andInvalidRecipientEmail
.
Realtime Database
- Added logging when an
observeEvent
call is rejected due to security rules.
Cloud Storage
- Fixed a crash that occurred when user-provided callbacks had a
value of
nil
. - Improved upload performance on devices with intermittent connectivity.
Dynamic Links
- Long Dynamic Links can now track Google Analytics campaign ("UTM")
parameters for Google Analytics for Firebase events, including
dynamic_link_first_open
anddynamic_link_app_open
.
Version 3.12.0 - January 31, 2017
AdMob
- Added the
nativeAdDidRecordImpression
andnativeAdDidRecordClick
methods toGADNativeAdDelegate
.
Crash Reporting
- Improvements to the automation of symbol file uploads.
- Adjusted the verbosity of messages logged to the console.
Dynamic Links
- Improved the reliability of Dynamic Links when opened on iOS 9 and iOS 10 in Facebook, Facebook Messenger, Twitter, Instagram, and Gmail.
SDK Version 3.11.1 - January 17, 2017
- Reduced the verbosity of events logged by Firebase when using the Xcode debugger.
Remote Config
- When
activateFetched
is called when an app starts, it no longer removes cached fetch results. - If an app makes multiple fetch requests without calling
activateFetched
between requests, fetch requests will now cache recent updates from the Remote Config service.
SDK Version 3.11.0 - December 13, 2016
- Adds the ability to initialize
FIRNetwork
objects with either a default or custom reachability host. - Adds names to background tasks, so they can be more easily debugged in console logs.
- Properly terminates background logging tasks when the network is slow or unavailable.
AdMob
- Added a video controller to
DFPBannerView
objects. - The
GADNativeExpressAdView
,GADNativeContentAd
,GADNativeAppInstallAd
andGADNativeCustomTemplateAd
video-controller properties are nownonnull
.
Authentication
- Adds four new methods that you can use to handle action codes
that were delivered to users by email, such as verifying an email address
or resetting a password:
applyActionCode
,checkActionCode
,confirmPasswordReset
, andverifyPasswordResetCode
. - With this update, the Firebase SDK no longer applies the keychain workaround introduced in v3.0.5 for the iOS 10.2 simulator. This workaround is not needed because the underlying issue in the simulator has been fixed.
- Fixes nullability compilation warnings that were raised when using Swift.
- Improves reporting for errors caused by a missing password.
SDK Version 3.10.0 - November 21, 2016
AdMob
- In preparation for App Transport Security changes in 2017, apps should use this
version of the SDK when building apps for iOS 10, and include both the
NSAllowsArbitraryLoadsInWebContent
andNSAllowsArbitraryLoads
exceptions. Added the
GADMediaView
property to theGADNativeContentAd
andGADNativeCustomTemplateAd
classes.Analytics
Increased the maximum length of event names and parameter names to 40 characters, and the maximum length of string parameter values to 100 characters.
Crash Reporting
- Improved the automatic upload of symbol files.
Dynamic Links
- Removed a dependency on the Core Motion framework.
Invites
- Removed a dependency on the Core Motion framework.
Cloud Storage
- Snapshot data is now always returned from the requested snapshot, instead of the most recent snapshot.
- Improvements to the ability to pause downloads.
Realtime Database
- Unified the logging format.
SDK Version 3.9.0 - November 3, 2016
AdMob
- Changes to the
kGADAdSizeFluid
constant that determines the width of a banner ad no longer change the frame size of a banner ad.
SDK Version 3.8.0 - October 24, 2016
- The Firebase SDK for iOS API Reference now includes Swift 3.0 syntax, along with Objective-C syntax.
Analytics
- Added screen tracking support. Each app's current
UIViewController
is automatically tracked. The current screen is tracked with thefirebase_screen_class
parameter with every logged event, which provides valuable context. In addition to automatic screen tracking, you can manually track screens using the FIRAnalytics#setScreenName:screenClass method. This adds thefirebase_screen
parameter to every event logged while those screens are visible to app users.
Realtime Database
- Reintroduced the
persistenceCacheSizeBytes
setting (previously available in the 2.x SDK) to control the disk size of the Firebase offline cache. - Use of the
updateChildValues()
method now only cancels transactions that are directly included in the updated paths (not transactions in adjacent paths). For example, an update at/move
for a child nodewalk
will cancel transactions at/
,/move
, and/move/walk
and in any child nodes under/move/walk
. But, it will no longer cancel transactions at sibling nodes, such as/move/run
.
Cloud Storage
- Fixed an issue that was preventing the upload of files with
filenames that contain the plus (
+
) character. - Fixed an issue that was causing timeouts for file uploads and downloads to behave incorrectly.
Crash Reporting
- Added support for Swift 2 and Swift 3.
- Analytics events are now sent to the Crash Reporting service as part of error reports.
Dynamic Links
- Fixed a minor issue with IPv6.
Invites
- Fixed a minor issue with IPv6.
AdMob
- Added a dependency on the
JavaScriptCore
framework.
SDK Version 3.7.1 - October 6, 2016
Analytics
- Fixed an issue that causes a crash for some apps that call
FirebaseAnalytics
. Stack traces show that the crash occurs in-[FIRAAlarm cancel]
.
SDK Version 3.7.0 - October 3, 2016
Analytics
- Analytics no longer includes the AdSupport framework. To include this framework in your app, you must add it. Note that user properties such as Age, Gender and Interests require this framework.
App Indexing
- App Indexing has been deprecated in light of recent changes to the app review guidelines for iOS. To index your app for Google search, implement Universal Links.
AdMob
- Added the
GADNativeAdViewAdOptions
method toGoogleMobileAds
to specify the location of AdChoices in native ads. - Fixed a bug that causes a crash for some apps that call
GoogleMobileAds
. Stack traces show that the crash occurs inGADStringFromCGFloat
.
SDK Version 3.6.0 - September 14, 2016
Analytics
Existing users who update to Analytics-enabled versions of an app are no longer included in
first_open
metrics. This correction could cause a drop infirst_open
metrics.Conversion events are now uploaded within seconds of being logged.
Removed the feature that attributed Ads app conversions using the
SFSafariViewController
class.
Cloud Messaging
- Added a new API method,
-applicationReceivedRemoteMessage:
to allow apps to receive data messages from FCM on devices running iOS 10 and greater.
Authentication
- Improved the behavior of Firebase Authentication when testing apps using the iOS 10 simulator.
- Fixed an issue with error reporting when a user provides an invalid email address while signing in with an email address and password.
Realtime Database
- Fixed an issue that caused transactions to fail when executed before the SDK connects to the Firebase Realtime Database service.
- Fixed a race condition where performing a transaction or adding an event observer immediately after connecting to the Firebase Realtime Database service could cause completion blocks for other operations to not be executed.
- Fixed an issue affecting apps that use offline disk persistence where large integer values could lose precision after an app restart.
Remote Config
- Fixed issues that caused a crash when an app attempts multiple concurrent fetch requests.
Dynamic Links
- Analytics events are now automatically logged when users open your app, open your app from a Dynamic Link, and open your app for the first time from a Dynamic Link.
- Dynamic Links no longer use the
SFSafariViewController
class. - Dynamic Links no longer has a dependency on the Core Location framework.
AdMob
- AdMob no longer has a dependency on the
Core Bluetooth,
EventKit, and
EventKitUI frameworks. Apps
no longer need to provide
NSBluetoothPeripheralUsageDescription
andNSCalendarsUsageDescription
keys in theirInfo.plist
file. - Removed Mobile Rich-media Ad Interface Definitions (MRAID) 2.0 support for calendars and storing pictures.
SDK Version 3.5.2 - August 26, 2016
AdMob
- Initial improvements toward fixing a bug that causes a crash for
some apps that call
GoogleMobileAds
. Stack traces show that the crash occurs inGADStringFromCGFloat
.
SDK Version 3.5.1 - August 23, 2016
Analytics
Added support for Analytics on iOS 10.
Added support for attributing AdWords app conversions from search and display web clicks on iOS 10.
Added a feature to validate the authenticity of in-app purchase events before they are reported by Google Analytics.
Cloud Storage
- Fixed issues with iOS 7 compatibility.
- Fixed an issue that prevented
observeStatus:FIRStorageUploadTask
from correctly reporting progress when uploading a file.
App Indexing
- Added support for App Indexing on iOS 10. App Indexing still requires iOS 9 or higher.
Dynamic Links
- Added support for Dynamic Links on iOS 10.
AdMob
- When associating native ads with a view, the view’s
userInteractionEnabled
property is changed toNO
to match the value expected by the SDK. - The Google Mobile Ads SDK now has a dependency on MobileCoreServices.
- Added the
-[GADMobileAds isSDKVersionAtLeastMajor:minor:patch:]
API method to allow ad networks to determine if a device is running at least a specified minimum version (major.minor.patch
) of the Google Mobile Ads SDK.
SDK Version 3.4.0 - August 1, 2016
Authentication
- Fixed a bug that causes a race condition that could crash an app
running on iOS 9 with an exception from
NSURLSession
.
Cloud Messaging
-
plist
files used byFIRMessaging
are now stored in anApplicationSupport
directory.
Remote Config
- Fixed an issue where some attempts to fetch parameter values can cause a crash due to a JSON serialization failure.
- Added the
allKeysWithPrefix:
API method to allow developers to find parameter keys based on a key prefix.
Crash Reporting
- Fixed an error that occurred when building an app that uses a JSON file.
- Minidumps are now compressed separately to avoid automatically unzipping during processing.
- Fixed an issue that prevented batch-upload from working with files that contain non-ASCII characters.
App Indexing
- Bitcode support is now available for the App Indexing SDK for iOS.
Dynamic Links
- Fixed a bug that caused crashes when the
resolveLink()
API returns a non-JSON object.
AdMob
- Enhanced the quality of ad rendering with the addition of framework dependencies for GLKit, OpenGLES, CoreMotion, and CoreVideo.
- Added the
+[GADMobileAds configureWithApplicationID:]
method. AdMob publishers should call this method with their application ID to initialize AdMob. - Users of DoubleClick for Publishers (DFP) who use SDK mediation will
no longer see the following warning:
mediated ad type is unknown or invalid
SDK Version 3.3.0 - June 29, 2016
Analytics
- You can now attribute AdWords app conversions from search and
display web clicks on Safari using
SFSafariViewController
, an iOS API that supports data sharing between apps and the Safari browser on the same device running iOS 9.0 or higher. This lets you measure app installs and in-app actions from app promotion ads on mobile websites. This functionality is included in the Firebase SDK, and is enabled without any changes to your app's source code.
Authentication
- The bundle ID custom scheme is no longer required to support Google Sign-In.
- Minor improvements to error handling and error messages.
- User anonymity is now handled the same way for iOS as it is for other platforms.
Realtime Database
- Fixed a rare crash in
[FSRWebSocket stream:handleEvent:]
. - Improved error messages for some common mistakes configuring
FIRApp
. - Firebase now logs a warning instead of throwing an exception when your database has exceeded its concurrency limit.
Cloud Messaging
- Cloud Messaging no longer registers for remote notifications on startup.
Cloud Storage
- A new
QUOTA_EXCEEDED
error now appears when plan limits are exceeded. - Added a
state
property toFIRStorageTaskSnapshot
. - Fixed handling of
timeCreated
andupdated
properties inFIRStorageMetadata
.
The Notifications composer
- You can now add more than three custom data fields when sending a notification. A notification should not exceed 4KB total, including message text, custom data, and any advanced options.
- Reduced the refresh interval for app versions and language lists.
- The conversion event counts in the Notifications composer Google Analytics funnel view now show the number of users who have triggered the conversion event at least once. Previously, it showed the raw number of triggered conversion events.
Dynamic Links
- Google Analytics now logs all app open events driven from user clicks on Dynamic Links.
- Including Dynamic Links in your app now adds less than 70K
to your app's
.ipa
file, a reduction of nearly 2 MB from the previous release.